こんにちは。サイオステクノロジー OSS サポート担当 山本 です。
これじゃあ門じゃなくてトンネルだよ…というお洒落な感想がいただけそうな気がする自称・Zabbix 入門編、これで6回目となります。
前回は「どんなデータが異常となるのか」の設定である「トリガー」とその関連の設定を見てきました。「障害」という形で、一つの画面でどんな異常が発生しているかを確認できるようになったのでした。
今回はいよいよ大詰め、「Zabbix に自動的に何させる」設定を見ていきましょう!
■アクション:「障害が起こった時に何をするか」の設定
今回は、前回設定した「異常」に際して「自動的に何かをさせる」設定である「アクション」を確認していきましょう。
Web インターフェース、もう開いていますね?
「アクション」は今までとは違う画面から設定していきます。
画面上部の「設定」、その下の行に出る「アクション」と選択していきます。
こちらがアクション一覧画面になります。今回はホスト毎の設定ではありません。
ホスト毎の設定でなくとも、「アクションの作成」ボタンはいつも通りに右上にあります。これを押して今回も新しくアクションを作成していきましょう。
まず、開いた画面では以下の項目を設定します。今回は「実行条件」で指定するトリガーには前回に作成したトリガーを設定してください。
名前 : (任意)
実行条件 : 「トリガー」「等しい」「<「ホスト」の名前>:<「トリガー」の名前>」(※「新規条件」の項目を設定して、新規条件の項目内にある「追加」をクリックすると設定できます。)
設定できたら、画面上部の「実行内容」タブをクリックして、設定項目を切り替えます。更に項目「実行内容」の「新規」をクリックして「実行内容の詳細」を表示させ実行する内容を入力できるようにします。今回は使用しているユーザーにメールを送る設定をしてみましょう。
ユーザーに送信 : <ユーザー名>(※項目内の「追加」から追加できます。)
実行条件: 「障害確認のステータス」「等しい」「コメントなし」(※項目内の「新規」で入力項目が表示され、「追加」で追加できます。)
以上の設定ができたら、「実行内容の詳細」内の「追加」をクリックした後、画面下部の「追加」ボタンを押下しましょう。
アクション一覧に戻り、作成したアクションが追加されているはずです。
勿論、「アクション」でも一覧の「名前」をクリックすればそのアクションは編集できますし、チェックボックスを使って一括処理も可能です。
■通知先の設定
「障害が起こった際にメールなどを送る」設定は行うことができましたが、今回の一連の手順ではメールなどの送信先をまだ設定していませんでした。こちらも確認していきましょう。
まず、ユーザ毎のメール送信先です。画面上部の「管理」、その下の行に出る「ユーザー」と選択していきます。第2回で見た「ユーザー」画面ですね。
今回は通知先の設定を行ないます。アクションの設定の際に「ユーザーに送信」で設定したユーザーの「エイリアス」 をクリックし、そのユーザーの編集画面を開いてください。
更に、上部の「メディア」タブをクリックして画面を切り替え、「メディア」項目内の「追加」をクリックします。
開いたモーダルウィンドウでは以下の設定を行ないましょう。今回はデフォルトで設定されている Email を設定してみます。
タイプ : Email
送信先 : (任意の送信先)
以上を設定できたら、モーダルウィンドウの「追加」ボタンを押下。元の画面の「メディア」項目内に設定が追加されていることを確認したら、「更新」ボタンを押下して設定を保存しましょう。
■使用するメールサーバーなどの設定
続いて、使用するメールサーバーなども設定する必要があります。画面上部の「管理」、その下の行に出る「メディアタイプ」と選択していきます。
このメディアタイプ一覧画面でもやはり右上から新規作成することができますが、今回は先ほどユーザーのメディアのタイプで指定した「Email」を一覧から選択し、編集しましょう。
編集画面では、以下の項目を設定してください。
SMTPサーバー : (使用する SMTP サーバーのアドレス)
他の項目も必要に応じて設定したら、画面下部の「更新」ボタンを押下して設定を保存しましょう。
今回のようにアクションでメールを送信する場合、別途 SMTP サーバー (postfix 等) が必要となりますので、もし導入・設定が済んでいない場合は導入と初期設定を行なってください。
■通知の確認
さて、「障害が起きた際にメールを送信する」設定と「メールでの通知先」の設定を行なうことができました。指定したトリガーで障害イベントが発生した際にメールが送られるかを確認してみましょう。
(※ 以下の手順は検証専用の環境以外では行わないでください)
今回指定したトリガーは前回設定したトリガーなので、同様の手順で障害を発生させてみましょう。以下のコマンドを数回実行するとロードアベレージを上げることができたはずです。
# yes > /dev/null &
画面上部の「監視データ」、その下の行に出る「最新データ」と選択し開く最新データ画面でロードアベレージの上昇を確認したら、「監視データ」「障害」の障害画面を開いて確認しましょう。
アクションの設定が上手くできていれば、発生した障害の行の「アクション」に新しいマークが出ているはずです。
このマークが表示されていれば、アクションは実行されているので、今回設定した通知先にメールが届いているかを確認してみましょう。なお、このマークが赤くなる場合は何らかの理由でアクションの実行に失敗しています。 Zabbix 側の設定がどこか間違っている可能性が高いので、設定ミスがないかを確認してください。
確認出来た後は、以下のコマンドを実行してロードアベレージを上昇させているコマンドを止めるのを忘れずに。
# killall yes
(※ 検証専用の手順はここまでです)
■この画面の補足
最後に、今回の操作に関連する補足です。
送信されるメッセージの内容・方法
今回設定したアクションにより送信されるメッセージの内容は、アクションの設定画面で設定することができます。
「実行内容」タブ内の「実行内容の詳細」内で「デフォルトのメッセージ」にチェックを付けている場合は「デフォルトの件名」と「デフォルトのメッセージ」が、チェックを付けていない場合には「実行内容の詳細」内の「件名」と「メッセージ」が使用されます。
なお、これらの項目のデフォルト値で設定されているのはマクロ機能を利用したものになっており、トリガー名や状態などが動的に組み込まれる設定になっています。
また、今回のように一般的なメール以外にも、SMS や Jabber、あるいは Web インターフェースで作成したスクリプトなどによってメッセージを送信することができます。
「リモートコマンド」の実行
「アクション」ではメールの送信の他に、登録されているホストのうち Zabbix エージェントを導入している特定のホストに特定のコマンドを実行させる「リモートコマンド」という機能があります。
こちらの機能を使いたい場合、アクション設定画面の「実行内容の詳細」を表示させ、「実行内容のタイプ」を「リモートコマンド」に変更します。
任意のコマンドを実行できるという便利な反面危険な機能であるためか、実行される側のホストでも Zabbix エージェントの設定ファイル /etc/zabbix/zabbix_agentd.conf で EnableRemoteCommands=1 を設定し、Zabbix エージェントを再起動させておかなければ、リモートコマンドは実行されずエラーとなります。
Zabbix 4.0 での変更点
・(アクション設定画面) : 「障害イベント時」「復旧イベント時」の実行内容の設定を分離するなど、画面構成が整理される。
・(アクション設定画面) : 「復旧時の実行内容」を詳細に設定可能に。「リモートコマンド」を選択できるようになるなど。
・(アクション設定画面) : 「更新時の実行内容」として、「障害」画面で障害更新を行なった際に実行されるアクションの設定が追加。
・(全ての設定・編集画面) : 入力必須の項目に必須マークがついた
・(全ての設定・編集画面など) : 編集画面の「選択」ボタンなどで表示される別画面が、「新規ポップアップウィンドウ」から「モーダルウィンドウ」に変更
■さいごに
今回は Zabbix Web インターフェースのアクション設定関連を見ていきました。
この「アクション」までを設定することにより、Zabbix の管理画面を見ることすらなくメールなどで障害の発生を検知できたり、あるいは自動で障害を復旧させるためのコマンドを実行してくれるように設定できるようになったわけです。ちょっと設定は大変でしたが、上手く使えれば監視の労力を大幅に減らすことができるようになるはずです。
さて、今回までで「Zabbix での監視の基本的な設定方法」を見てきました。これで「データを集めて、異常なデータがあれば通知などを行なう」という一通りの設定方法を確認することができたことになります。
次回はこの一連の記事のラストとして、「ちょっと便利な設定方法」の一つを紹介していこうと思います。
関連記事
・使ってみよう Zabbix① : インストール編
・使ってみよう Zabbix② : ユーザー設定編
・使ってみよう Zabbix③ : ホスト設定編
・使ってみよう Zabbix④ : アイテム設定編
・使ってみよう Zabbix⑤ : トリガー設定編
・使ってみよう Zabbix⑥ : アクション設定編 (※今回)
・使ってみよう Zabbix⑦ : テンプレート編