こんにちは、SCSK株式会社の小寺崇仁です。
Zabbixの7.2から実装されたNETCONFについて検証したいと思います。
7.2の新機能につきましては、公式HPに記載がございます。

NETCONFとは
NETCONFは、ネットワーク機器の管理・設定を行うための標準プロトコルです。
XML形式のデータとYANGデータモデルを使い、機器の設定や状態取得をプログラム的に実行します。
CLI操作に比べ、自動化、確実な設定、エラーチェックが容易で、セキュアな通信を提供。大規模ネットワーク運用における自動化基盤として利用されます。
ZabbixとNETCONF
ZabbixからNETCONFを使って監視すると以下のメリットがあると考えられます。
確実なデータ取得: XML/YANGモデルによりデータ構造が明確なため、CLIスクレイピングと異なりフォーマット変更による監視破損リスクが低く、安定して正確な情報が得られます。
詳細な情報取得: SNMPでは難しい機器のより詳細な設定や運用状態を正確に監視できます。
セキュリティ強化: SSHベースで通信が暗号化され、セキュアな監視が実現します。
ベンダー依存低減: YANGモデルの標準化により、異なるベンダーの機器でも共通の監視ロジックを適用しやすくなります。
設定方法
Zabbix7.2とjuniperを使った設定内容をご紹介いたします。
juniperの設定
環境に合わせてサービスの起動、FWの穴あけを行います。
#サービスの有効化 set system services netconf ssh #FWの穴あけ set security zones security-zone untrust interfaces ge-0/0/0.0 host-inbound-traffic system-services netconf
アイテムの作成
以下の設定でアイテムを作成します。Juniperでインタフェースの情報を取得するサンプルです。
名前 | 任意 |
---|---|
タイプ | SSHエージェント |
キー | ssh.run[,,830,,,netconf] ※ポートとNETCONFであることを指定します。 |
データ型 | テキスト |
認証方式 | パスワード(環境に合わせて) |
ユーザー名 | (環境に合わせて) |
パスワード | (環境に合わせて) |
実行するスクリプト (XML RPCタグ) |
<rpc> <get-interface-information> <detail/> </get-interface-information> </rpc> ]]>]]> <rpc> <close-session/> </rpc> ]]>]]> |
上記アイテムを作成いただく事で、NETCONFを使用してXML形式のデータの取得ができます。
しかしXMLの生データだけでは、監視ができないので、環境に合わせてデータの加工の設定を行う必要があります。
次に、データ加工に必要なスキルを紹介します。
必要スキル
XML RPCタグの作成
データ取得の際にXML RPCタグを使って、取得するデータを指定しています。
各機器ごとにタグが違うと思うので、注意が必要です。
juniperであれば、パイプで「display xml rpc」をつなげれば作成できるようです。
user@host> show interfaces t3-5/1/0:0 | display xml rpc <rpc-reply xmlns:junos="http://xml.juniper.net/junos/16.1R1/junos"> <rpc> <get-interface-information> <interface-name>t3-5/1/0:0</interface-name> </get-interface-information> </rpc> <cli> <banner></banner> </cli> </rpc-reply>
保存前処理(javascript)でデータの加工
取得したXMLデータを加工、成形する際に保存前処理でJavascriptを書く必要があります。
加工、成形する目的としては、以下2点のためです。
・XMLから所定の値(文字列)を抽出する
・後工程(依存アイテム、LLD)で使用しやすいように、データの加工(成形)する
依存アイテム、ローレベルディスカバリ(LLD)でアイテム分割
NETCONFで監視するアイテムを大量に作成すると、NW機器側に負荷がかかるため、まとめて取得して分割する必要があります。
その際に、依存アイテム、ローレベルディスカバリを使用すると分割することができます。
依存アイテム
依存アイテムは、まとめて取得したデータを分割保存するアイテムタイプです。
例えば、1回のNETCONFアイテムで「show version」の結果を取得したとします。
コマンド結果にある、「OSの種類」と「バージョン」を別々のアイテムとして保存する場合に使用します。
ローレベルディスカバリ
インタフェースごとにアイテムを作成する場合に使用します。
機器ごとにインタフェースの数、名前が違うと思います。
ローレベルディスカバリでは、機器に合わせて自動的にアイテムを作成する事ができます。
監視設定が難しい場合
ZabbixインテグレーションにJuniperのNETCONF用テンプレートが公開されております。
その他の機器についてもリリースされることを期待して待つのもよいかと思います。
https://www.zabbix.com/jp/integration_search?search=netconf
SCSK Plus サポート for Zabbix
★YouTubeに、SCSK Zabbixチャンネルを開設しました!★
★X(旧Twitter)に、SCSK Zabbixアカウントを開設しました!★