リモートコマンド(カスタムスクリプト)の実行が「失敗」になる条件
こんにちは。
アクションでカスタムスクリプトを試していて疑問に思ったことがあります。
バージョンはサーバーもエージェントも 2.2.9 です。
※今回試した環境ではサーバーとエージェントは同じマシンで動いています。
アクションの実行内容
実行内容のタイプ:リモートコマンド
ターゲット :現在のホスト
タイプ :カスタムスクリプト
次で実行 :Zabbixエージェント(LogRemoteCommands=1)
コマンド :/path/to/script
このようなアクションで、自分で作成したシェルスクリプトを動かす設定を入れてみました。
スクリプト内で exit 1 としても(終了ステータス≠0)、sleep 60 としても、それどころかそもそも /path/to/script が存在しなくても、トリガーが障害になったときすぐにイベント画面のアクション欄が「成功」となってしまうようですが、これは正しい動作なのですか?
LogRemoteCommands=0 だと「失敗」になるのは確認しましたが、それ以外で「失敗」となるのはどのようなときですか?
スクリプトの作り方次第では意図的に「失敗」にさせることも可能なのでしょうか?
余談ですが、次で実行 を Zabbixサーバー にした場合も、LogRemoteCommands が関係なくなるだけで他は同じでした。
ちなみに、メディアタイプでタイプをスクリプトとしたものに対してメッセージを送信した場合は、タイムアウトした場合に「失敗」となりました。
#結構長かったように思えましたが、ソース(alerter.c)を見た感じだと
#一回当たりのタイムアウトが40秒、リトライ時の待ちが30秒、リトライが2回、
#となっている感じなので、170秒くらいしてから「失敗」になるんですかね。
#試しに測ってみると3分強でした。
それから一応確認ですが、コマンドっぽいものの指定する内容は、これで合っていますでしょうか?
スクリプトの設定で、タイプをスクリプトとしたものの、コマンド
アクションの実行内容で、実行内容のタイプをリモートコマンドとしたものの、コマンド
→実際に実行する(引数付きの)UNIXコマンド(フルパスでなくてもいい?)
メディアタイプの設定で、タイプをスクリプトとしたものの、スクリプト名
→alertscripts 内のファイル名
アイテムの設定で、タイプを外部チェックとしたものの、キー
→externalscripts 内のファイル名
よろしくお願いします。
※後から追記
上に出てくる LogRemoteCommands はコピペミスで、実際は EnableRemoteCommands です。
TNK - 投稿数: 4671
確認させてください。
設定されているのは、LogRemoteCommandsですか?
EnableRemoteCommandsではありませんか?
コマンドを実行するユーザのパスが通っているコマンドであれば、
フルパスではなくても実行できますが、パスが通っていない場合
も考慮して、より確実に実行できるようフルパスにしておいたほう
がより良いと思います。
これは、どちらも正しいと思います。
heya - 投稿数: 319
すみません、コピペ間違いです。
EnableRemoteCommands です。
LogRemoteCommands=1 は、スクリプトの標準出力とか標準エラー出力とかがログに出てくるかなと思って試しに入れてみただけです。出てきませんでしたが・・・。