zabbixのマップをapiから作ってみる


Zabbixで監視を自動化したりしているのですが、マップも監視対象が追加された時点で自動的に作成できれば便利だなと思ったのでZabbix API経由からマップを作成する手順について簡単にですがまとめてみます。

環境

サーバ情報

項目 内容・バージョン
OS CentOS 7.4
Zabbix 3.0.13-2

開発情報

項目 内容・バージョン
Python 3.4.4

Zabbix Map APIドキュメント

https://www.zabbix.com/documentation/3.0/manual/api/reference/map

テンプレート

今回は、以下のテンプレートを元に処理を書いていきます。

以下からは # ここから処理を書いていく 以降を書いていきます。

マップ自動生成をやってみた

マップ作成編

まずは、シンプルなマップを作ってみます。

パラメーター 説明
name マップの名前
width マップ幅のサイズ
height マップ高さのサイズ

実行します。
以下はレスポンスボディです。

マップが作成されているか確認します。

マップ作成と同時にアイコンを追加

マップ作成と作成したマップにアイコンを追加する処理を一度にやってみようと思います。

パラメーター 説明
elementid エレメント(アイコン)に紐づけるID(ホストやグループ)
selementid マップ内で判別するエレメントのID、これを元にエレメント同士を紐付けたりします
elementtype マップエレメントのタイプ、エレメントはhostなのかmapなのかなど
iconid_off アイコンの種類
selements エレメントを配列で渡す

注意点としては、アイコンに紐づけるホストなどがZabbixに登録されている必要があります。
elementid は省略できません。
ここでは example01 というホストを手動で登録してURLから hostid を取得しています。
~~決して自動で取得する処理を書くのがめんどくさかった訳では…~~
ただし elementtype4(イメージ) の場合は elementid が実在していないものでも登録出来ちゃいます。

実行するとMapにアイコンが出来ています。

アイコンの種類について

参考までに iconid_off の情報については以下に保存してあります。
imageidiconid_off に指定します。
https://gist.github.com/sky-joker/727f319e0f0601f2b08004de05ce0f17

ちなみに取得の仕方は以下のようにします。

アイコンの座標を指定する

座標を指定しない場合は、全てのアイコンは画面左上に出来てしまうので座標を指定してみます。

パラメーター 説明
x アイコンのx座標を指定します
y アイコンのy座標を指定します

実行するとアイコンが指定した座標に配置されています。

アイコンを紐づけてみる

マップにアイコンを2つ登録してお互いを紐づけてみます。

パラメーター 説明
links 紐づけたいエレメントの selementid を渡します

実行するとアイコンが2つ出来て紐づけられています。

マップをアップデートする

既に作成したマップをアップデート(アイコンを追加したり)してみます。

パラメーター 説明
sysmapid アップデート対象のsysmapid

作成時と違うのは、対象の sysmapid を指定します。
sysmapidはマップのURLとか作成時のレスポンスボディから確認できます。

独り言

今回は、シンプルな処理しかしなかったから多次元連想配列(multi_dimension_dict)は使わなかった。。。

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)