ディスカバリで登録されたアイテムのうち、特定のアイテムについてのみトリガーを設定する方法
【現在の環境】
OS:RockyLinux 8.4
Zabbix server:5.4.7
Zabbix agent2: 5.4.7
PostgreSQL:13.3
「Zabbix5でCloudWatch監視設定(EC2インスタンス)」(https://tracl.cloud/archives/engineerblog/zabbix-cloudwatch-surveillance-ec2-instance)という記事を参考にして、
テンプレート:https://github.com/tech-sketch/zabbix_aws_template/blob/master/templates/3.0/cloudwatch_template.xml
スクリプト:https://github.com/tech-sketch/zabbix_aws_template/blob/master/scripts/cloudwatch_zabbix.py
を使って(記事に従って一部変更)、CloudWatch の監視の設定を行いました。
使用しているテンプレート名:Template AWS EC2
アイテムは、ディスカバリルールのキーで指定したコマンドの応答である
"{#METRIC.NAME}", "{#METRIC.UNIT}", "{#METRIC.NAMESPACE}"
の3つのパラメータで登録されるのですが、
その中で
"{#METRIC.NAME}": "StatusCheckFailed_System"
のアイテムについてだけトリガーを設定したいのですが、うまく登録ができません、
そもそも、このような場合はテンプレートのトリガーに登録すればいいのでしょうか?
それとも、ディスカバリのトリガーのプロトタイプに登録すべきなのでしょうか?
試しにテンプレートではなく、ディスカバリで検知された後のホストに対しては、
last(/ホスト名/cloudwatch.metric[StatusCheckFailed_System],#1)>0
というトリガーが登録できたのですが、
これを参考にして
①last(/Template AWS EC2/cloudwatch.metric[StatusCheckFailed_System],#1)>0
という条件式のトリガーを設定しようとすると
トリガー条件式"Template AWS EC2"に正しくないアイテムキー"cloudwatch.metric[StatusCheckFailed_System]"が使用されています。
というエラーになります。
アイテムのプロトタイプの名前を基にした
②last(/Template AWS EC2/EC2 CloudWatch Metric stats (Average) [StatusCheckFailed_System],#1)>0
という条件式のトリガーを設定しようとすると
パラメータ "/1/expression"が正しくありません:"last(/Template AWS EC2/EC2 CloudWatch Metric stats (Average) [StatusCheckFailed_System],#1)>0"から始まる条件式が正しくありません。
というエラーになります。
なお、①②ともに、テンプレートのトリガー、ディスカバリルールのトリガーのプロトタイプのどちらに設定しても、同様なエラーとなっています。
どのようにすれば、ディスカバリで登録された特定のアイテムに対するトリガーが設定できるようになりますでしょうか?
hige.no.papa - 投稿数: 53
前述の通り、ディスカバリで検知された後のホストに対しては、
last(/ホスト名/cloudwatch.metric[StatusCheckFailed_System],#1)>0
というトリガーが登録できるため、
とりあえず、Zabbix API を使って、
①ホストを登録
②ディスカバリによりアイテムが登録されるのを待つ
③登録されたアイテムを使って、ホスト名指定でのトリガーを登録する
という処理を行うスクリプトを作って、トリガーを登録できるようにはなりました。
必要最小限の登録はできましたが、あまりきれいではないため、
ディスカバリでのトリガー登録方法ができるのであれば、
そちらに切り替えたいので、引き続きご回答をお待ちしております。