お世話になっています。
障害通知用アクションで、 一つ前のステータスを取得する場合、以下の設定でとってこれると思っています。
{{HOSTNAME}:{TRIGGER.KEY}.prev(0)}
監視対象が、Linuxの場合は、取得できているのですが、 Windowsでは、うまくいかないです。 監視対象のOSは、関係ないと思っているのですが、 Windowsで実績があるかだけ確認させてください。 よろしくお願いいたします。
priv()関数が監視対象によって結果が異なるということはありませんので、想定どおりの動作をしていないということであればアイテムの種類や設定に関係する可能性があります。
正常に取得できているアイテムと、取得できないアイテムの設定を書いていただければ何か分かるかもしれません。
設定は即座に出せないです。申し訳ないです。
以下のようにメッセージの定義をすると、
{{HOSTNAME}:{TRIGGER.KEY}.prev(0)} ログの中で
Function [MyWIN:proc.num[mysqld.exe].prev(0)] not found. Query returned empty result
のエラーが出力されます。 もうちょっと調べます。 すいません。。。
すいません。情報として伝えていなかったのですが、 proc.num[mysqld.exe] のプロセス名の部分は、アイテムの定義部ではユーザマクロを使用しています。(以下です。) proc.num[$PROCESS] かつ $PROCESS=mysqld.exe
ログから、先ほどのエラー直前のSQLで、データベースから、proc.num[mysqld.exe]を検索しているようでしたので、アイテムの定義で mysqld.exeを直接入力したところ、値が取得できるようになりました。
「取得アイテムにマクロを使用している場合は、{{HOSTNAME}:{TRIGGER.KEY}.prev(0)}は使用できない。」
という認識であっているのでしょうか?
マクロは{$MACRO}の形式で書く必要がありますので、アイテムとマクロの設定を
proc.num[{$PROCESS}] {$PROCESS}=mysqld.exe
と設定するとうまく動かないでしょうか?
また、やってしまいました。すいません。 proc.num[{$PROCESS}] {$PROCESS}=mysqld.exe の定義で実行していました。
ただ、やはり実績はあるのですね。
ちなみに、 アクションのコンディションは、以下のようにしています。
(A) ホストグループ = "Windows servers" (B) トリガー = "Template-Windows-Send:プロセスダウンを検知しました。" (C) トリガーの値 = "障害"
{{HOSTNAME}:{TRIGGER.KEY}} のみだと {MyWIN:proc.num[mysqld.exe]}
{{HOSTNAME}:{TRIGGER.KEY}.prev(0)} だと *UNKNOWN*
が表示されています。
返信遅くなりました。いろいろと情報ありがとうございます。
マクロを使わずに直接mysqld.exeを設定すると正しく動作するということでれば、マクロの展開のバグかもしれません。
手元の環境で試してみようと思います。
返信遅くなりました。この件、原因が分かりました。
アクションで(TRIGGER.KEY}のようなアイテムのキーを含むマクロを使用し、 かつそのアイテムのキーのオプションにもマクロを使っていた場合、 アクション実行時にアイテムのオプション内のマクロまで展開されてしまうバグがありました。
言葉だけでは分かりづらいので例をあげて説明すると、
ホスト名: localhost ユーザ定義マクロ: {$PROCESS} - mysqld.exe アイテムのキー: proc.num[{$PROCESS}] アクションのメッセージ: {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
という設定にしていた場合、アクション実行時のメッセージでは 以下のようにマクロが展開されてしまいます。
{localhost:proc.num[mysqld.exe].last(0)}
結果、localhostにはproc.num[mysqld.exe]というキーを持つアイテムは存在しないため (存在しているのはproc.num[{$PROCESS}]というキー)、ヒストリを正しく参照できない状態になってしまっていました。
Zabbix SIAに報告したところ修正予定と回答があったので、今後のリリースで修正されると思います。
ありがとうございます。 すっきりしました。
修正されることも分かり、安心しました。
アカウント名 tthogho1
Zabbix関連
kodai - 投稿数: 1341
priv()関数が監視対象によって結果が異なるということはありませんので、想定どおりの動作をしていないということであればアイテムの種類や設定に関係する可能性があります。
正常に取得できているアイテムと、取得できないアイテムの設定を書いていただければ何か分かるかもしれません。
tthogho1 - 投稿数: 112
設定は即座に出せないです。申し訳ないです。
以下のようにメッセージの定義をすると、
{{HOSTNAME}:{TRIGGER.KEY}.prev(0)}
ログの中で
Function [MyWIN:proc.num[mysqld.exe].prev(0)] not found. Query
returned empty result
のエラーが出力されます。
もうちょっと調べます。
すいません。。。
tthogho1 - 投稿数: 112
すいません。情報として伝えていなかったのですが、
proc.num[mysqld.exe]
のプロセス名の部分は、アイテムの定義部ではユーザマクロを使用しています。(以下です。)
proc.num[$PROCESS]
かつ
$PROCESS=mysqld.exe
ログから、先ほどのエラー直前のSQLで、データベースから、proc.num[mysqld.exe]を検索しているようでしたので、アイテムの定義で
mysqld.exeを直接入力したところ、値が取得できるようになりました。
「取得アイテムにマクロを使用している場合は、{{HOSTNAME}:{TRIGGER.KEY}.prev(0)}は使用できない。」
という認識であっているのでしょうか?
kodai - 投稿数: 1341
マクロは{$MACRO}の形式で書く必要がありますので、アイテムとマクロの設定を
proc.num[{$PROCESS}]
{$PROCESS}=mysqld.exe
と設定するとうまく動かないでしょうか?
tthogho1 - 投稿数: 112
また、やってしまいました。すいません。
proc.num[{$PROCESS}]
{$PROCESS}=mysqld.exe
の定義で実行していました。
ただ、やはり実績はあるのですね。
ちなみに、
アクションのコンディションは、以下のようにしています。
(A) ホストグループ = "Windows servers"
(B) トリガー = "Template-Windows-Send:プロセスダウンを検知しました。"
(C) トリガーの値 = "障害"
{{HOSTNAME}:{TRIGGER.KEY}}
のみだと
{MyWIN:proc.num[mysqld.exe]}
{{HOSTNAME}:{TRIGGER.KEY}.prev(0)}
だと
*UNKNOWN*
が表示されています。
kodai - 投稿数: 1341
返信遅くなりました。いろいろと情報ありがとうございます。
マクロを使わずに直接mysqld.exeを設定すると正しく動作するということでれば、マクロの展開のバグかもしれません。
手元の環境で試してみようと思います。
kodai - 投稿数: 1341
返信遅くなりました。この件、原因が分かりました。
アクションで(TRIGGER.KEY}のようなアイテムのキーを含むマクロを使用し、
かつそのアイテムのキーのオプションにもマクロを使っていた場合、
アクション実行時にアイテムのオプション内のマクロまで展開されてしまうバグがありました。
言葉だけでは分かりづらいので例をあげて説明すると、
ホスト名: localhost
ユーザ定義マクロ: {$PROCESS} - mysqld.exe
アイテムのキー: proc.num[{$PROCESS}]
アクションのメッセージ: {{HOSTNAME}:{TRIGGER.KEY}.last(0)}
という設定にしていた場合、アクション実行時のメッセージでは
以下のようにマクロが展開されてしまいます。
{localhost:proc.num[mysqld.exe].last(0)}
結果、localhostにはproc.num[mysqld.exe]というキーを持つアイテムは存在しないため
(存在しているのはproc.num[{$PROCESS}]というキー)、ヒストリを正しく参照できない状態になってしまっていました。
Zabbix SIAに報告したところ修正予定と回答があったので、今後のリリースで修正されると思います。
tthogho1 - 投稿数: 112
ありがとうございます。
すっきりしました。
修正されることも分かり、安心しました。