Zabbix APIを使った外部ツールとの連携
Zabbix1.8とZabbix2.0のAPIの違い
Zabbix1.8と2.0のAPIでは、リクエストパラメータに指定できる項目やレスポンスに含まれる項目が異なるものがあります。そのため、Zabbix1.8のAPIを活用されていた方で、Zabbixを1.8から2.0にバージョンアップされた場合、利用しているAPIによっては利用部分の改修作業が発生するかもしれません。
API変更の概要
Zabbix APIはZabbix1.8系、2.0どちらの場合でもDBのテーブルに対応したAPIのクラスが作成されています(trendテーブルなどAPIクラスがないものもあり)。そのため、個別にAPIを叩くことで各テーブルのデータ操作が可能です。
しかし、テーブル間でデータの関連があり、データを紐付けて取得したい場合もあるかと思います。そこで、まとめてデータを取得するためのパラメータが用意されています。そのパラメータの形式が、Zabbix1.8と2.0で異なります。
- 1.8系:select_hosts,select_itemsなどselect_xxxx形式
- 2.0系:selctHosts,selctItemsなどselectXxxx形式
また、Zabbix2.0の新機能のため、Zabbix1.8と2.0ではZabbixのDBのテーブル設計が変更になっています。
例えば、ホスト情報を持つDBのテーブルについては、以下の図のようにInterface情報が別テーブルになっています。
図3:テーブル設計の違い(クリックで拡大) |
このような場合でも関連付けてデータを扱えるよう、selectInterfacesというパラメータが新規追加されています。このようにパラメータをうまく活用することで、効率良くAPIによるデータ取得が可能になります。
その他には、削除や名称変更されている項目もいくつかあります。Zabbix1.8系のAPIを利用したシステムでこれらの項目を利用している場合には注意してください。削除や名前変更になった項目については公式マニュアルページを参照してください※5。
host.getの変更
変更の一例として、「host.get」メソッドの利用方法の変更について紹介します。
Zabbix2.0では1ホストでマルチインタフェースに対応できるよう変更が加えられています。そのため、「host.get」メソッドでのホスト情報取得方法も変更になっています。以下の図にZabbix1.8系と2.0でhost.getの実行方法・実行結果の違いを示します。
図4:host.getの変更点(クリックで拡大) |
両者の結果を比較すると、Zabbix2.0の結果では、1.8系と同じパラメータを指定してもホストのIPアドレスや、ポート番号の情報が取得できていないのがわかります。これは先述した通り、hostsテーブルとinterfaceテーブルに情報が分かれて管理されるようになったためです。
そこで、paramsに以下の1項目を追加します。
"selectInterfaces":"extend"
すると、図の一番右列のように、取得結果に設定されているインタフェース情報が含まれるようになります。
Zabbix API活用例
実際にZabbix APIが活用されている事例を紹介します。
- iPhone用クライアントアプリ『Mozaby』※6
- Android用クライアントアプリ『Mobbix』※7
- Ruby CLIツール 『Zabcon』※8
このように利用シーンに合わせて様々な外部ツールとの連携が実現されています。また、Ruby、Python、JavaScript等各種言語用のライブラリも公開されているので、開発者にとって非常に役に立つと思います。
まとめ
連載の最終回の今回は、少し発展したZabbixの使い方ということでZabbix APIの使い方を紹介しました。
クラウド時代の中、システム運用のやり方も様々に変化してきているかと思います。今までは「障害が発生すれば電話やメールで通知が来て、データセンターに駆けつけて障害対応する」といった流れが当たり前でしたが、クラウドを扱う場合には、「ネットワークにつながれば、どこからでも状況が確認できて、どこからでも対応できる」といった環境になってきています。
このような変化の中で、Zabbix API機能のように「必要な情報を最適な形で扱う」ことができる機能は非常に重要だと思います。
今後もますます使いやすく、新しいスタイルに対応した形でZabbixも進化していくのではないかと思います。最適な運用を実現するため、Zabbixを活用してみてはいかがでしょうか。
【参照URL】
- ※5 Zabbix公式マニュアル(Zabbix API changes from 1.8 to 2.0)
- ※6 iPhone用クライアントアプリ『Mozaby』
- ※7 Android用クライアントアプリ『Mobbix』
- ※8 Ruby CLIツール『Zabcon』
<リンク先最終アクセス:2012.04>
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- CloudサービスとRPAの連携
- Keycloakを用いたハードニングの実装方法
- RailsでAction Controllerについて学んでみた
- Oracle Cloud Hangout Cafe Season4 #4「マイクロサービスの認証・認可とJWT」(2021年7月7日開催)
- 注目のOpen Policy Agent、その概要とKubernetesでの活用事例
- FAPI 1.0に準拠したクライアントアプリケーションと リソースサーバの作り方
- pg_monzの導入手順と PostgreSQL監視の実態
- expressで開発したWebアプリをeXcaleで動かす
- チャットアプリとRPAとの連携
- 3scaleの基本的な使い方