1 ネットワークディスカバリ
概要
Zabbix は、効果的で非常に柔軟な自動ネットワーク検出機能を提供します。
ネットワーク検出を適切に設定すると、次のことが可能になります。
- Zabbix の導入を迅速化する。
- 管理を簡素化する。
- 過度な管理負荷をかけずに、変化の激しい環境で Zabbix を使用する。
Zabbix のネットワーク検出は、次の情報に基づいています。
- IP 範囲
- 外部サービスの可用性 (FTP、SSH、WEB、POP3、IMAP、TCP など)
- Zabbix エージェントから受信した情報 (暗号化されていないモードのみサポート)
- SNMP エージェントから受信した情報
これはネットワークトポロジーの検出は提供しません。
ネットワーク検出は基本的に、検出とアクションの 2 つのフェーズで構成されます。
ディスカバリ
Zabbix は、network discovery rules で定義された IP 範囲を定期的にスキャンします。
チェックの頻度は、各ルールごとに個別に設定できます。
各ルールには、その IP 範囲に対して実行するよう定義された一連のサービスチェックがあります。
ディスカバリルールは discovery manager によって処理されます。
discovery manager は、各ルールごとにタスク(ネットワークチェック)の一覧を持つジョブを作成します。
ネットワークチェックは、利用可能な discovery worker によって並列に実行されます(数は Webインターフェースで各ルールごとに設定可能です)。
例外は SNMPv3 チェックで、これは単一の worker によって処理されます。
同じ IP とポートを持つチェックのみが順次スケジュールされます。これは、一部のデバイスが同一ポートでの並列接続を受け付けないためです。
ネットワークチェックのキューサイズは、2000000、またはおよそ 4 GB のメモリに制限されています。
キューがいっぱいになると、ディスカバリルールはスキップされ、警告メッセージがログに出力されます。
キュー内のディスカバリチェック数を監視するには、内部アイテム zabbix[discovery_queue] を使用できます。
ディスカバリチェックは、他のチェックとは独立して処理されます。
いずれかのチェックでサービスが見つからない場合(または失敗した場合)でも、他のチェックは引き続き処理されます。
ディスカバリルールが実行中に変更された場合、現在のディスカバリ実行は中止されます。
ネットワークディスカバリモジュールによって実行される、サービスおよびホスト(IP)の各チェックは、ディスカバリイベントを生成します。
| Event | Check of service result |
|---|---|
| Service Discovered | サービスが 'down' の状態から 'up' になった場合、または初めて検出された場合。 |
| Service Up | サービスがすでに 'up' の状態で、'up' である場合。 |
| Service Lost | サービスが 'up' の状態から 'down' になった場合。 |
| Service Down | サービスがすでに 'down' の状態で、'down' である場合。 |
| Host Discovered | ホストのすべてのサービスが 'down' の状態だった後に、そのホストの少なくとも 1 つのサービスが 'up' になる場合、または未登録のホストに属するサービスが検出された場合。 |
| Host Up | 少なくとも 1 つのサービスがすでに 'up' である状態で、ホストの少なくとも 1 つのサービスが 'up' になる場合。 |
| Host Lost | 少なくとも 1 つが 'up' だった後に、ホストのすべてのサービスが 'down' になる場合。 |
| Host Down | ホストのすべてのサービスが、すでに 'down' の状態で 'down' である場合。 |
アクション
ディスカバリーイベントは、以下のような関連するアクションの基礎となります。
- 通知の送信
- ホストの追加/削除
- ホストの有効化/無効化
- ホストをグループに追加
- ホストをグループから削除
- ホストにタグを追加
- ホストからタグを削除
- テンプレートをホストにリンク/テンプレートをホストからリンク解除
- リモートスクリプトの実行
これらのアクションは、デバイスタイプ、IP、ステータス、稼働/停止時間などに応じて設定できます。 ネットワークディスカバリーベースのイベントに対するアクションの設定の詳細については、アクションのオペレーションおよび条件のページを参照してください。
ネットワークディスカバリーアクションはイベントベースであるため、検出されたホストがオンラインの場合もオフラインの場合もトリガーされます。 Add hostのようなアクションがService Lost/Service Downイベントでトリガーされるのを避けるために、アクション条件としてDiscovery status: upを追加することを強く推奨します。 そうしないと、検出されたホストが手動で削除された場合でもService Lost/Service Downイベントが生成され、次のディスカバリーサイクルで再作成されてしまいます。
検出されたホストにテンプレートをリンクする場合、リンク可能なテンプレートのいずれかに、ホストまたは他のリンク可能なテンプレートに既に存在する一意のエンティティ(例:アイテムキー)と同じ一意のエンティティ(例:アイテムキー)がある場合、テンプレートのリンクはまとめて失敗します。
ホストの作成
ホストを追加 操作が選択されている場合、ホストが追加されます。 また、ホストを追加 操作がなくても、ホストに対するアクションを実行する操作を選択している場合は、ホストが追加されます。 そのような操作は次のとおりです。
- ホストを有効にする。
- ホストを無効にする。
- ホストをホストグループに追加する。
- テンプレートをホストにリンクする。
作成されたホストは Discovered hosts グループに追加されます(デフォルト。Administration > General > Other で設定可能)。 ホストを別のグループに追加したい場合は、ホストグループから削除 操作("Discovered hosts" を指定)と、ホストグループに追加 操作(別のホストグループを指定)を両方追加してください。ホストはホストグループに属している必要があるためです。
検出されたデバイスの IP アドレスは、検出元(Zabbix サーバー、Zabbix プロキシ、またはプロキシグループ)およびインターフェース種別とともに、システム内でホストを検索するための条件として使用されます。 同じ IP アドレス、インターフェース種別、および検出元を持つホストがすでに存在する場合、そのホストが操作の対象になります。 検出元が異なる場合、検出されたエンティティは別のホストとして扱われ、新しいホストが作成されることがあります。
検出されたホストの IP アドレスが変更された場合、またはインターフェースが削除された場合、次回の検出時に新しいホストが作成されます。
ホスト名の付け方
ホストを追加する際、ホスト名はリバースDNSルックアップの結果、またはリバースルックアップが失敗した場合はIPアドレスとなります。 ルックアップは、ディスカバリを実行しているZabbixサーバーまたはZabbixプロキシから実行されます。 プロキシでルックアップに失敗した場合、サーバーで再試行されることはありません。 そのような名前のホストがすでに存在する場合、次のホストには名前の末尾に_2が付加され、さらに_3と続きます。
DNS/IPルックアップを上書きし、ホスト名にアイテム値を使用することも可能です。例えば:
- ディスカバリ用のZabbixエージェントアイテムを使用して、Zabbixエージェントが稼働している複数のサーバーをディスカバリし、このアイテムが返す文字列値に基づいて自動的に適切な名前を割り当てることができます
- ディスカバリ用のSNMPエージェントアイテムを使用して、複数のSNMPネットワークデバイスをディスカバリし、このアイテムが返す文字列値に基づいて自動的に適切な名前を割り当てることができます
ホスト名がアイテム値で設定されている場合、以降のディスカバリチェックでは更新されません。 アイテム値でホスト名を設定できない場合は、デフォルト値(DNS名)が使用されます。
ディスカバリされたIPアドレスで既にホストが存在し、ディスカバリ元(Zabbixサーバー、プロキシまたはプロキシグループ)が変更されていない場合、新しいホストは作成されません。 ディスカバリ元が異なる場合、ディスカバリされたエンティティは別物として扱われ、新しいホストが作成される場合があります。 ただし、ディスカバリアクションに操作(テンプレートのリンク、ホストグループへの追加など)が含まれている場合は、IPアドレス、インターフェイスタイプ、ディスカバリ元で一致する既存のホストに対して実行されます。
ホストの削除
ネットワークディスカバリールールによって検出されたホストは、検出されたエンティティがルールのIP範囲に存在しなくなった場合、監視データ > ディスカバリから自動的に削除されます。 ホストは即座に削除されます。
ホスト追加時のインターフェース作成
ネットワークディスカバリの結果としてホストが追加されると、次のルールに従ってインターフェースが作成されます。
- 検出されたサービス - たとえば、SNMPチェックが成功した場合は、SNMPインターフェースが作成されます。
- ホストが Zabbix エージェントと SNMP の両方の要求に応答した場合、両方の種類のインターフェースが作成されます。
- 一意性の条件が Zabbix エージェントまたは SNMP から返されたデータである場合、ホストに対して最初に見つかったインターフェースがデフォルトとして作成されます。 その他の IP アドレスは追加のインターフェースとして追加されます。 アクションの条件(Host IP など)は、インターフェースの追加には影響しません。 注 これは、すべてのインターフェースが同じディスカバリルールによって検出される場合に機能します。 別のディスカバリルールが同じホストの別のインターフェースを検出した場合、追加のホストが追加されます。
- ホストがエージェントチェックのみに応答した場合、エージェントインターフェースのみを持つホストとして作成されます。 後で SNMP にも応答するようになった場合は、追加の SNMP インターフェースが追加されます。
- 最初に "IP" 一意性条件で検出された 3 つの別々のホストが作成され、その後ディスカバリルールが変更されて、ホスト A、B、C の一意性条件の結果が同一になった場合、B と C は最初のホスト A の追加インターフェースとして作成されます。 個別のホスト B と C はそのまま残ります。 Monitoring > Discovery では、追加されたインターフェースは "Discovered device" 列に黒字でインデント付きで表示されますが、"Monitored host" 列には最初に作成されたホスト A のみが表示されます。 "Uptime/Downtime" は、追加インターフェースと見なされる IP については測定されません。
プロキシ設定の変更
異なるプロキシによって検出されたホストは、常に別々のホストとして扱われるわけではありません。
検出と一意性チェックは、プロキシグループの構造に依存します。プロキシが検出ルールを実行してホストを作成すると、そのホストはプロキシ自身ではなく、プロキシの親プロキシグループに追加されます。
Zabbix が検出中に IP の一意性を評価する際は、親プロキシグループによって監視されているホストを確認します。
そのグループ内の個々のプロキシによって監視されているホスト(検出を実行したプロキシを含む)は、一意性チェックでは無視されます。そのため、複数のプロキシが重複するサブネットを監視している場合、重複したホストが作成される可能性があります。
この動作により、異なるサブネットで使用される重複する IP 範囲全体で検出を動作させることができますが、すでに監視されているサブネットに割り当てられたプロキシを変更するのはより複雑です。これは、重複を避けるために、プロキシの変更を検出されたホストと親プロキシグループのメンバーシップの両方に対して一貫して適用する必要があるためです。
たとえば、検出ルールでプロキシを置き換える手順は次のとおりです。
- 検出ルールを無効にします。
- プロキシ設定を同期します。
- 検出ルール内のプロキシを置き換えます。
- このルールで検出されたすべてのホストのプロキシを置き換えます(重複を避けるため、親プロキシグループ内のホストと、そのグループ内の個々のプロキシによって監視されているホストの両方が更新されていることを確認します)。
- 検出ルールを有効にします。