また、バージョン2.0以降、 低レベル検出(LLD)または低レベル検出がここに追加されました。 それが何であるかをお話ししたいと思います。
低レベル検出

ネットワークデバイスの検出(ネットワーク検出)は非常に便利な機能です。これにより、新しいネットワークノードを手動で追加し、それらを必要なテンプレートに関連付ける必要がなくなります。 さらに、非常に複雑なスクリプトを作成できます。 たとえば、Wi-Fiベースステーションの新しいクライアント(CPE)をCPEの目的のテンプレートに自動的に関連付け、さらにこのノードをマップ上の目的の場所に自動的に追加します。 ドキュメントには、ネットワーク検出の構成方法の良い例があります。
LLDは、ノードが検出され、テンプレートに接続された後の次のステップで必要です。 LLDを使用すると、ノード自体のオブジェクトを見つけることができます。
LLDにより、以下のデータ要素 、 トリガー 、 グラフを自動的に作成できます 。
- コンピュータファイルシステム
- コンピュータネットワークインターフェース
- 1次元インデックスを持つSNMPテーブルからのデータ
独自のスクリプトを使用してLLDの機能を拡張できます。主なことは、Zabbixのスクリプトの出力にはJSON形式の明確な出力があることです。
LLDが作成するものに加えて、 ホストの変更を定期的にスキャンし、古いデータ要素を動的に削除し(ファイルシステムを削除)、新しい要素を追加します(追加のポートを備えた拡張カードを挿入します)。
もちろん、以前のすべてのバージョンではテンプレートなしで実行されていたため、LLDなしでも実行できます。 Zabbixを使用するのは誰でも、1つのサーバーに2つの論理ドライブがあり、もう1つのサーバーに4つの論理ドライブがあるという状況に直面しています。 1つのイーサネットポートスイッチには8があり、同じ回線のもう1つのポートには24があります。24ポート(4ディスク)のテンプレートを書き込み、デバイスをバインドした後、不要なデータ要素、トリガーを手動で切断します。 そのため、すでに「呼び出されています」。 そして、誰かが新しいサーバーを作成し、その中にこれらのディスクが8つあります...そして、既存のサーバーの同僚の1人が、非標準のパスを持つ別のパーティションを作成し、何も言いませんでした...
以前のように
LLDが提供するものを理解するには、良い例に勝るものはありません。 Zabbixの以前のバージョンでマルチポートスイッチを使用していたことを思い出してください。
シスコ、D-Link、Zyxel、およびその他の「動物園」スイッチがあるとします。 ポートの数が5/8/16/24/50の場合。

SNMPv2とIF-MIBで説明されているカウンターを使用して、ポートのステータスを監視します。 LLDがまだないので、通常のテンプレートの作成を始めましょう。 Template_IF_MIB_SNMPV2と呼びましょう。
1つのポートのテンプレートでは、14個のデータ要素(もちろん、それより少なくてもかまいませんが、ほとんどすべてを収集することが非常に重要であると判断します)と、多数のトリガーとグラフを作成する必要があります 。 Zabbix Webインターフェースでは、マウスを積極的に振って「クローン」ボタンを使用すると、約10分かかります。

息を吸って、私は本当に他の港のために何とか続けたくありません。 誰が同じことを50回やりたいですか? したがって、質問がすぐに発生します。
- 残りのポートを作成する時間を無駄にしない方法(2-50)
- ユニバーサルテンプレートが5ポートスイッチに接続されるときに、手動で介入せずに、ポート6から50のカウンターへの明らかに運命の要求を回避する方法
- 使用されていないポートカウンターによるネットワークの閉塞の回避
たとえば、XMLでテンプレートをアンロードし、続いてテキストエディターでCTRL + C / CTRL + Vをアンロードすることにより、最初の問題の解決を試みることができます。 または、小さな外部スクリプトを作成してXMLを生成することもできます。 しかし...
LLDでできること
しかし、 低レベルディスカバリーでは、物事をはるかに簡単にする機会があります。 1つのポートにデータ要素を作成する代わりに、 データ要素のプロトタイプと必要なトリガーのプロトタイプを一度だけ作成します。 これは一度しか行わないため、時間をかけて補足資料、より正確にはグラフのプロトタイプで有益なグラフを作成することはまったく残念ではありません。
そのため、テンプレートにLLDを作成するには、検出ルールに移動します 。

次に、[ 検出ルールの作成 ]をクリックして新しいルールを作成し、 ネットワークインターフェイス検出と呼びます 。

写真のようにすべてを示します。 一部のフィールドはコメントする価値があります。
キー | snmp.discovery.v2 |
SNMP OID | OID。監視用のインターフェイスを追加する基準に使用します。この場合はifOperStatusです。
|
SNMPコミュニティ | この例では、マクロ{$ COMMUNITY}を使用します。 デフォルト値{$ COMMUNITY} = publicは、同じテンプレートに書き込まれます。 さらに、このテンプレートをアタッチする特定のホストごとに、snmpコミュニティが異なる場合はマクロの値を書き換えるか、何もしないと、テンプレートで指定されたパブリックが使用されます。 この手法により、 ホストレベルでデータ要素を変更する必要がなくなります。
|
フィルター | デバイスへのifOperStatus.Xのリクエストの結果に対応する特別なマクロ{#SNMPVALUE}の値は、非常に複雑な正規表現に従います。1。IF-MIBからわかるように、ifOperStatus.X = 1はup(1)に対応します。 したがって、ネットワークスキャン時に稼働していたインターフェイス(1)のみを監視します。 これにより、使用されていないインターフェイスのカウンターを収集する必要がなくなります。 すべてのポートを無差別に監視に追加する場合は、 フィルターフィールドを空のままにします。
|
失われた資源の保存期間 | 何日後、ネットワークインターフェイスがLLDによって再スキャンされなくなった場合、またはifOperStatus.Xステータスがup(1)でなくなった場合、ネットワークインターフェイスを監視から削除します。 この場合、ゼロに設定してください-削除しないでください。
|
そこで、 ルールを作成しました。今度は、データ要素のプロトタイプを作成する必要があります。 ここでは、すべてが通常のデータ要素を作成するときとほぼ同じですが、いくつかの機能があります。 たとえば、受信トラフィックifInOctetsを追加します。

フィールドの説明:
名 | if {#SNMPINDEX}({$ PORT {#SNMPINDEX} _DESC})で。 デザインを解読します。 すでに知っているように、{#SNMPINDEX}は、SNMPのインターフェイスインデックスに対応するシステムマクロです。 理解できる名前の代わりに、インターフェイスの名前に置き換えます。 if1、if2、if3などが判明します。 2番目のマクロはカスタムマクロ {$ PORT {#SNMPINDEX} _DESC}で、その名前にインターフェイスインデックスが挿入され、マクロ名が動的に変更されます。 これはオプションですが、Zabbixの各インターフェイスの追加の説明を記述できるようにするために使用します。たとえば、 ホストレベルでマクロを追加するだけです。
{$ PORT1_DESC} =アップリンク、ISP1 |
キー | キーが常に一意になるように、キーには{#SNMPINDEX}が含まれている必要があります |
SNMP OID | 同様に、必要なインターフェイスのカウンターをポーリングするために、SNMP OIDの{$ SNMPINDEX}マクロを置き換えます。
|

プロトタイプトリガー ...

...およびグラフのプロトタイプ :

テンプレートを実際のネットワークノードにフックすると、しばらくして結果が得られます。 これは、LLDを実行した後、 ホストの 最新データがどのように見えるかです。

予想どおり、データはアクティブなポートについてのみ収集されます。
また、LLDを使用して動的に作成されたグラフもここにあります。

合計
マルチポートスイッチのテンプレートでLLDを使用して得たものを要約するには:
- IF-MIBをサポートするすべてのデバイスのユニバーサルテンプレート
- テンプレートを追加した後、ホストレベルで調整する必要はありません。 必要な最大値は、{$ COMMUNITY}マクロ(snmpコミュニティがパブリックでない場合)、{$ PORTx_DESC)マクロ(ポートの説明を表示する場合)、および{#SNMPINDEX}({$ PORT { #SNMPINDEX} _DESC})は 、ステータスの変更を通知する必要があるキーポートがダウンしています(プロトタイプのこれらのトリガーは、ユーザーのアクセスポートをオンまたはオフにするアクセストリガーからトリガーされないように非アクティブ化されます)コンピューター)。
ただし、すでに述べたように、ファイルシステムとコンピューターネットワークインターフェイス( ここの別の例)、およびSNMPに格納されている他の多くのものとまったく同じ焦点を合わせることができます。 確かに、制限があります。 たとえば、SNMPテーブルに複数のインデックスが含まれている場合、残念ながらLLDは機能しません。 彼らが言うようにしかし、それは、「松葉杖」カテゴリで、マクロを使って、この制限を周りを取得することが可能です。
行くぞ また、同じデータ要素、トリガー、グラフで大騒ぎする必要はありません。 LLDをセットアップするだけで、自動化のメリットを享受できます。 または、LLD +ネットワーク検出を設定し、一般的に休暇に行きます:)