Zabbix4.0LTS 問題が発生したらメールで通知

最近は比較的安定している我が家の各システムだが、運用を始めた当初は設定ミスなどで接続できなくなることが多々。利用者の察しが良いので「今、何か起きてるな」と、我慢してたりするから管理者である自分が触るまで問題発生に気づけない。



また、ウチのハードディスクレコーダー(ビデオデッキって言わないんだな…)は大量の予約を処理しているのだが、それが原因なのか時々ウンともスンとも言わなくなる。この時には録画ができないのでちょっと熱い問題になるが、これもやっぱり触ってみるまで気づけない。

ということで、問題が発生したらメールで通知してくれるようにしたい。

やることは、メールサーバーと送信先を設定し、トリガーを使って障害を検出、アクションで障害検出時にメールを送信する…という設定。

 

メディアの設定

メディアというのはアラームを配信する仕組み。インストール直後に3つのメディアがインストールされているからそのまま使えばいいのかな?と思ったらそうじゃなく example.com ってなってる。

ということで、先にこれを設定しておいた方がいいみたい。

メールサーバーの設定

管理 → メディアタイプ をクリックする。

Email をクリックして中身を編集。Zabbix サーバーに SMTP サーバーも設定済みなのでこれを使う。

必要な情報を入力したら、更新ボタンをクリックする。

 

なお、メールを送信可能な外にあるサーバーを利用することも可能と思われ、SMTPを立てる必要はない。

ウチでは Kopano を運用しているので、そのために SMTP サーバーを立てている。この SMTP サーバーは、契約しているプロバイダーに送信するメールを託す形でインターネットにメールを流通させている。

 

メールによる通知を受信する設定

管理者による設定

管理者が各ユーザーに設定をして、ユーザーがそれをカスタマイズする…っていうのが運用上は良さそうなので、その方法。

管理 → ユーザー → 設定したいユーザー → メディアタブ をクリックする。

通知メールの送信先を入力し、通知をする深刻度を決めて追加ボタンをクリックする。

忘れがちだが…更新ボタンをクリックして、変更を確定させる。

 

ユーザー自身による設定

運用がこなれてきたら、最初から自分で設定をしてもらうという手もある。
日頃持ち歩いているデバイスはこれじゃない…って時には追加、変更をするかもしれない。

右上の方にある人アイコンをクリックするとプロフィールが表示されるので、メディアタブをクリックする。ここで通知先を設定できる。

設定できる事柄は前項と一緒なので省略。

 

トリガーの設定

アイテムが収集した値をみて、問題が発生しているとされる条件に達したら「PROBLEM」として検出する、というのがトリガーの役割。

トリガーには問題のレベルを表す「深刻度」が設定でき、レベルを画面上に色で表示したり、レベルによって通知をしたりするのに使える。

 

監視対象の装置をホストに追加

ハードディスクレコーダー(v1)とテレビ(t1/HDD接続済み)を監視対象に追加した。監視は30秒ごとの ping と HTTP で行っている(詳細は過去記事参照)。

 

トリガーを追加

死活監視(Alive Monitoring)として、ping と HTTP の反応がなかったら障害、というステータスになるトリガーを作成してみる。
あぱーブログ / Zabbix 3-1. サーバ死活(Ping)監視テンプレート設定

v1 と t1 は HTTP でのアクセスは拒否されるため常に0…。だが、ルーターやWi-Fiルーターは応答したりする。ping には応答しないけどサービスは提供しているよ、的なデバイスも監視できるぜ、そんな装置があるのか知らないけど。

テンプレートで My Home Devices Templates を選択し、トリガータブをクリック。

トリガーの作成をクリックし、条件式の追加ボタン をクリックする。

条件式でアイテム ping を選択して挿入ボタンをクリックする。
icmpping は ping が失敗したときに0を戻すことになっている

条件式ビルダーをクリックし…

条件式の変更ボタンをクリックする。

条件式でアイテム http を選択して挿入ボタンをクリックする。
net.tcp.service.perf はサービス停止中には0を戻すことになっている。

ping と http の両方が駄目なときにハングアップと判断するつもりなので、Andをクリックする。

条件式ビルダーを閉じると以下の式ができあがっている。

{My Home Devices Templates:icmppingsec.last()}=0 and {My Home Devices Templates:net.tcp.service.perf[http,{HOST.IP},80].last()}=0

 

追加ボタンをクリックしてトリガーを作成する。

 

ダッシュボードに戻し、テレビ(t1)の LAN ケーブルを抜いてみた。

障害として検知されている。

 

アクションの設定

メール送信先とトリガーを設定すればメールが送られるのかと思いきや、そうではなかった。メールを送信するアクションを設定しておく必要があった。
FL.OPS / Zabbixで検知した障害をメールで通知しよう!!

設定 → アクション と進み、アクションの作成ボタン をクリックする。

アクションタブで名前を入力。ここでは「障害通知」とした。

実行内容タブで、実行内容欄の新規をクリックする。
ほとんどデフォルト設定で良いけれど、送信先としてユーザーグループ Zabbix administators を追加しておく。
追加リンクをクリックして確定させるのを忘れずに…。

復旧時の実行内容タブで実行内容欄の新規をクリックする。
ここでも送信先としてユーザーグループ Zabbix administators を追加しておく。
追加リンクをクリックして確定させるのを忘れずに…。

ここまで設定したところで追加ボタンをクリックしてアクションを登録する。

これでメールが飛ぶはず。

 

テスト

ダッシュボードを表示させて、再びテレビ(t1)の LAN ケーブルを抜いてみる。
しばらく待つと障害が表示され、通知メールが飛んできた。

メールはこんな内容だった。トリガーに付けた名前は {EVENT.NAME} で表現するようで、サブジェクトと本文に記載されている。

Subject: Problem: Alive Monitoring
From: Administrator <root@temp.hogeserver.hogeddns.jp>
To: rohhie <rohhie@temp.hogeserver.hogeddns.jp>
Date: Sat, 28 Sep 2019 08:02:29 +0000
Message-Id: <20190928080229.5707F1C00B7@temp.hogeserver.hogeddns.jp>

Problem started at 17:02:21 on 2019.09.28
Problem name: Alive Monitoring
Host: t1
Severity: High

Original problem ID: 358

 

問題が発生したらメールで通知を受け取ることができる環境ができあがった。

 

さいごに

これでハードディスクレコーダーが止まったときにメール通知ができる環境ができたので、これをひっさげてSSD購入を娘(大)(財務大臣)に申請をしようと話を持ちかけたところ…

ろ「前にビデオがハングアップするって話、してたよね?」
財「何それ?覚えてないけど。」
ろ「なんかビデオが操作できなくなるとかなんとか…」
財「あー、ビデオがバグって動かなくなることがたまーにあるねー。」
ろ「それそれその話。(そうかバグるじゃないと伝わらないのか)」
財「最近は起きてないかなー、月1回くらい?」
ろ「それなんだけどさ、止まったらメールで教えてくれるのって良くない?」
財「え?何?メールって?見終わったのを削除しようとするとバグるんだよ。」
ろ「え?ビデオを見ようとして電源ボタンを押しても反応しないことがあったじゃん。」
財「そうだっけ?覚えてないな。なんか○○ー○(メーカー)のって駄目だよね。
ろ「そうかもな…まぁ、突然止まってたりすると、録画できてなかったりして困るんじゃね?って思ってさ、止まったときにメールを飛ばそうかと思ってるんだよ。」
財「メールが飛んできても意味ないじゃん。家にいないかもしれないし。」
ろ「いやいや、止まったことが分かれば帰ってきてからコンセント入れ直せばいいけど、気付かないままだと録画できないかもしれないじゃん?」
財「…」
ろ「…」

という流れになった。これはニーズを取り違えていた上に、コミュニケーションミスをしてしまった。これはもう駄目だ…。

もう一度このコピペを胸に刻む必要があるな。

車のエンジンがかからないの…

女『車のエンジンがかからないの…』 
男『あらら?バッテリーかな?ライトは点く?』 
女『昨日まではちゃんと動いてたのに。なんでいきなり動かなくなっちゃうんだろう。』 
男『トラブルって怖いよね。で、バッテリーかどうか知りたいんだけどライトは点く?』 
女『今日は○○まで行かなきゃならないから車使えないと困るのに』 
男『それは困ったね。どう?ライトは点く?』 
女『前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。』 
男『…ライトは点く?点かない?』 
女『○時に約束だからまだ時間あるけどこのままじゃ困る。』 
男『そうだね。で、ライトはどうかな?点くかな?』 
女『え?ごめんよく聞こえなかった』 
男『あ、えーと、、ライトは点くかな?』 
女『何で?』 
男『あ、えーと、エンジン掛からないんだよね?バッテリーがあがってるかも知れないから』 
女『何の?』 
男『え?』 
女『ん?』 
男『車のバッテリーがあがってるかどうか知りたいから、ライト点けてみてくれないかな?』 
女『別にいいけど。でもバッテリーあがってたらライト点かないよね?』 
男『いや、だから。それを知りたいからライト点けてみて欲しいんだけど。』 
女『もしかしてちょっと怒ってる?』 
男『いや別に怒ってはないけど?』 
女『怒ってるじゃん。何で怒ってるの?』 
男『だから怒ってないです』 
女『何か悪いこと言いました?言ってくれれば謝りますけど?』 
男『大丈夫だから。怒ってないから。大丈夫、大丈夫だから』 
女『何が大丈夫なの?』 
男『バッテリーの話だったよね?』 
女『車でしょ?』 
男『ああそう車の話だった』 
女『もう、男って人の話聞かないんだから』 
男『ごめん、ごめん。で、ライト点く?』 
女『やっぱ怒ってんじゃん』 
男『怒ってないってば』 
女『絶対怒ってる。何カリカリしてるの? 人が大変な時に!』 
男『いや、俺はただライトが付くかどうかを…』 
女『話を逸らさないで! ライトがどうこうじゃなくて今あなたの話をしてるの!』 

そうかもな…からの展開が全て。

別のネタを探そう…。

 

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です