こんにちは。最近急に涼しくなってきたので、鍋を食べたくなる季節がきたー!とか、
食が楽しみになってきたエンジニアのふるやです🍲
今回は、サーバー・インフラ監視ツールZabbix(ざびっくす)で障害を自動で復旧するようにした件について、綴らせていただきます。
経緯
- 「ゲームをプレイしているとエラーになる」といった内容の問い合わせがあった
- 調査の末、memcachedがダウンしたことが原因と判明
- ZabbixからChatworkへ通知が届く設定がなく、発見が遅れた
- 根本原因は後で探るとして、すぐ復旧できるような仕組み作りが最優先
対応内容
-
memcached.serviceを監視する
※サービスのダウン、アップのタイミングでChatworkに通知する - memcachedがダウンした場合、memcachedの起動コマンドを実行する
設定:監視項目を追加する
1. TOP画面にて、以下を実行する
2. ホスト画面にて、以下を実行する
(1) ホストの各項目に「アイテム」と「トリガー」があることを確認する
(2) memcachedが存在するホストの「アイテム」を押下する
3. アイテム画面にて、以下を実行する
4. アイテム作成画面にて、以下を実行する
(1) 名前を入力する
ここでは Memcached Port Monitoring
とします
(2) 「memcachedのポートを指定したキー」を入力する
net.tcp.service[tcp,,11211]
(3) 値のマッピングを入力する
今回は memcached の status を知りたいので、Service state
を選択する
(4) アプリケーションの作成に「Memcached」を入力する
すでに識別できるものがあれば、下の一覧から選択する
(5) テストを押下する
5. アイテムのテスト画面にて、以下を実行する
(1) 「値の取得とテスト」を押下し、「結果」が表示されることを確認する
(2) 問題なければテスト画面を閉じ、「追加」を押下する
6. トリガー画面にて、以下を実行する
(1) 上記「ホスト一覧画面」より、「トリガー」を押下する
(2) 右上の「トリガー作成」を押下する
7. トリガー作成画面にて、以下を実行する
(1) 名前に Chatwork通知の際に表示したい内容 を入力する
(2) 深刻度を入力する
今回は memcached のステータスがDownとなった際にゲームが成立しなくなるため、
「致命的な障害」とする
(3) 右の「追加」を押下し、先ほど作成したアイテム名「Memcached Port Monitoring」を選択する
テンプレートのように表示されるので、あとは通知したい条件を入力する。
(通常 : 1 なので、 1 で作成します)
(4) 「追加」を押下する
8. テストする
設定:サービスを自動起動させる
memcachedの起動コマンドをZabbixに実行してもらうために、
ZabbixにSystemコマンド実行権限を付与します。
1. memcached.serviceが起動しているサーバーの zabbix_agentd.conf を修正する
vim /etc/zabbix/zabbix_agentd.conf
# 初期状態の場合L74付近
+ AllowKey=system.run[*]
2. zabbix_agent を再起動し、設定修正内容を反映する
systemctl restart zabbix-agent
3. Zabbixユーザーに対して、部分的にsudo権限を付与する
(今回は再起動のみ付与します)
visudo
+ zabbix ALL=(ALL) NOPASSWD: /bin/systemctl restart memcached.service
4. メニュー > 設定 > アクション > アクションの作成 から アクションを追加する
アクション ※以下、数字の順に設定する
実行内容 ※以下、数字の順に設定する
実行内容に記載するコマンド
sudo /bin/systemctl restart memcached.service
※sudo
が必要。systemctl
だけでは実行されない。
5. テストする
設定後は必ずテストしましょう。
完了です!お疲れ様でした!😊
少々手間ですが、サービス提供者としては必須ですし
個人的には設定するのが楽しかったです。
(次:設定も自動化したい)
以上、エンジニアのふるやが綴らせていただきました。
本記事は以下に投稿した記事を再構成しています。
https://dhe.dank-hearts.net/n/na643313dabb8
https://dhe.dank-hearts.net/n/n5d05df5d7476