2020年11月3日火曜日

Zabbix Agent2を使ってsystemdのサービスステータスを監視する

ZabbixはWindowsやLinuxなどの監視を行うために、エージェントとして「Zabbix Agent」が長らく提供されてきた。Zabbix 5.0から新たなエージェントとして「Zabbix Agent2」が正式サポートされるようになった。

Zabbix AgentとZabbix Agent2の違いの説明は割愛するが、今後のことを考えて、Zabbix Agent2を使ってみることにした。本記事では、Zabbix Agent2のインストールと設定を記載する。先に言っておくと、インストール手順はZabbix Agentほとんど変化がなく、Zabbixを使ってきた人であればマニュアルを見なくてもインストールできるだろう。

環境

今回はZabbix 5.0を使用する。Zabbix Agent2をCent OS 8にインストールし、Zabbix Agent2で可能となったsystemdのサービスステータス監視を設定する

なお、Zabbix Agent2がサポートされるプラットフォームは以下の通り。マニュアルを見るとWindowsは一部機能制限がある旨、記載されているので注意。

  • RHEL/CentOS 6, 7, 8
  • SLES 15 SP1+
  • Debian 9, 10
  • Ubuntu 18.04
  • Windows (一部機能制限あり)

Zabbix Agent2のインストール

そのままではdnfでインストールすることができないので、「zabbix-release」のパッケージをインストールしたのち、インストールを実行する。

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf install zabbix-agent2 -y

設定ファイルは「/etc/zabbix/zabbix_agent2.conf」となる。以下3行を環境に合わせて修正する。

# vi /etc/zabbix/zabbix_agent2.conf
Server=<Zabbix ServerのIPアドレス>
ServerActive=<Zabbix ServerのIPアドレス>
Hostname=<ホスト名>

設定修正後、Zabbix Agent2を起動する。

# systemctl enable zabbix-agent2
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service → /usr/lib/systemd/system/zabbix-agent2.service.
# systemctl start zabbix-agent2
# systemctl status zabbix-agent2
● zabbix-agent2.service - Zabbix Agent 2
   Loaded: loaded (/usr/lib/systemd/system/zabbix-agent2.service; enabled; vend>
   Active: active (running) since Sat 2020-08-22 17:34:54 JST; 10s ago
 Main PID: 20448 (zabbix_agent2)
    Tasks: 7 (limit: 11090)
   Memory: 7.8M
   CGroup: /system.slice/zabbix-agent2.service
           mq20448 /usr/sbin/zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf

 8月 22 17:34:54 t3022cent systemd[1]: Started Zabbix Agent 2.
 8月 22 17:34:54 t3022cent zabbix_agent2[20448]: Starting Zabbix Agent 2 [t3022>
 8月 22 17:34:54 t3022cent zabbix_agent2[20448]: Press Ctrl+C to exit.

systemdのサービスの監視を追加

Zabbix Agent2では、systemdのサービスの監視ができるようになっているので、今回その機能を使ってPacmekaerのサービス監視を行うことにした。具体的には、systemd.unit.info[<unit name>,<property>,<interface>]にてアイテムを作成することで実現する。

今回は例として、「pacemaker.service 」を監視させることにする。

1. アイテムを作成

以下のような内容でアイテムを作成する。デフォルトから変更していない箇所は記載を省略しているので、必要な場合は適宜変更すること。

項目 設定値
名前 Pacemaker service is running
タイプ Zabbixエージェント
キー systemd.unit.info[pacemaker.service]
データ型 文字列
アプリケーション Pacemaker service


2. トリガーを作成

以下のような内容でトリガーを作成する。デフォルトから変更していない箇所は記載を省略しているので、必要な場合は適宜変更すること。

項目 設定値
名前 Pacemaker service is down on {HOST.NAME}
深刻度 軽度の障害
条件式 {Template Pacemaker Service:systemd.unit.info[pacemaker.service].last()}<>"active"


3. 動作確認

それでは実際にPacemakerのクラスタを停止させて、Zabbixxにて停止を検知することを確認してみよう。

停止前のアイテムの最新データは「active」となっている。

クラスタを停止させると、「inactive」となる。

systemdのサービスのステータスが変化したことで、正常にトリガーも実行された。


まとめ

以上でZabbix Agent2を使って、systemdの監視を実現することができた。Zabbix Agent2ではディスカバリを使ってsystemdに登録されているサービスを自動で取得することもでできるようなので、そちらも別途試していきたい。

参考


0 件のコメント:

コメントを投稿

人気の投稿