Zabbix APIからのメンテナンス操作について
いつもお世話になっております。
現行、バッチが動作し、このバッチの影響により幾つかのアラートが発生します。
このバッチは不定期実行されるため、事前にメンテナンスの設定が出来ない状況です。
そこで以下についてご教授頂きたくお願い致します。
【環境】
ZabbixVer:Zabbix 3.0.28(サーバ、エージェント共に)
OS :CentOS7.6
【実施内容】
ZabbixAPIを使用し、
シェルが実行されたホストをメンテナンスにする。
【状況】
ご参考として提示された以下のサイト様を確認しておりますが、
当方シェルスクリプトに疎く、
APIも日本語翻訳されたものが無いため苦戦しております。
■ご参考にさせて頂いているサイト様
https://kakakakakku.hatenablog.com/entry/2016/06/14/232806
当該のサイト様でまさに私がやりたいことを実施されているのですが、
そのまま内容を拝借させて頂き、実行してみたのですが動作致しませんでした。
現在、悩んでいる箇所が以下となりますが、認識違いがあればご教授頂けないでしょうか。
・"Zabbixを操作する関数をまとめたユーティリティスクリプト"の項目で
BASIC_AUTH='xxx'という変数を定義しており、curl実行の際に--userオプションでこの変数を呼び出しています。
確認した限り、ベーシック認証が設定されている環境の場合に必要と思われるので、
この変数及び、--userオプションは不要になるのでしょうか。
・curlのあとパイプにて"/usr/local/bin/jq"が指定されておりますが、当環境で実行するとディレクトリが存在しません。(jq自体はインストール済み)
jqでfindを掛けると、"/usr/bin/jq"というディレクトリがありましたのでこちらを指定しておりますが、
認識に誤りはないでしょうか。
・その他実行する上で、注意点等あればご教授頂きたく。
※他サイト様を上げての質問がフォーラムのルール上問題無いか分かりませんでした。
問題が有るようであれば当質問は削除致します。
【2019/10/18 17:10追記】
現時点でのシェルの中身を添付致します。
シェルを実行すると以下のようにエラーが返送されます。
./main.sh
{
"jsonrpc": "2.0",
"error": {
"code": -32602,
"message": "Invalid params.",
"data": "Incorrect parameters for maintenance."
},
"id": 1
}
{
"jsonrpc": "2.0",
"result": {
"maintenanceids": []
},
"id": 1
}
- main.txt (207 バイト)
- zabbix_utils.txt (4.12 KB)
kz999 - 投稿数: 24
質問事項の認識は問題ないです。
紹介されたサイトを見ると2.0のマニュアルを参照しているようです。
2.0と3.0のマニュアルを比較したところ、3.0からactive_sinceとactive_tillがrequired(必須)になっています。
https://www.zabbix.com/documentation/2.0/manual/appendix/api/maintenance...
https://www.zabbix.com/documentation/3.0/manual/api/reference/maintenanc...
つまりZabbix 3.0.28で使う場合に必要なパラメータが足りていない為、エラーとなっています。
試しに私の環境でactive_sinceとactive_tillを追加したところメンテナンス期間が作成されました。
[追記]
修正が必要なのは「"method": "maintenance.create"」しているところのパラメータ部分です。
kaeru - 投稿数: 263
kz999様
ご回答ありがとうございました。
2.0→3.0でGUI操作のメンテナンスには特に変更が入ってないので、
APIも変更は無いだろうと決めつけてしまっておりました。。。
ご指摘の通り、active_sinceとactive_tillを指定したところ動作するようになりました。
また、特に当方ではメンテナンスを削除するつもりもなく(エビデンスのためメンテナンスを残しておく)、
1時間後にメンテナンスが解除されればよかったため、
重複防止用に、現在時刻(hhmmdd_HHMMSS)をメンテナンス名に追加するようにし、
メンテナンス削除処理自体をカットしました。
添付に今回修正したシェルスクリプト内容を記載しておきます。
重ねてご回答ありがとうございました。
※指定したホストを1時間だけメンテナンスモードにするシェルスクリプトとなります。