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

概要

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

自動登録は、以前に知られていなかったアクティブエージェントがチェックを要求したときに発生します。

この機能は、新しいクラウドノードの自動監視に非常に便利です。 クラウドに新しいノードが追加されると、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インターフェースで、アラート → アクションに移動し、自動登録アクションを選択してアクションの作成をクリックします:

  • アクションタブで、アクションに名前を付けます
  • 必要に応じて、条件を指定します。 ホスト名/ホストメタデータの条件で部分一致または正規表現一致を行うことができます。 「ホストメタデータ」条件を使用する場合は、次のセクションを参照してください。
  • オペレーションタブで、「ホストの追加」、「ホストグループへの追加」(例:検出されたホスト)、「テンプレートのリンク」など、関連するオペレーションを追加します。

自動登録されるホストがアクティブ監視専用(たとえば、Zabbixサーバーからファイアウォールで保護されているホストなど)である可能性が高い場合は、Template_Linux-activeのような特定のテンプレートを作成してリンクすることを検討してください。

作成されたホストは検出されたホストグループに追加されます(デフォルトでは管理 > 一般 > その他で設定可能)。 ホストを別のグループに追加したい場合は、「ホストグループから削除」オペレーション(「検出されたホスト」を指定)と「ホストグループへの追加」オペレーション(別のホストグループを指定)を追加してください。ホストは必ずホストグループに所属する必要があります。

セキュアな自動登録

暗号化された接続でPSKベースの認証を設定することで、セキュアな自動登録が可能です。

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

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

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

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

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

より具体的には、ホストを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

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