一部のMySQLサーバーデータベースで特定の値を監視するタスクが与えられました。過去10分間に値が変更されていない場合は、通知を送信する必要があります。
UserParameter_mysql.conf
に次の行を追加しました。
UserParameter=mysql.query, echo "select id from resolved_clicks order by id desc limit 1" | mysql -N -u zabbix -pPASSWORD aggregator
また、Zabbixサーバーからチェックを実行すると、値が正しく返されます。
[root@zabbix ~]# zabbix_get -s IP -k mysql.query
7957178672
[root@zabbix ~]#
次のステップは、すでに作成したアイテムを作成することでした。現在、トリガーを構成しようとしています。過去10分間に値が更新されていない場合、トリガーによって通知が生成されます。この状態を反映するようにトリガーを構成するにはどうすればよいですか?ありがとう!
編集#1:これは、先ほど作成したトリガーの最新データです。 私の質問は:
1. What's the meaning of change?
2. How can I know from looking on the Change row how many seconds
have passed since the last 2 checks?
3. How can I test that the trigger is operating successfully without
having to reproduce the problem?
あなたの質問は100%明確ではないので、私は両方の可能性を取り上げました:
Zabbixエージェントからデータが到着していないかどうかを確認する場合は、 nodata
関数を使用します。
戻り値:
1-秒単位の期間中にデータが受信されなかった場合。期間は30秒以上である必要があります。
0-それ以外の場合
たとえば、10分間データが受信されなかった場合に起動するトリガー:
{mysql.query.nodata(600)}=1
値が変更されていないかどうかを確認する場合は、delta
を使用します。
期間内の最大値と最小値の差を返します(「max()」から「min()」を引いたもの)。期間は、秒単位で、または最初のパラメーターで収集された値(ハッシュ記号の前に#を付けたもの)として設定されます。
たとえば、値が10分間変更されなかった場合に起動するトリガー:
{mysql.query.delta(600)}=0
最後に、おそらくアイテムの名前を変更したいと思うでしょう。 mysql.query
は非常に一般的であり、一般的なMySQLテンプレートですでに使用されています。何かのようなもの aggregator.highest_click_id
がより適切かもしれません。