RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

Zabbixアクションでサービスの自動復旧を実現!

はじめに

こんにちは C2ZTAk6 です。

日々管理しているシステムで、サービス停止が発生した際、原因究明を行う前に、サービスの自動復旧が出来る仕組みはないかと考えたことはないでしょうか。
今回は、Zabbixというオープンソース・ソフトウェア(OSS)のアクションという設定を活用し、サービス停止が発生した際に自動で対象のサービスを復旧出来る仕組みについて、お話させて頂ければと思います。

目次

Zabbixとは

Zabbixとは、 オープンソース・ソフトウェア(OSS)の統合監視ソフトウェア です。
サーバの死活監視、リソース(Cpu/Memory/Disk)監視、プロセス監視、ネットワーク監視、ログ監視だけでなく、各種ミドルウェアまで幅広い監視に対応します。

Zabbixのアクションとは

アクションとは、名前の通り「行動」のことを指し、アクションの設定では、主に障害発生時の「異常」をトリガーとして、「自動的に何かをさせる」という設定を行うことが出来ます。

  • 例:「httpdサービス停止が発生した場合に、アラートメールを運用担当者へ通知する」

Zabbix自動復旧について

メリット

①サーバログイン不要!
Zabbixアクションを活用し、サービス停止のアラートが発報されたことをトリガーにサービス再起動の仕組みを導入することで、夜間や休日に障害が発生しても、いちいち商用サーバにログインして、復旧手順を元にコマンドを実行し、サービス復旧をさせる必要がなくなる。

②運用コスト削減!
Zabbixアクションで障害が自動的に復旧するので、運用担当者の運用コストを減らすことが出来る。

③属人化防止!
障害復旧手順が複雑で、障害を解消できる人が属人化していた場合はZabbixアクションの自動復旧の仕組みを導入することで、属人化を防ぐことも出来る。

デメリット

①初期費用発生
Zabbixアクションを活用した自動復旧の仕組みを導入する際は、初期導入のプロジェクト工数などの費用がかかる。

※導入時は、担当者の工数が発生し費用はかかるが、導入が完了すれば、以降の運用工数削減が見込める。

Zabbixアクションの設定をしてみよう!

Zabbixアクションを活用し、httpdプロセス自動復旧の設定をしていきます!

前提条件

  • 監視サーバ
    • OS:Red Hat
    • ミドルウェア: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

1031 17:59:41 bweb11.mdomain systemd[1]: Starting The Apache HTTP Server...
1031 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)

1031 18:01:18 bweb11.mdomain systemd[1]: Starting The Apache HTTP Server...
1031 18:01:18 bweb11.mdomain systemd[1]: Started The Apache HTTP Server.
1031 18:04:36 bweb11.mdomain systemd[1]: Stopping The Apache HTTP Server...
1031 18:04:37 bweb11.mdomain systemd[1]: httpd.service: Succeeded.
1031 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

1031 18:05:18 bweb11.mdomain systemd[1]: Starting The Apache HTTP Server...
1031 18:05:18 bweb11.mdomain systemd[1]: Started The Apache HTTP Server.

最後に

いかがでしたでしょうか。
今回はZabbixアクションを活用し、サービス自動復旧の仕組みについて、ご紹介させて頂きました。
本記事がITを学ぶ方にとって、少しでも助けになれば幸いです。
最後までお読みいただきありがとうございました。


エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
20210916153018
https://career-recruit.rakus.co.jp/career_engineer/

カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.com

ラクスDevelopers登録フォーム
20220701175429
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/

イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!

◆TECH PLAY
techplay.jp

◆connpass
rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.