【ZABBIX 7.0】LLD(ローレベルディスカバリ)を雑に組み込みたい
ZABBIXのテンプレートに[ディスカバリ]って項目あるじゃないスか。
あれ便利ですよね。一つ作っておけば、例えばIFの数だけ同じ情報(トラフィック量とか)を取ることができるわけです。
うちでも自作のテンプレに組み込もうと思っていたんですが、まあ公式ドキュメントの内容がよく分からんので困っていました(私のレベルが低いだけかもしれんけど)。
で、公式のテンプレを参考にいろいろ弄ってみたら意外と簡単に作れたので、備忘録がてら残します。
手順1:取得したい情報を決める
ディスカバリで取得したい情報ですが、以下に決めました。
・無線APのSSIDごとのクライアント数
対象の機器はCiscoの無線APなので、今回はSNMPによる取得ですね。
次にディスカバリ作成に必要な情報を集めます。今回欲しいのは以下の二つ。
① SSID名を取得するOID
➁ SSIDごとのクライアント数を取得するOID
これらはsnmpwalkコマンドで取得できるので、ZABBIXサーバから実際に値を取ってきました。
### Cisco AIRESPACE-WIRELESS-MIBの例 ###
# SSID名を取得するOID
[unchiman@zabbix111 ~]$ snmpwalk -v 2c -c $COMMUNITYNAME -On 192.168.XX.XX bsnDot11EssSsid
.1.3.6.1.4.1.14179.2.1.1.1.2.1 = STRING: MainSSID
.1.3.6.1.4.1.14179.2.1.1.1.2.2 = STRING: SubSSID
# SSIDごとのクライアント数を取得するOID
[unchiman@zabbix111 ~]$ snmpwalk -v 2c -c $COMMUNITYNAME -On 192.168.XX.XX bsnDot11EssNumberOfMobileStations
.1.3.6.1.4.1.14179.2.1.1.1.38.1 = Counter32: 6
.1.3.6.1.4.1.14179.2.1.1.1.38.2 = Counter32: 0
ディスカバリに設定するOIDはインデックス部(末尾の数字)を除くので、以下のみでOK。
# SSID名を取得するOID
.1.3.6.1.4.1.14179.2.1.1.1.2
# SSIDごとのクライアント数を取得するOID
.1.3.6.1.4.1.14179.2.1.1.1.38
手順2:ディスカバリを作成する
実際にディスカバリを作成していきます。
まずは [データ収集] > [テンプレート] > 任意のテンプレートの[ディスカバリ] > [ディスカバリルールの作成] を押下し、新規でディスカバリを作成します。
ここで重要なのが [SNMP OID] の部分。ここでマクロを定義することで、このディスカバリ配下に作成したアイテムで同じ名前のマクロを使用することができます。
今回はSSIDごとにアイテムを取得する=アイテム名にSSID名を入れたいので、以下のように{#SSIDNAME}というマクロを定義しました。対応するOIDは先ほど取得した「SSID名を取得するOID」ですね。
# SNMP OID
discovery[{#SSIDNAME},.1.3.6.1.4.1.14179.2.1.1.1.2]

テンプレートを作成したら、次はアイテムの作成です。
いま作成したディスカバリの [アイテムのプロトタイプ] > [アイテムのプロトタイプの作成] を押下します。
ここでの肝は [名前] [キー] [SNMP OID] の三つ。
[名前] には先ほど定義したマクロが使えるので、ここで設定しておくと取得したアイテムに自動でSSID名が振られます。
[キー] と [SNMP OID] にはSSID名に対応したインデックス値を設定するので、デフォルトで入っている{#SNMPINDEX}というマクロを使います。なお [SNMP OID] には前項で取得した「SSIDごとのクライアント数を取得するOID」を使用します。
# 名前
SSID {#SSIDNAME}:クライアント数
# キー
cbw150ax.bsnDot11EssNumberOfMobileStations.[{#SNMPINDEX}]
# SNMP OID
.1.3.6.1.4.1.14179.2.1.1.1.38.{#SNMPINDEX}

手順3:取得データの確認
これでディスカバリの作成が完了しました。
[監視データ] > [最新データ] に遷移し、正しく値が取れていればOK!

※セキュリティ上の理由からSSID名にモザイクをかけていますが、内容は正しく表示されています。
サンプル
本手順で作成したディスカバリを含むテンプレートを作ったので置いておきます。
以上
Discussion