Zabbix APIを使った外部ツールとの連携

2012年5月11日(金)
池田 大輔

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】

<リンク先最終アクセス:2012.04>

TIS株式会社

Twitter : @ike_dai
TIS株式会社OSS推進室所属。社内向けシステムの保守運用業務を経験後、クラウド時代の効率的な統合運用管理をテーマに活動中。特に、OSSを駆使した運用のエコシステム実現を目指し、Zabbix,fluentd,Serverspec,Ansibleなどの導入や検証に取り組む。技術検証成果などを技術ブログ『Tech-Sketch』にて発信中。著書:『Zabbix統合監視徹底活用 - 複雑化・大規模化するインフラの一元管理』

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています