web-dev-qa-db-ja.com

Zabbix-Webシナリオがトリガーされます。最初に失敗した試行を無視する方法は?

問題:

サイトにアクセスできない場合は、電子メールの送信をトリガーしてください即時

システム:

Linux Debian Stretch、Zabbix 4.2.1。

Webシナリオの現在の構成:

Scenario: 
Name: website.com 
Update interval: 30s 
Attempts: 3 
Agent: Zabbix

Steps: 
(just one) 
Name: website.com 
URL: http://website.com/page.php
Follow redirects: checked 
Timeout: 30s

(残りの変更なし)

トリガーの現在の構成:

Name: The website.com can't be reached!
Expression: {VIRTUALMACHINE:web.test.fail[website.com].last(3m)}>0

(残りの変更なし)

説明

サイトに3分間到達できない場合(または最後の3つのチェックでタイムアウトごとに30秒のタイムアウトがある場合)、トリガーは電子メールを送信する必要があります。私はさまざまな方法で試みましたが(*以下)、電子メール通知を試行した各トリガー式は、zabbixが初めて問題を検出したときに(n回目ではなく)すぐに送信されました。

*
{VIRTUALMACHINE:web.test.fail[website.com].sum(#3)}>0
{VIRTUALMACHINE:web.test.fail[website.com].last(3m)}<>0
{VIRTUALMACHINE:web.test.rspcode[website.com,website.com].last(0)}#200
{VIRTUALMACHINE:web.test.fail[website.com].last(3)}#0
{VIRTUALMACHINE:web.test.fail[website.com].sum(#3)}>0
{VIRTUALMACHINE:web.test.fail[website.com].last(3)}>0
{VIRTUALMACHINE:web.test.fail[website.com].min(1)}>0

答えがあれば説明してください。遠慮なく尋ねてください。

2
Maar

解決策/回避策

各トリガーにタグを追加し、タグ条件を追加することで電子メールアクションを編集しました。

例えば:

最初に電子メールアクションを送信します。サーバーにpingできません。

ACTION tab
Conditions:
Tag value server equals icmpping

(残りの変更なし)

2番目に電子メールアクションを送信します:Webサイトにアクセスできません。

ACTION tab
Conditions:
Tag value server equals web

OPERATIONS tab
Default operation step duration: 3m
Operation details: Steps = 2-2; Step duration = 0

(残りの変更なし)

Trigger expression:
{VIRTUALMACHINE:web.test.fail[website.com].last()}>0

これで、ZabbixはWebサイトがダウンしていることを検出してから3分後にメッセージを送信します。この3分間で問題が解決した場合、Zabbixは電子メールを送信しません。

0
Maar

アイテム_web.tyest.fail_ シナリオの失敗したステップを返します 。その場合、次のような目的の結果を得ることができます。

_{VIRTUALMACHINE:web.test.fail[website.com].min(#3)}>0
_

これにより、最後の3つの値がチェックされ、すべてが0を超えている場合(失敗)に警告が表示されます。このシナリオを考えてみましょう:

  • すべて良好で、0の値が入ります。
  • サイトがダウンし、ゼロ以外の値が到着します。最後の3つの値の最小値は0のままで、アラートはありません。
  • サイトはまだダウンしており、別のゼロ以外の値が到着します。最後の3つの値の最小値はまだ0であり(最後の3つの値には0が1つ残っています)、アラートはありません。
  • サイトはまだダウンしており、別のゼロ以外の値が到着します。最後の3つの値の最小値がゼロ以外になり、トリガーが起動します。

試した表現に関するいくつかの追加のメモ:

  • 関数last()に使用した値_3_および_3m_は無視されました。
  • 関数min min()に使用した値_1_は秒を意味するため、そのトリガー式はほとんど機能しません。
1
Richlv