💻

sakura-maintenance-checkerにプルリクをもらったので改修した
January 22, 2022February 20, 2024
#Develop#Git

経緯

下記の記事で紹介したようにさくらのクラウドのメンテナンス情報を zabbix で監視するスクリプトを書いた。

さくらのクラウドのメンテナンス情報の有無をzabbixで監視する

さくらのクラウドは不定期にわりと高頻度にメンテナンスが実施される 指定された日までに再起動して、別ホストに移さなければ、不意の再起動を食らう。 メールで連絡は来るが、見落とすことが多かったので、zabbix でメンテナンスの有無を監視した。 sakuracloud-maintenance-checker https…

sakakinox.net

さくらのクラウドのメンテナンス情報の有無をzabbixで監視する

これを社内で使ってくれたが、うまく動かないということで改修してプルリクエストをくれた。 とてもありがたい。

機能追加

今までは共有セグメントの IP アドレスしか取得できなかったが この改修でその他の IP や 2 番目、3 番目の NIC の IP アドレスにも対応した。
複数の NIC に対応したことでローカル IP も検索可能となったが、 ローカル IP をサポートする場合別のスイッチに所属している NIC の IP を考慮する必要があった。
現状では IP が複数サーバーで確認された場合エラーとなるように設定した。
また、成功したか、失敗したかイマイチわかりにくいということで、成功時にもメッセージを返すように 仕様変更した
zabbix の設定変更が必要となるが、確かにユーザフレンドリーな仕様ではないので仕様変更した。

その他修正

利用していただいていることがわかったのでこれを機に例外処理を強化した。
json を取得する際の例外処理を強化した。
http のリクエスト取得の失敗時や、ロードしたものが JSON ではないときにもエラーが返るように修正した。 またサーバー停止時や IP アドレスがないとき、複数サーバーが見つかったときにそれぞれメッセージを返すように修正した。 最後に、エラーメッセージの言語を英語に統一した。 詳しくはこちら

修正に伴う zabbix の設定変更

破壊的な変更として、正常時も”Nothing information!”が返るので zabbix の設定変更が必要になった。 それに伴い zabbix のトリガー条件式を修正した。 下記の設定は私の環境で変更したもの。 トリガー設定は非常に重要なので変更後は念入りにテストしましょう。

アイテムは変更なし

image-20220122205719026
トリガーの設定を変更 image-20220122215605484

変更後のトリガー条件式

{Template for managed sakura cloud servers:check.py[{HOST.IP}].str(Nothing information!)}=0

スクリプト更新後 Nothing information!が帰ってくることを確認した。
API 情報を削ってエラーを出し、トリガーが動作することを確認した。

今後も機能追加したい

複数のアカウントを監視する場合に APIkey を zabbix 側で切替えられるようにしたい。
また、現状ではリージョン決め打ちでしか動作しないので、切替えられるようにするか全てのリージョンを対象に検索をかけたい。
監視台数が増えると API 取得回数が増えるので迷惑がかからない方法を考えたい。

よかったら使ってください。
おしまい

参考

https://www.zabbix.com/documentation/4.2/en/manual/appendix/triggers/functions



sakakinox

Written by sakakinox
Server enginier

Copyright © sakakinox.net 2021-2024.