はじめに
こんにちは C2ZTAk6 です。
日々管理しているシステムで、サービス停止が発生した際、原因究明を行う前に、サービスの自動復旧が出来る仕組みはないかと考えたことはないでしょうか。
今回は、Zabbixというオープンソース・ソフトウェア(OSS)のアクションという設定を活用し、サービス停止が発生した際に自動で対象のサービスを復旧出来る仕組みについて、お話させて頂ければと思います。
目次
Zabbixとは
Zabbixとは、 オープンソース・ソフトウェア(OSS)の統合監視ソフトウェア です。
サーバの死活監視、リソース(Cpu/Memory/Disk)監視、プロセス監視、ネットワーク監視、ログ監視だけでなく、各種ミドルウェアまで幅広い監視に対応します。
Zabbixのアクションとは
アクションとは、名前の通り「行動」のことを指し、アクションの設定では、主に障害発生時の「異常」をトリガーとして、「自動的に何かをさせる」という設定を行うことが出来ます。
- 例:「httpdサービス停止が発生した場合に、アラートメールを運用担当者へ通知する」
Zabbix自動復旧について
メリット
①サーバログイン不要!
Zabbixアクションを活用し、サービス停止のアラートが発報されたことをトリガーにサービス再起動の仕組みを導入することで、夜間や休日に障害が発生しても、いちいち商用サーバにログインして、復旧手順を元にコマンドを実行し、サービス復旧をさせる必要がなくなる。
②運用コスト削減!
Zabbixアクションで障害が自動的に復旧するので、運用担当者の運用コストを減らすことが出来る。
③属人化防止!
障害復旧手順が複雑で、障害を解消できる人が属人化していた場合はZabbixアクションの自動復旧の仕組みを導入することで、属人化を防ぐことも出来る。
デメリット
①初期費用発生
Zabbixアクションを活用した自動復旧の仕組みを導入する際は、初期導入のプロジェクト工数などの費用がかかる。
※導入時は、担当者の工数が発生し費用はかかるが、導入が完了すれば、以降の運用工数削減が見込める。
Zabbixアクションの設定をしてみよう!
Zabbixアクションを活用し、httpdプロセス自動復旧の設定をしていきます!
前提条件
- 監視サーバ
- 監視対象サーバ
sudo権限を付与
・監視対象サーバ側でコマンドを実行
[root@bweb11 ~]# chmod 660 /etc/sudoers [root@bweb11 ~]# echo "zabbix ALL=NOPASSWD: ALL" >> /etc/sudoers [root@bweb11 ~]# echo "zabbix ALL=NOPASSWD: /etc/systemd/system/httpd.service" >> /etc/sudoers [root@bweb11 ~]# chmod 440 /etc/sudoers [root@bweb11 ~]# cat /etc/sudoers | tail -n 2 zabbix ALL=NOPASSWD: ALL zabbix ALL=NOPASSWD: /etc/systemd/system/httpd.service
※最後尾に設定が追加されていることを確認してください
[root@bweb11 ~]# cat /etc/zabbix/zabbix_agentd.conf | grep EnableRemoteCommands=1 EnableRemoteCommands=1
※リモートコマンドが実行出来るように、1
になっていることを確認する
設定が1
になっていなければ、修正のうえ、zabbix-agentを再起動してください。
アクション設定
・監視サーバ側でアクションの設定を行っていきます
①設定 > アクション > アクションの作成 を押下。
②アクション:以下項目を入力
- 項目
- 名前:
auto restart httpd service
- ※命名規則については、分かりやすい名前で入力してください。
- 実行条件:ラベルA、名前:トリガー名含む
Apache processes is down
- ※トリガーとして設定されている情報を入力する必要がある。今回は既にトリガーとして、設定済みとなる「
Apache processes is down
」を入力させて頂きます。
- ※トリガーとして設定されている情報を入力する必要がある。今回は既にトリガーとして、設定済みとなる「
- 名前:
③実行内容 > 追加を押下。
④実行内容の詳細:以下項目を入力後、Addを押下。
- 項目
- 実行内容のタイプ:リモートコマンド
- ターゲットリスト:
bweb11.mdomain
- ※上記はテスト機です。こちらについては、各自変更してください。
- タイプ:カスタムスクリプト
- 次で実行:Zabbixエージェント
- コマンド:
sudo systemctl restart httpd
⑤設定完了後、追加を押下。
テスト
概要
監視対象サーバにログインして、httpdプロセスを手動で停止し、3分後の監視でhttpdプロセスが停止したことによるトリガー(「Apache processes is down
」)発報後、Zabbixアクションが動作し、監視対象サーバのhttpdプロセスが起動されていることを確認する。
①監視対象サーバ側でコマンドを実行
手動でhttpdプロセスを停止する
[root@bweb11 ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2022-10-31 17:59:41 JST; 1min 24s ago Process: 1984892 ExecStop=/usr/local/vanguard/apache/bin/apachectl stop (code=exited, status=0/SUCCESS) Process: 1985084 ExecStart=/usr/local/vanguard/apache/bin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 1985088 (httpd) Tasks: 9 (limit: 10580) Memory: 13.6M CGroup: /system.slice/httpd.service tq1985088 /usr/local/vanguard/apache/bin/httpd -k start tq1985090 /usr/local/vanguard/apache/bin/httpd -k start tq1985091 /usr/local/vanguard/apache/bin/httpd -k start tq1985092 /usr/local/vanguard/apache/bin/httpd -k start tq1985093 /usr/local/vanguard/apache/bin/httpd -k start tq1985094 /usr/local/vanguard/apache/bin/httpd -k start tq1985095 /usr/local/vanguard/apache/bin/httpd -k start tq1985096 /usr/local/vanguard/apache/bin/httpd -k start mq1985097 /usr/local/vanguard/apache/bin/httpd -k start 10月 31 17:59:41 bweb11.mdomain systemd[1]: Starting The Apache HTTP Server... 10月 31 17:59:41 bweb11.mdomain systemd[1]: Started The Apache HTTP Server. [root@bweb11 ~]# systemctl stop httpd [root@bweb11 ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: inactive (dead) since Mon 2022-10-31 18:04:37 JST; 1s ago Process: 1985282 ExecStop=/usr/local/vanguard/apache/bin/apachectl stop (code=exited, status=0/SUCCESS) Process: 1985178 ExecStart=/usr/local/vanguard/apache/bin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 1985182 (code=exited, status=0/SUCCESS) 10月 31 18:01:18 bweb11.mdomain systemd[1]: Starting The Apache HTTP Server... 10月 31 18:01:18 bweb11.mdomain systemd[1]: Started The Apache HTTP Server. 10月 31 18:04:36 bweb11.mdomain systemd[1]: Stopping The Apache HTTP Server... 10月 31 18:04:37 bweb11.mdomain systemd[1]: httpd.service: Succeeded. 10月 31 18:04:37 bweb11.mdomain systemd[1]: Stopped The Apache HTTP Server.
②監視サーバ側で確認
ダッシュボードから、設定したアクションが動作したことを確認する
③監視対象サーバ側でコマンドを実行
httpdプロセスが、自動で復旧していることを確認する
[root@bweb11 ~]# systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2022-10-31 18:05:18 JST; 31s ago Process: 1985282 ExecStop=/usr/local/vanguard/apache/bin/apachectl stop (code=exited, status=0/SUCCESS) Process: 1985363 ExecStart=/usr/local/vanguard/apache/bin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 1985367 (httpd) Tasks: 9 (limit: 10580) Memory: 13.7M CGroup: /system.slice/httpd.service tq1985367 /usr/local/vanguard/apache/bin/httpd -k start tq1985370 /usr/local/vanguard/apache/bin/httpd -k start tq1985371 /usr/local/vanguard/apache/bin/httpd -k start tq1985372 /usr/local/vanguard/apache/bin/httpd -k start tq1985373 /usr/local/vanguard/apache/bin/httpd -k start tq1985374 /usr/local/vanguard/apache/bin/httpd -k start tq1985375 /usr/local/vanguard/apache/bin/httpd -k start tq1985376 /usr/local/vanguard/apache/bin/httpd -k start mq1985377 /usr/local/vanguard/apache/bin/httpd -k start 10月 31 18:05:18 bweb11.mdomain systemd[1]: Starting The Apache HTTP Server... 10月 31 18:05:18 bweb11.mdomain systemd[1]: Started The Apache HTTP Server.
最後に
いかがでしたでしょうか。
今回はZabbixアクションを活用し、サービス自動復旧の仕組みについて、ご紹介させて頂きました。
本記事がITを学ぶ方にとって、少しでも助けになれば幸いです。
最後までお読みいただきありがとうございました。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/
カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.com
ラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/
イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com