Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

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

概要

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

前に認知されていないアクティブエージェントがチェックを求めたときに、自動登録がおこなわれます。

この機能は、新しいクラウドのノードの自動監視にとってとても便利です。クラウド環境で新しいノードをもつと同時に、Zabbix が自動的にそのホストのパフォーマンスと可用性のデータの収集を開始します。

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

新しい自動登録ホストを追加したとき、サーバは受信したIPアドレスとポート番号をエージェントの設定に使用します。IPアドレスの値が1つも受信されない場合は、接続に使用されたアドレスが使用されます。ポート番号が1つも受信されない場合は、10050が使用されます。

デフォルトのエージェントインターフェイスとしてDNS名を使用してホストを自動登録するように指定できます。

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

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

設定

サーバーを指定する

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

ServerActive=10.0.0.1

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

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

設定ファイル変更後、エージェントを再起動します。

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

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

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

Zabbixフロントエンドで、設定→アクションに移動し、イベントソースとして自動登録を選択して、アクションの作成をクリックします。

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

自動登録されるホスト(Zabbixサーバーからファイアウォールで保護されているホストなど)がアクティブモニタリングのみでサポートされる可能性が高い場合は、リンク用にTemplate_Linux-active等、特定のテンプレートを作成することをお勧めします。

作成されたホストはDiscovered hostsグループに追加されます。(デフォルトでは管理一般その他で設定可能です)ホストを別のグループに追加する場合は、ホストグループから削除操作(Discovered hostsを指定)を追加し、ホストグループに追加操作(Discovered hosts以外の別ホストグループを指定)も追加します。これは、ホストはホストグループに属している必要があるためです。

安全な自動登録

暗号化された接続を使用してPSKベース認証を設定することにより、安全な自動登録が可能になります。

暗号化レベルは、右側のドロップダウンからアクセスできる[自動登録]セクションの[管理]→一般*でグローバルに設定でき、暗号化なし、PSK認証を使用したTLS暗号化、またはその両方を選択できます。(一部のホストは暗号化なしで登録、他のホストは暗号化を介して登録などもできます)

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

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

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

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

具体的には、ホストをIPアドレスではなくデフォルトのエージェントインターフェイスとしてDNS名で自動登録する必要がある場合に役立ちます。その場合、DNS名はHostInterfaceまたはHostInterfaceItemどちらかのパラメーターの値として指定または返される必要があります。2つのパラメータのいずれかの値が変更されると、自動登録されたホストインターフェイスが更新されることに注意してください。上記からデフォルトのインターフェースを別のDNS名に変更したり、IPアドレスに変更したりすることもできます。ただし、変更を有効にするには、エージェントを再起動する必要があります。

ホストメタデータの使用

エージェントがサーバーに自動登録要求を送信すると、エージェントはホスト名も送信しますが、場合によっては(たとえばAmazonクラウドノード)ホスト名はZabbixサーバーが検出されたホストを区別するのに十分では無いこともあります。オプションでホストメタデータを使用してエージェントからサーバーに他の情報を送信することもできます。

ホストメタデータはエージェント設定ファイル - zabbix_agentd.confで設定されます。ホストメタデータの指定箇所は方法は2つあります。

HostMetadata
       HostMetadataItem

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

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

例 1

ホストメタデータを使用してLinuxホストとWindowsホストを区別します。

ホストをZabbixサーバーによって自動登録したいとします。 ネットワーク上にアクティブなZabbixエージェント(上記の"設定"セクションを参照)があります。 ネットワーク上にWindowsホストとLinuxホストがあり、Zabbixフロントエンドで"Linux by Zabbix agent"と"Windows by Zabbix agent"のテンプレートを使用したいとします。 その場合、ホストの登録時に適切なLinux/Windowsテンプレートを適用する必要があります。 デフォルトでは、自動登録時にホスト名のみがサーバーに送信されますが、これでは不十分な場合があります。 適切なテンプレートがホストに適用されていることを確認するには、ホストメタデータを使用する必要があります。

フロントエンドの設定

最初に行うことはフロントエンドを構成することです。今回は2つのアクションを作成します。

まず

  • 名前:Linuxホストの自動登録
  • 条件:ホストメタデータにLinuxが含まれる。
  • 操作:テンプレートへのリンク:Linux

この場合は「ホストの追加」操作をスキップできます。本来テンプレートにリンクするには、サーバーが自動的にそれを行うように、最初にホストを追加する必要があります。

次に

  • 名前:Windowsホストの自動登録
  • 条件:ホストメタデータにWindowsが含まれる
  • 操作:テンプレートへのリンク:Windows
エージェントの設定

次にエージェントを設定する必要があります。次の行をエージェント設定ファイルに追加します。

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

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

例 2

ステップ 1

ホストメタデータを使用して、不要ホストの登録回避を可能にします。

フロントエンドの設定

推測しにくい秘密のコードを使用してフロントエンドでアクションを作成し、不要なホストを禁止します。

名前:自動登録アクションLinux
       条件:
    * Type of calculation: AND
           * Condition (A): Host metadata contains //Linux//
           * Condition (B): Host metadata contains //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
       * Operations: 
           * Send message to users: Admin via all media
           * Add to host groups: Linux servers
           * Link to templates: Linux

データはプレーンテキストで送信されるため、この方法だけでは強力な保護は提供されないことに注意してください。変更をすぐに有効にするには、設定キャッシュのリロードが必要です。

エージェントの設定

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

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

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

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

ステップ 2

すでに登録されているホストの監視を追加することができます。

フロントエンドの設定

フロントエンドのアクションを更新します。

  • 名前:自動登録アクションLinux
  • 条件:
    * Type of calculation: AND
           * Condition (A): Host metadata contains Linux
           * Condition (B): Host metadata contains 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
       * Operations:
           * Send message to users: Admin via all media
           * Add to host groups: Linux servers
           * Link to templates: Linux
           * Link to templates: MySQL by Zabbix Agent
エージェントの設定

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

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

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