自宅のZabbixサーバーのVMをUbuntu24.04に移行する一環で、Zabbixも5系から7系にジャンプしました。
それ自体はわりとすんなり片付きましたが、Pythonで値を取得するスクリプトが動かなくなってしまいました。どうやらログイン時のパラメータの仕様が変わったらしいのですが、残念なことにライブラリの更新が止まっていて、各々がパッチを作って雑対処している様子がプルリクとかフォークのコミットから見えました。
昔は公式がライブラリの紹介なのしてた気がするなあと思ってググってみたところ、公式が開発を始めていたので、こちらに移行することにしました。
ずいぶん差分が少ないな……?
ざっくりとした差分はこんな感じ。トークンを使うように変えてみたのでログイン周りが差分多めに見えますが、インポートするライブラリ名が変わった以外、クラスとかitem.getは変わっていません。なにこれ、フォークしたとかなのかな……?って思ったけどそうではないっぽいです。ともあれ簡単に移行できてありがたい限り。
- from zabbix.api import ZabbixAPI + from zabbix_utils import ZabbixAPI - zbx = { - 'url': '', - 'user': '', - 'pass': '' - } +ZABBIX_AUTH = { + "url": "192.168.29.102", + "token": "6d02cce218ffc1789f9b43aa779513f92a654394997bf57163155ac9faa7db19" +} - z = ZabbixAPI(url=zbx['url'], user=zbx['user'], password=zbx['pass']) + z = ZabbixAPI(**ZABBIX_AUTH) print(z.item.get(itemids=[31323])[0])
ZabbixSender系
ZabbixSender系のスクリプトはまだ問題なく動いていましたが、こちらもzabbix_utilsに移行しました。こちらも名前が多少変わった以外の変更がないのがわかります。これなら雑置換でも対応できるレベルです。
$ diff -Naur backup/raspi1/Thu/bots/send_temp_zabbix.py bots/send_temp_zabbix.py --- backup/raspi1/Thu/bots/send_temp_zabbix.py 2021-08-28 15:35:22.236318457 +0900 +++ bots/send_temp_zabbix.py 2024-08-16 23:04:29.076383258 +0900 @@ -2,7 +2,7 @@ import sys import urllib.request import json -from pyzabbix import ZabbixMetric, ZabbixSender +from zabbix_utils import ItemValue, Sender api = "http://127.0.0.1/api/temp" @@ -16,8 +16,8 @@ data = json.loads(body) params = [ - ZabbixMetric("raspi1.local.marokun.net", "room_temp", data['temperature']), - ZabbixMetric("raspi1.local.marokun.net", "room_humidity", data['humidity']), - ZabbixMetric("raspi1.local.marokun.net", "room_pressure", data['pressure']) + ItemValue("raspi1.local.marokun.net", "room_temp", data['temperature']), + ItemValue("raspi1.local.marokun.net", "room_humidity", data['humidity']), + ItemValue("raspi1.local.marokun.net", "room_pressure", data['pressure']) ] -result = ZabbixSender(use_config=True).send(params) +result = Sender(use_config=True).send(params)