2 アクティブエージェントの自動登録

概要

アクティブZabbixエージェントの自動登録を許可することができ、その後サーバーはそれらの監視を開始できます。 これにより、新しいホストをサーバー上で手動設定することなく監視対象として追加できます。

自動登録は、これまで認識されていなかったアクティブエージェントがチェックを要求したときに実行されます。

この機能は、新しいCloudノードの自動監視に非常に便利です。 Cloudに新しいノードが追加されるとすぐに、Zabbixはそのホストのパフォーマンスデータおよび可用性データの収集を自動的に開始します。

アクティブエージェントの自動登録では、追加されたホストをパッシブチェックで監視することもサポートしています。 アクティブエージェントがチェックを要求する際、設定ファイルで ListenIP または ListenPort 設定パラメータが定義されていれば、それらもサーバーに送信されます。 複数のIPアドレスが指定されている場合は、最初のものがサーバーに送信されます。

サーバーは、新しく自動登録されたホストを追加する際に、受信したIPアドレスとポートを使用してエージェントを設定します。 IPアドレス値が受信されなかった場合は、受信接続に使用されたものが使われます。 ポート値が受信されなかった場合は、10050 が使用されます。

ホストをデフォルトのエージェントインターフェースとして DNS名 で自動登録するよう指定することも可能です。

自動登録は、次の場合に再実行されます。

  • ホストのメタデータ情報が変更された場合:
    • HostMetadata が変更され、エージェントが再起動された場合
    • HostMetadataItem が返す値が変更された場合
  • メタデータが欠落している手動作成ホストの場合
  • ホストが手動で別のZabbixプロキシによって監視されるよう変更された場合
  • 同じホストの自動登録が新しいZabbixプロキシから行われた場合

ZabbixサーバーおよびZabbixプロキシに対するアクティブエージェント自動登録のハートビートは120秒です。 そのため、検出されたホストが削除された場合、自動登録は120秒後に再実行されます。

設定

サーバーを指定

エージェントの設定ファイル zabbix_agentd.conf で、Zabbixサーバーが指定されていることを確認してください。

ServerActive=10.0.0.1

zabbix_agentd.confHostname を明示的に定義しない限り、エージェントが配置されているシステムのホスト名が、サーバーによってホスト名として使用されます。
Linuxでシステムのホスト名を取得するには、hostname コマンドを実行します。

Zabbixエージェントの設定で Hostname がカンマ区切りのホスト一覧として定義されている場合、一覧に含まれるすべてのホスト名に対してホストが作成されます。

設定ファイルを変更した後は、エージェントを再起動してください。

アクティブエージェント自動登録のアクション

サーバーがエージェントから自動登録リクエストを受信すると、アクションを呼び出します。 エージェントの自動登録には、イベントソース「自動登録」のアクションを設定する必要があります。

アクティブエージェントを自動登録するために、ネットワークディスカバリを設定する必要はありません。

ZabbixのWebインターフェースで、Alerts → Actions に移動し、Autoregistration actions を選択して Create action をクリックします。

  • Actionタブで、アクションに名前を付けます
  • 必要に応じて、条件を指定します。
    条件では、ホスト名/ホストメタデータに対して部分文字列一致または正規表現一致を使用できます。
    「Host metadata」条件を使用する場合は、次のセクションを参照してください。
  • Operationsタブで、「Add host」、「Add to host group」(例: Discovered hosts)、「Link templates* など、関連するオペレーションを追加します。

自動登録されるホストがアクティブ監視のみに対応する可能性が高い場合(たとえば、Zabbixサーバーからファイアウォールで遮断されているホストなど)、リンク用に Template_Linux-active のような専用テンプレートを作成するとよいでしょう。

作成されたホストは、Discovered hosts グループに追加されます(デフォルト。Administration > General > Other で設定可能)。 ホストを別のグループに追加したい場合は、Remove from host group オペレーション("Discovered hosts" を指定)を追加し、さらに Add to host group オペレーション(別のホストグループを指定)も追加してください。ホストは必ずいずれかのホストグループに属している必要があるためです。

安全な自動登録

暗号化接続でPSKベースの認証を設定することで、安全な自動登録が可能です。

暗号化レベルは、Administration > General > Autoregistration でグローバルに設定します。 暗号化なし、PSK認証によるTLS暗号化、またはその両方を選択できます(つまり、一部のホストは暗号化なしで登録し、他のホストは暗号化を使用して登録できます)。

PSKによる認証は、ホストを追加する前にZabbixサーバーによって検証されます。 成功した場合、ホストが追加され、Connections from/to host は、グローバルな自動登録設定と同じID/事前共有鍵を使用する「PSK」のみに設定されます。

プロキシを使用する環境で自動登録のセキュリティを確保するには、Zabbixサーバーとプロキシ間の暗号化を有効にする必要があります。

デフォルトインターフェースとしてDNSを使用する

HostInterface および HostInterfaceItem 設定パラメータ を使用すると、自動登録時のホストインターフェースにカスタム値を指定できます。

具体的には、ホストをデフォルトのエージェントインターフェースとしてIPアドレスではなくDNS名で自動登録する必要がある場合に有用です。 その場合、HostInterface または HostInterfaceItem パラメータの値としてDNS名を指定するか、返す必要があります。 これらのパラメータのいずれかの値が変更された場合(たとえば、IPアドレスからDNS名へ、またはその逆)、自動登録されたホストのデフォルトインターフェースはそれに応じて更新されます。 この更新は、新しいホストを作成するのではなく、既存のホストに対して適用されます。 新しい値を送信するには、エージェントを再起動して自動登録プロセスを再開始させる必要があります。

HostInterface または HostInterfaceItem パラメータが設定されていない場合は、代わりに listen_dns パラメータが使用されます。 この値は、エージェントのIPアドレスに対して逆引きDNSルックアップを実行することで決定されます。 逆引きDNSが適切に設定されていない場合、または無効な名前を返す場合、無効なインターフェース値により自動登録が不正確になったり失敗したりする可能性があります。

ホストメタデータの使用

エージェントがサーバーに自動登録リクエストを送信する際、ホスト名を送信します。
場合によっては(例えば、Amazonクラウドノードなど)、ホスト名だけではZabbixサーバーが検出されたホストを区別するのに十分ではありません。
ホストメタデータを任意で使用して、エージェントからサーバーへその他の情報を送信できます。

ホストメタデータは、エージェントの設定ファイル zabbix_agentd.conf で設定します。
設定ファイルでホストメタデータを指定する方法は2つあります。

HostMetadata
HostMetadataItem

各オプションの説明は、上記のリンクを参照してください。

HostMetadataItem パラメータは、最大65535個のUTF-8コードポイントを返すことができます。
これより長い値は切り詰められます。

MySQLでは、返される値にマルチバイト文字が含まれている場合、実効的な最大文字数はこれより少なくなることに注意してください。
例えば、3バイト文字のみを含む値は合計21844文字まで、4バイト文字のみを含む値は合計16383文字までに制限されます。

アクティブエージェントがアクティブチェックを更新するためのリクエストをサーバーに送信するたびに、自動登録の試行が行われます。
リクエスト間の遅延は、エージェントのRefreshActiveChecks パラメータで指定します。
最初のリクエストは、エージェントの再起動直後に送信されます。

HostMetadata を使用した OS 別の自動登録

ホストを Zabbix サーバーによって自動登録したいとします。
ネットワーク上にはアクティブな Zabbix エージェント(上記の「Configuration」セクションを参照)が存在します。
また、ネットワーク上には Windows ホストと Linux ホストがあり、Zabbix の Webインターフェースでは「Linux by Zabbix agent」および「Windows by Zabbix agent」テンプレートを利用できます。
そのため、ホスト登録時には、登録されるホストに適切な Linux/Windows テンプレートを適用したいと考えます。
デフォルトでは、自動登録時にサーバーへ送信されるのはホスト名のみであり、それでは十分でない場合があります。
ホストに適切なテンプレートが適用されるようにするには、ホストメタデータを使用する必要があります。

Webインターフェースの設定

最初に行うことは、Webインターフェースを設定することです。
2つのアクションを作成します。
1つ目のアクション:

  • 名前: Linuxホストの自動登録
  • 条件: ホストメタデータに Linux が含まれる
  • 実行内容: テンプレートをリンク: Linux by Zabbix agent

この場合、「ホストを追加」操作は省略できます。
ホストにテンプレートをリンクするには、まずホストを追加する必要があるため、サーバーがそれを自動的に行います。

2つ目のアクション:

  • 名前: Windowsホストの自動登録
  • 条件: ホストメタデータに Windows が含まれる
  • 実行内容: テンプレートをリンク: Windows by Zabbix agent

エージェントの設定

次に、エージェントを設定する必要があります。
以下の行をエージェントの設定ファイルに追加してください。

HostMetadataItem=system.uname

これにより、ホストメタデータには、エージェントが稼働しているホストに応じて "Linux" または "Windows" が含まれるようになります。
この場合のホストメタデータの例:

Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32

設定ファイルを変更した後は、エージェントの再起動を忘れないでください。

HostMetadataを使用した自動登録とテンプレートの制御

ステップ1 - HostMetadataで登録を保護する

ホストメタデータを使用して、不要なホストの登録に対する基本的な保護を行います。

Webインターフェースの設定

推測されにくい秘密コードを使用して、不要なホストを許可しないように、Webインターフェースでアクションを作成します。

  • 名前: Linuxの自動登録アクション
  • 条件:
    • 計算の種類: AND
    • 条件 (A): ホストメタデータに //Linux// を含む
    • 条件 (B): ホストメタデータに //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae// を含む
  • 実行内容:
    • すべてのメディア経由でユーザー Admin にメッセージを送信
    • ホストグループに追加: Linux servers
    • テンプレートをリンク: ZabbixエージェントによるLinux

この方法だけでは強力な保護は提供されないことに注意してください。これは、データが平文で送信されるためです。 変更を即座に反映させるには、設定キャッシュの再読み込みが必要です。

エージェントの設定

次の行をエージェントの設定ファイルに追加します。

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

ここで、"Linux" はプラットフォームであり、文字列の残りの部分は推測されにくい秘密のテキストです。

設定ファイルに変更を加えた後は、エージェントを再起動することを忘れないでください。

ステップ2 - 登録済みホストにテンプレートを追加

すでに登録されているホストに、追加のテンプレートを追加できます。
この場合、MySQL by Zabbix agentテンプレートは、HostMetadata に MySQL トークンを含むホストにのみリンクされます。

Webインターフェースの設定

Webインターフェースでアクションを更新します。

  • 名前: Autoregistration action Linux
  • 条件:
    • 計算タイプ: AND
    • 条件 (A): ホストメタデータに Linux を含む
    • 条件 (B): ホストメタデータに 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae を含む
    • 条件 (C): ホストメタデータに MySQL を含む
  • 実行内容:
    • ユーザーへのメッセージ送信: すべてのメディア経由で Admin
    • ホストグループに追加: Linux servers
    • テンプレートをリンク: Linux by Zabbix agent
    • テンプレートをリンク: MySQL by Zabbix Agent

エージェントの設定

エージェント設定ファイル内の次の行を更新します。

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

設定ファイルを変更した後は、エージェントを再起動することを忘れないでください。