トリガー表現式の()の優先度について
Zabbix:5.0.2
OS:CentOS8.1
=================
ログ監視トリガーの式で、And条件で一部内容を静観しようとしていますが、
括弧内()で表現される部分は優先的に処理されないのでしょうか。
下記のような表記法をとっても、A×2のパターンや、B×1のパターンでアラートを検知しなくなっているので、
念のため知見がある方がおられましたら教えてください。
{Template:eventlog[System,,"Error",,,,skip].iregexp()}<>0 and
({Template:eventlog[System,,"Error",,,,skip].logsource(A)}=0 and {Template:eventlog[System,,"Error",,,,skip].logeventid(1)}=0) and
({Template:eventlog[System,,"Error",,,,skip].logsource(B)}=0 and {Template:eventlog[System,,"Error",,,,skip].logeventid(2)}=0)
yk_taiko - 投稿数: 184
全てand なら順番やカッコは関係ないかと思います。
Yasumi - 投稿数: 380
やはりそうでしたか。ありがとうございます。
yk_taiko - 投稿数: 184
記載されている ログソース+イベントID の 2パターンが除外条件ということでしょうか。
そうであれば、カッコの外側は and じゃなくて or で繋げたら想定の動作をしそうな気がしますが、どうでしょう。
Yasumi - 投稿数: 380
orだと、A1が出力された場合はB2で検知し、B2が出力された場合はA1のほうで検知するのではないでしょうか?
yk_taiko - 投稿数: 184
確かにそうですね、失礼しました。
であれば、以下のように反転させる感じで動くかと思います
【1】
(({Template:eventlog[System,,"Error",,,,skip].logsource(A)}=1 and {Template:eventlog[System,,"Error",,,,skip].logeventid(1)}=1) or
({Template:eventlog[System,,"Error",,,,skip].logsource(B)}=1 and {Template:eventlog[System,,"Error",,,,skip].logeventid(2)}=1))=0
【2】
not (({Template:eventlog[System,,"Error",,,,skip].logsource(A)}=1 and {Template:eventlog[System,,"Error",,,,skip].logeventid(1)}=1) or
({Template:eventlog[System,,"Error",,,,skip].logsource(B)}=1 and {Template:eventlog[System,,"Error",,,,skip].logeventid(2)}=1))
Yasumi - 投稿数: 380
>yk_taikoさん
素晴らしいです。。。
こんなトリガーの表現方法ができることを初めて知りました。ありがとうございます。