1.8.3と1.8.4の両対応にさせてみたの記。日常を淡々と綴ります。1.8.3と1.8.4の両対応にさせてみたの記。1.8.4が出て、以前の記事に載せていたホスト登録スクリプトがそっちでは動作しなかったので、1.8.4のAPIを調べて対応させてみました。その時の記録を書いておきます。手っ取り早くスクリプトを見たい方は、僕のZabbixToolsのGithubの該当ページへ。ドキュメントを調べてみました。すると、"apiinfo.version"というAPIがあることを発見。それでAPIバージョンを確かめてみました。このバージョンの違いでロジックを切り替える目論見です。APIの戻り値の確認には、以前のブログに書いた"get_zabbix_data.pl"*1が使えます。APIを試してみるためにつくったものでしたが、"--method"オプションに"*.get"を入れると、だいたい値が返ってくるので自分自身かなり重宝してます。それで1.8.3のサーバの"apiinfo.version"を叩いてみた結果がイカ*2です。Versionは1.3ということがわかりました。続いて1.8.4のサーバを調べてみます。"1.3"}!?完全に一致wこの通り、1.8.3から1.8.4では、"apiinfo.version"のバージョンは上がってませんでした。Zabbix本家のAPIドキュメントは、マイナーバージョンアップごとに上書きされてしまうようです。state."と書いてあるので、今回の変更はバージョンアップではなくて、ドラフトの変更という位置づけということなんでしょう。仕方ないので、今回の改訂ではバージョン番号での分岐はあきらめ、まずは1.8.4として扱ってダメだったら1.8.3と見做すという風に対応しました。*まあ、ちょっと文句を書いてしまいましたが、今回の仕様変更でAPIアクセスとレスポンスの形式が統一化されているので、全体としては使いやすくなっています。例として、ホスト追加スクリプトで引っかかった"template.get"(Zabbixの監視テンプレート情報を返すAPI)を見てみます。下に貼り付けたのが、1.8.3のときのtemplate.getの結果。(冒頭に紹介したスクリプトを使っています)1.8.3の形式は、"result"の下に"10001"などのテンプレートIDをキーとしたJSONの塊があり、さらに下にも"templateid"が入っているという気持ち悪い構造でした。ほかの"*.get"メソッドともデータの格納形式が違ったので、"template.get"だけ情報取得のロジックを変えないといけませんでした。},(以下略)次のものは1.8.4のときのtemplate.getの結果。"result"の下には、テンプレートのリストが格納されている形式に変更されています。これはほかの".get"系メソッドの形式と同じものです。},(以下略)ほかにもhistory.getのパラメータ指定もほかの"*.get"メソッドと形式が統一されたようです。今回の調査で使っているスクリプトは、1.8.3ではhistory.getに対応していなかったのですが、1.8.4ではhistory.getもできるようになりました。(そのままでは実用にはなりませんが)APIは、今回の改訂でかなり統一感が出たので、このまま安定するような気がします。*3少なくともこれからAPIを使ったツールをつくる人には扱いやすくなっているはず!みんなも、いろいろつくってみてね!w*1:スクリプトをgithubに移しました。*2:いい加減しつこいので、これを最後にイカ娘の2期が始まるまで我慢します。*3:そう信じたいです。1.8.3と1.8.4の両対応にさせてみたの記。HAクラスタを作ってみた。適当にクラスタをつくる。サーバ擬人化エヴァンジェリスト。昼間は実家の猫たちのために働くITインフラエンジニア。最近は工場長としてインフラエンジニア双六やかるたを作ったり。【免責】このブログに書かれていることは、私の個人的な見解であり、所属企業・組織の意見を代表するものではありません。読者になるサークルの新作ゲーム新作『汝はエンジニアのような名状しがたい何かなりや?』デスマーチ末期を舞台にした人狼ゲーム。運用を開始して半月経ったのでメモ月別アーカイブ広告キムワイプはてなブログをはじめよう!sechiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。