problem.getでクローズ許可のみ取得する方法
お世話になっております。
ログ系の監視でトリガの生成モードを「複数」にしている障害を、手動クローズするのが手間な為、
APIを使って1時間前の障害を自動クローズしようと考えています。
APIのメソッドとパラメータは以下でeventidを取得し、そのidに対しevent.acknowledgeメソッドで
クローズする流れは一応できました。
method = 'problem.get'
params = {
'output': [ 'eventid' ],
'tags': [{'tag': 'TYPE', 'value': 'Log', 'operator': 1}],
'time_till': <1時間前のunixtime>,
'limit': 1000
}
ただ、この絞り込み条件ですと、トリガの生成モードが「単一」で手動クローズを
許可していないログ監視の障害まで取得し、「クローズ許可がない」エラーで
event.acknowledgeが終了してしまいます。
タグを別々に振り直せば絞り込みは可能なのですが
できればタグはこのままで「手動クローズを許可」している障害だけをフィルタできないでしょうか。
(難しいようであれば、おとなしくタグの振替で対応します)
どうぞよろしくお願い致します。
■環境
zabbix 4.0.5
yk_taiko - 投稿数: 184
手元にすぐに確認できる環境がないのですが、
「objectids」がトリガーのID になってたりしないでしょうか。
処理が1つ増えますが、トリガーIDをもとに該当のトリガー情報を見に行って、
「manual_close」が "1" かどうかの判定を増やすのはどうでしょう。
kz999 - 投稿数: 24
ありがとうございます。
確かに「objectids」の値は、「trigger.get」での「triggerid」の値と同じようでした。
この「manual_close」の値をチェックして「event.acknowledge」に渡すようにします。
最初の「problem.get」でフィルタできないのでlimit:1000のままだと
close許可してない障害が1000件超えた時に不具合が出そうですが、
またそれは別途考えます。