こんにちは。サイオステクノロジー OSS サポート担当 山本 です。
今回は Zabbix のお話です。
ポイントリリースである Zabbix4.4 が、2019年10月に公開されていました。
「Go 言語の全く新しい Agent」「TimescaleDB に対応」「Kerberos 認証に対応」…などなど様々な変更点が公表されていますが、変更の詳細は公式のドキュメントなどを参照していただくとして…
https://www.zabbix.com/whats_new_4_4
https://www.zabbix.com/documentation/4.4/manual/introduction/whatsnew440
今回はこれらの中から、実際に監視をする段階に直接影響がありそうなものをいくつか紹介したいと思います。
■systemd の監視 (要:Agent2)
以下のような設定のアイテムにより、systemctl コマンドなどで管理している systemd unit の監視が非常に簡単にできるようになりました。
タイプ : Zabbix エージェント
キー : systemd.unit.info[<監視したい systemd unit>]
データ型 : 文字列
監視したい systemd unit の部分には、例えば chronyd.service や sshd.service のようなサービス名などを入れてください。
これだけの設定で、そのサービスなどの状態が監視できるようになります。サービスが停止した時に通知するのは勿論、アクションと組み合わせてリモートコマンドを実行するなど活用の幅は広そうです。
ただし、この systemd の監視は Zabbix4.4 で追加された Zabbix-Agent2 でのみ使える機能で、Zabbix-Agent2 は Zabbix4.4 では RHEL8 / CentOS8 以降にしか対応していません。
そのため、残念ながら監視対象が RHEL7 / CentOS7 以前の場合にはこの機能は使用できません。
また、公式ページのインストール手順では Zabbix-Agent2 はインストールされないため、以下の手順で監視対象に Zabbix-Agent2 を導入しておく必要があります。
・①. RHEL8 / CentOS8 以降であることを確認します。
・②. 以下のコマンドを実行し、Zabbix-Agent2 をインストールします。
# dnf install zabbix-agent2
・③. 設定ファイル /etc/zabbix/zabbix_agent2.conf を適宜編集します。
・(④). Zabbix-Agent を動作させている場合、停止します。(port が競合しているため、Zabbix-Agent と Zabbix-Agent2 は同時に使用できません。なお、Zabbix-Agent の監視項目は基本的に Zabbix-Agent2 でもそのまま使用可能です。)
# systemctl stop zabbix-agent
・⑤. Zabbix-Agent2 を起動します。
# systemctl restart zabbix-agent2 # systemctl enable zabbix-agent2
■systemd の一括監視設定 (要:Agent2)
先述の systemd unit の監視ですが、ローレベルディスカバリ (LLD) の機能を使って一括で監視設定することもできます。
LLD って何者?というのはまたの機会として、今回は全 service の状態を一括監視する手順を確認していきます。なお、こちらも Zabbix-Agent2 が必要なため、RHEL8 / CentOS8 以降のみでしか使えません。予め Zabbix-Agent2 を動作させてから以下を設定してください。
テンプレートについては以下の過去記事で紹介していますので、テンプレートについてはこちらを参照してください。
使ってみよう Zabbix⑦ : テンプレート編
・①. 「設定 > テンプレート」画面から、適当なテンプレートを作成します。
・②. 作成したテンプレート行の「ディスカバリ」をクリック、LLD の設定画面に移動します。
・③. 画面右上「ディスカバリルールの作成」から、以下の設定を持つ新規ディスカバリルールを作成します。
タイプ : Zabbix エージェント
キー : systemd.unit.discovery[service]
・④. 作成したディスカバリルール行の「アイテムのプロトタイプ」をクリック、アイテムのプロトタイプルールの設定画面に移動します。
・⑤. 画面右上「アイテムのプロトタイプの作成」から、以下の設定を持つ新規アイテムのプロトタイプを作成します。
名前:service_state_of_{#UNIT.NAME}
タイプ : Zabbix エージェント
キー : systemd.unit.info[{#UNIT.NAME}]
データ型 : 文字列
説明:{#UNIT.NAME} のステータス
・⑥. 「設定 > ホスト」画面から、Zabbix-Agent2 が動作しているホストに対して作成したテンプレートを適用します。
以上を設定してしばらく待つと…
このように、監視対象上の全ての .service タイプの systemd unit の Active ステータスを確認するアイテムがホストに登録されます。
環境にもよりますが、見てのとおりかなり多くの監視項目が追加されますので、監視が必要な systemd unit がわかっているなら前のセクションのように必要なものだけを直接アイテムとして設定したほうが実用的かと思います。
こちらはあくまで全ての systemd unit を確認したい場合に使うものと考えましょう。
■「最新データ」「障害」画面の注釈
「監視データ > 最新データ」画面では、これまではアイテムの名前と取得した監視データしか表示されていませんでした。
そのため、監視データの内容はアイテムの名前のみから判断するか、別のページに移って確認する必要がありました。
Zabbix4.4 では、アイテムの設定画面で「説明」の項目を入力しておくと、アイテム名の横にマウスオーバー時に「説明」に入力した内容が表示されるアイコンが追加されました。
例えば、先の手順で追加された systemd unit のアイテムでは「説明」に “{#UNIT.NAME} のステータス” を設定してあるので、以下のように表示されます。アイコンをクリックすると表示を固定することもできます。
これにより、アイテムの詳細な説明を追加したり、関連して確認すべき項目や関連資料のありかなどを「最新データ」画面に表示することができるようになり、利便性が大幅に上げられる…可能性があります。
「監視データ > 障害」画面でも同様に、トリガーの設定画面で「説明」の項目に入力された内容を表示できる機能が追加されています。
また、「障害」画面では更に「Operational data」という項目が表示できるようになっています。
こちらはトリガーの設定画面に Zabbix4.4 で追加された項目「Operational data」に入力した内容が表示されます。
デフォルトではこの項目は表示されていませんが、「障害」画面のフィルタ「Show operational data」を変更することで、表示できるようになります。
トリガー画面の「説明」「Operational data」には、トリガーで使用可能なマクロも使うことができるので、{ITEM.LASTVALUE<1-9>} マクロを使用してトリガーに関わっているアイテムの最新値を表示するような使い方などが便利です。
■最後に
今回は Zabbix4.4 の新機能の中から、監視の利便性に直接関係しそうな項目をいくつか紹介してみました。
Zabbix4.4 は半年でサポートが完全終了するポイントリリースなので、長期運用をしたい場合には不向きなバージョンです。もし使う場合には Zabbix5.0 の公開と同時に移行できるように準備しながら使用しましょう。
また、これらの機能は開発中の Zabbix5.0 LTS のドキュメントにも記載が確認できるので、2020年4月リリース予定の Zabbix5.0 を導入する際にはうまく活用したいものです。