我們將 Zabbix 5.0 升級到最新的 6.0 版本時,系統並不會自動幫您把 5.0 的模板也進行升級上去。
官方建議通過以下方式修改現有的模板:
到下面連結去下載最新的模板
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates
把 Branch 從 Master 切換到我們更新的 6.0 版本
把它下載回來並解壓縮
然後在 Configuration > Templates 中,您可以手動將它們導入 Zabbix。
如果已存在同名模板,則導入時應勾選刪除缺失選項(Delete missing)以實現乾淨導入。
若舊項目不存在新的模板中則會被刪除
請注意,這將會丟失這些舊項目的歷史記錄
開心地做了幾回之後,大家就會發現毋丟喔。
這樣我豈不是要手動更新範本 292 次
所以要教大家使用 Zabbix API 來進行批次匯入的動作
國外有大神已經把這一段寫好了,不過是 Zabbix 3.4 版本有點舊了,有些物件參數在 Zabbix 6.0 已經不存在,所以我們要稍微修改一下就可以使用。
https://github.com/jieshiun/zabbix/blob/main/Template_Import/zabbix_template_import.py
Zabbix 6.0 組態匯入的物件參數可以參考下面連結
https://www.zabbix.com/documentation/6.0/en/manual/api/reference/configuration/import
主要是說明上面圖形化介面中出現的規則與勾選的項目的預設值
我們先隨便抓一個範本匯入,測試沒有問題。
sudo apt install python3
chmod +x zabbix_template_import.py
python3 ./zabbix_template_import.py --url http://localhost/zabbix/api_jsonrpc.php --user Admin --password {your_password} template_app_activemq_jmx.yaml
SUCCESS: configuration import
單筆沒有問題接下來就是要批次處理了,也幫大家寫好了。
https://github.com/jieshiun/zabbix/blob/main/Template_Import/run.py
輸入下列指令就可以去杯喝茶
chmod +x run.py
python3 ./run.py
若匯入的過程出現錯誤,就需要特別的排除了
SUCCESS: configuration import
SUCCESS: configuration import
SUCCESS: configuration import
/home/administrator/templates/server/hp_ilo_snmp/template_server_hp_ilo_snmp.yaml
ERROR: configuration import failed
{'error': {'code': -32602,
'data': 'Two items ("System name" and "System name") cannot '
'populate one host inventory field "Name", this would lead '
'to a conflict.',
'message': 'Invalid params.'},
'id': 1,
'jsonrpc': '2.0'}
SUCCESS: configuration import
SUCCESS: configuration import
最後發現是有台伺服器同時套用了 Windows by Zabbix Agent 與 HP iLO SNMP 這兩個範本,匯入前的 HP iLO SNMP 當初並沒有 System name 這個項目,因此相安無事。
但新匯入的 HP iLO SNMP 範本則有 System name 項目所以造成衝突,因為一台主機的項目名稱必須是唯一值。此時就看是要把該項目另取名稱或者刪除掉其中一個即可。
今天就介紹到這邊,希望有幫助到你們。
參考文件