Zabbixを使って、組織内のネットワーク機器やサーバ、アプリケーションの監視を行うようになって、もう6~7年になりますか。
導入当初から、障害発生アラートは「メール」ではなく「チャット」に通知させたいと思って、Slack に送信するようにしてきました。
この運用が実に最高で、いつどこにいても「アラートが来ていない」つまりは「保守対象の機器やアプリには異常がない!」という「安心」を手に入れることができるようになりました。
その反対に、エラーが起きると、夜中だろうが朝方だろうが、ただちにSlackに通知が来るので、連発して飛んでくると生きた心地がしないという「デメリット」もございます。
そんな中、今週はじめに、大画面のモニターには「Zabixアラート」が発生しているにもかかわらず、Slackに通知が届かないことが発覚しました!
環境はこちら。
- CentOS 7.6(Docker 19.03.2)
- Zabbix 3.4
Webコンソールで見てみると、送信済みにはなっているではないですか!
おかしい!
メニュー「管理」の「メディアタイプ」にある Slack のアクションテストで、送信テストを行ったら、きちんとチャットされるのですよ。。摩訶不思議!!
頻繁に障害が発生するわけではないので、いつから届かなくなっていたかは不明なのですが、おそらく4月下旬の時には、アラートが上がるはずが上がっていないことがわかったので、少なくても4月下旬以前より、Zabbix からの Slack送信 が行われない状況が続いていたと思われます。
まずい、これでは業務外時の安心感を失ってしまうぞぉ!!!
この原因調査をメンバーに託したところ、見事解決してくれました(感謝!)。
障害の原因
アラートメッセージの改行コードの問題だったようです。
下記が元々のメッセージ設定になります。
Slack側の仕様変更かがあったかは不明ですが、エスケープ文字を入力したことで、
無事にアラート通知、復旧通知のメッセージが届くようになりました。
新:デフォルト・メッセージ設定
// textarea 内で改行はしないこと。 Hostname: {HOST.NAME1}\nIP address: {HOST.IP1}\nDate: {EVENT.DATE} {EVENT.TIME} \nDescription: {TRIGGER.NAME}\nSeverity: {TRIGGER.SEVERITY}\n\nItem values: {ITEM.NAME1}: {ITEM.VALUE1}
まとめ
さすがに定期的にアラート通知確認を行うのは厳しいかもしれません。
しかし、そんなことはございません。
サーバメンテナンスを行う際に、確実にアラートが上がる場面で、Slackのチャットをきちんと確認する。
手順にそれを追加するだけで、安心を手に入れられるでしょう。
まあ、復旧してよかったです。
アラートが発生しない世界が最高なのですが、モノなので壊れないわけがないですね。
OKでございまーす!!!