経緯
下記の記事で紹介したようにさくらのクラウドのメンテナンス情報を zabbix で監視するスクリプトを書いた。
これを社内で使ってくれたが、うまく動かないということで改修してプルリクエストをくれた。 とてもありがたい。
機能追加
今までは共有セグメントの IP アドレスしか取得できなかったが
この改修でその他の IP や 2 番目、3 番目の NIC の IP アドレスにも対応した。
複数の NIC に 対応したことでローカル IP も検索可能となったが、
ローカル IP をサポートする場合別のスイッチに所属している NIC の IP を考慮する必要があった。
現状では IP が複数サーバーで確認された場合エラーとなるように設定した。
また、成功したか、失敗したかイマイチわかりにくいということで、成功時にもメッセージを返すように
仕様変更した。
zabbix の設定変更が必要となるが、確かにユーザフレンドリーな仕様ではないので仕様変更した。
その他修正
利用していただいていることがわかったのでこれを機に例外処理を強化した。
json を取得する際の例外処理を強化した。
http のリクエスト取得の失敗時や、ロードしたものが JSON ではないときにもエラーが返るように修正した。
またサーバー停止時や IP アドレスがないとき、複数サーバーが見つかったときにそれぞれメッセージを返すように修正した。
最後に、エラーメッセージの言語を英語に統一した。
詳しくはこちら
修正に伴う zabbix の設定変更
破壊的な変更として、正常時も”Nothing information!”が返るので zabbix の設定変更が必要になった。 それに伴い zabbix のトリガー条件式を修正した。 下記の設定は私の環境で変更したもの。 トリガー設定は非常に重要なので変更後は念入りにテストしましょう。
アイテムは変更なし
変更後のトリガー条件式
{Template for managed sakura cloud servers:check.py[{HOST.IP}].str(Nothing information!)}=0
スクリプト更新後
Nothing information!が帰ってくることを確認した。
API 情報を削ってエラーを出し、トリガーが動作することを確認した。
今後も機能追加したい
複数のアカウントを監視する場合に APIkey を zabbix 側で切替えられるようにしたい。
また、現状ではリージョン決め打ちでしか動作しないので、切替えられるようにするか全てのリージョンを対象に検索をかけたい。
監視台数が増えると API 取得回数が増えるので迷惑がかからない方法を考えたい。
よかったら使ってください。
おしまい