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 がカンマ区切りのホスト一覧として定義されている場合、一覧に含まれるすべてのホスト名に対してホストが作成されます。

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

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

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

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

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

  • Action タブで、アクションに名前を付けます
  • 必要に応じて conditions を指定します。
    ホスト名/ホストメタデータの条件では、部分文字列一致または正規表現一致を使用できます。
    「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ベースの認証を設定することで、セキュアな自動登録が可能です。

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

PSKによる認証は、ホストを追加する前にZabbixサーバーによって検証されます。 認証に成功すると、ホストが追加され、ホストから/への接続 はグローバルな自動登録設定と同じID/事前共有キーで「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

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