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

概要

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

自動登録は、これまで未知だったアクティブ エージェントがチェックを要求したときに発生します。

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

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

サーバーは、新しく自動登録されたホストを追加する際に、受信した 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インターフェースで、次の手順を実行します。

  1. Alerts > Actions に移動します。
  2. Autoregistration actions を選択します。
  3. Create action をクリックします。
  4. Action タブで、アクション名を入力します。
  5. 必要に応じて、条件を指定します。
    ホスト名またはホストメタデータの条件では、部分文字列一致または正規表現一致を使用できます。
    Host metadata 条件タイプを使用する場合は、ホストメタデータの使用を参照してください。
  6. Operations タブで、Add hostAdd 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ベースの認証を設定することにより、安全な自動登録が可能です。

暗号化レベルは、管理 > 一般 > 自動登録でグローバルに設定します。
暗号化なし、PSK認証によるTLS暗号化、またはその両方(暗号化なしで登録できるホストと、暗号化接続で登録するホストを混在させる場合)を選択できます。

PSKによる認証は、ホストを追加する前にZabbixサーバーによって検証されます。
認証に成功するとホストが追加され、ホストとの接続は、グローバルの自動登録設定と同じアイデンティティ/事前共有鍵を使用する「PSK」のみに設定されます。

プロキシを使用する環境で自動登録のセキュリティを確保するには、Zabbixサーバーとプロキシ間の暗号化を有効にしてください。

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

HostInterface および HostInterfaceItem の configuration parameters を使用すると、オート登録時のホストインターフェースにカスタム値を指定できます。

より具体的には、ホストを IP アドレスではなく DNS 名をデフォルトのエージェントインターフェースとしてオート登録したい場合に有用です。
その場合、DNS 名を HostInterface または HostInterfaceItem パラメーターの値として指定するか、これらのいずれかで返す必要があります。
これらのパラメーターの値が変更された場合、たとえば 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エージェント(上記の「設定」セクションを参照)が存在します。 ネットワーク上にはWindowsホストとLinuxホストがあり、ZabbixのWebインターフェースには「Linux by Zabbix agent」および「Windows by Zabbix agent」テンプレートが用意されています。 したがって、ホスト登録時には、登録されるホストに適切なLinux/Windowsテンプレートを適用したいと考えています。 デフォルトでは、自動登録時にサーバーに送信されるのはホスト名のみであり、これだけでは十分でない場合があります。 適切なテンプレートがホストに適用されるようにするには、ホストメタデータを使用する必要があります。

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

最初にWebインターフェースを設定します。 2つのアクションを作成します。 最初のアクション:

  • 名前: 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インターフェースでアクションを作成し、推測しにくいシークレットコードを使用して不要なホストを拒否します:

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

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

エージェントの設定

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

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

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