Zabbix で監視しているサーバーの台数が増えてくると、監視対象ホストを登録する手間が大変になり、設定ミスも発生しやすくなります。特にオートスケーリングなどで動的にサーバーの台数が増減する環境では、手作業の登録は難しいでしょう。そこで今回は、Zabbix の自動登録機能を使って監視対象ホストを自動登録する設定手順をまとめてみました。
サーバー構成
サーバー構成は以下の通りです。監視対象サーバー「lamp-sv」を自動登録します。どちらのサーバーもOSは CentOS7です。
Zabbix の自動登録機能は、監視対象ホストの ZabbixエージェントからZabbixサーバーに、ホスト情報が通知され自動登録が行われます。そのため Zabbixサーバーの待ち受けポート 10051/tcp を開いておく必要があります。
Zabbix 4.0 のサーバーおよびエージェントのインストール方法は下記をご参照ください。
関連記事:Zabbix 4.0 インストールメモ(CentOS7 + MySQL 8.0)
Zabbix サーバーの待ち受けポートを開く
上にも書きましたが、Zabbix サーバーの待ち受けポート 10051/tcp を開いておきます。
firewall-cmd コマンドで「10051/tcp」を許可します。
設定を読込みます。
以下のコマンドを実行し、「10051/tcp」が表示されていればOKです。
80/tcp 443/tcp 10051/tcp
待ち受けポートを変更する場合
また、Zabbixサーバーの待ち受けポートは 1024 〜 32767 の範囲で変更することもできます。
sudo vim /etc/zabbix/zabbix_server.conf
# ListenPort=10051
↓
ListenPort=20051
待ち受けポートを変更した場合は、Zabbixサーバーを再起動します。
監視対象サーバーの Zabbixエージェントの設定
ホスト名の設定
下準備として監視対象サーバーのホスト名(lamp-sv)を設定しておきます。(今回はここで設定するホスト名を Zabbixの自動登録でも使うように設定します)
sudo systemctl restart systemd-hostnamed
Zabbixエージェントの設定
監視対象サーバーの Zabbixエージェントを設定します。(設定箇所がいくつかありますので分けて説明します)
sudo vim /etc/zabbix/zabbix_agentd.conf
Server に ZabbixサーバーのIPアドレスを指定します。
↓
Server=192.168.56.104
ServerActive に、同じくZabbixサーバーのIPアドレスと、あわせて待ち受けポートを「IPアドレス:待ち受けポート番号」の形式で指定します。
↓
ServerActive=192.168.56.104:10051
続いてホスト名の設定です。Hostname に手入力で指定することもできますが、今回は HostnameItem に system.hostname を指定することで、先ほど設定した監視対象サーバーのホスト名を参照するように設定します。(hostnameコマンドの結果と同じ文字列がセットされます)
↓
# Hostname=Zabbix server
# HostnameItem=system.hostname
↓
HostnameItem=system.hostname
自動登録設定のキモとなる HostMetadata の設定です。ここで設定した文字列をキーにして Zabbixサーバーが自動登録を行います。
↓
HostMetadata=Linux T3EWaKdCMvpN
HostMetadata は255文字以内で自由に設定することができます。サーバーOSやインストールされているミドルウェアを判別できる文字列を指定しておけば、ホストに適用するテンプレートを振り分けることができます。
また、Zabbix の公式ドキュメントでは、不要なホストの登録をしないように、推測しづらい秘密コード(上の場合は「T3EWaKdCMvpN」)を含めておくことが推奨されています。
2 Active agent auto-registration | Zabbix Documentation 4.0
設定が終わったら、Zabbixエージェントを再起動します。
自動登録の設定
本題の監視対象ホストの自動登録の設定です。Zabbixサーバーの管理画面にログインしてください。
「設定」→「アクション」画面で、イベントソース「自動登録」を選択し「アクションの作成」をクリックします。
アクションの設定
先ほど Zabbixエージェントの HostMetadata に指定した文字列(Linux T3EWaKdCMvpN)をキーにしてアクションを設定していきます。
適当な名前を入力し、新規条件ブロックで「ホストメタデータ」「含む」を選択し、指定した秘密コードを入力して「追加」リンクをクリックします。(下の「追加」ボタンはまだ押さないでください)
同様の手順で、サーバーOSの種類を示す「Linux」も追加して、計算のタイプ「And」を選択します。
通知メッセージの設定
続いて「実行内容」タブをクリックします。
ホストの自動登録など、アクションが実行された時に通知されるメッセージの内容を設定します。Zabbixに限らずチームで自動処理のシステムやツールを運用する場合は、自動実行時の通知が重要になりますので、できるだけ分かりやすい内容を設定しておくことをオススメします。
自動登録の通知で利用できるマクロは以下を参照してください。(Supported in に Auto-registration notifications 表示されているマクロが使えます)
1 Supported macros | Zabbix Documentation 4.0
実行内容の設定
アクションの条件を満たした時に実行する内容を設定します。実行内容ブロックの「新規」リンクをクリックしてください。
実行内容のタイプ「メッセージの送信」を選択し、送信先のユーザーグループもしくはユーザーを設定したら「追加」リンクをクリックします。
同様の手順で「ホストを追加」「ホストグループに追加」「テンプレートとのリンクを作成」などの実行内容を追加していきます。
実行内容の設定が終わったら、最後に「追加」ボタンをクリックすれば、自動登録の設定完了です。
数分で監視対象サーバーが自動登録されます。
おわりに
Zabbixへのホストの登録作業を手順書にすると、なかなかのボリュームになってしまい、しかも手作業なのでどうしてもミスが発生するのが悩みどころでした。この自動登録機能を使えば解決できそうですね。
コメント