【Zabbix】ポート毎にlinkup/linkdown検知をする

はじめに

ZabbixにてL2スイッチのポート毎にlinkup/linkdownを検知する設定方法を記載します。

やりたいこと

特定のポートのlinkdownで障害を検知、linkupで障害検知後60秒でダッシュボード上から消えるようにする。
また、GigabitEthernet x/0/xxのポートのみ監視する。
(loopbackやBluetooth等は監視しない)
linkup/linkdown以外のsnmptrapについては、アイテムとして収集はするが、アラート検知はしない。

  • Gi1/0/1でlinkdownを検知する
    →Gi1/0/1としてinkdown検知
  • Gi1/0/2でlinkdownを検知する
    →Gi1/0/2としてlinkdown検知(Gi1/0/1のlinkdownとは別の障害)
  • Gi1/0/1でlinkupを検知する
    →Gi1/0/1でlinkupを検知、Gi1/0/1のlinkdown障害はダッシュボードから消える
  • Gi1/0/1で障害が起きないまま60秒が経過
    →Gi1/0/1のlinkup障害がダッシュボードから消える

まとめ

  • [一般設定]の[マクロ]にSNMPコミュニティのマクロを作成する
  • 監視対象ホストを作成する
  • テンプレートを作成する
    • テンプレートのアイテムにて、snmptrapを全て収集するように設定する
    • ディスカバリルールにて、ポートの一覧情報を取ってくるように設定する
    • アイテムのプロトタイプにて、ポート毎にアイテムを収集するように設定する
    • トリガーのプロトタイプにて、linkup/downを検知するように設定する

検証環境

  • Zabbixサーバ:Zabbix 3.0.30
  • 監視対象:Catalyst9200L

設定方法

マクロ設定

  1. Zabbix Webインターフェースにログインする
  2. [管理] > [一般設定] > [マクロ]をクリックする
  3. 以下の項目を入力し、[更新]をクリックする
    • マクロ:{$SNMP_COMMUNITY}
    • 値:public(※監視対象のSNMPコミュニティ名)

ホスト設定

  1. [設定] > [ホスト]をクリックする
  2. [ホストの作成]をクリックする
  3. 以下の項目を入力・選択し、[追加]をクリックする
    • ホスト名:TEST-C9200L(※任意の文字列)
    • 表示名:空白(※デフォルト値)
    • グループ or 新規グループ作成:TEST(※任意の文字列)
    • エージェントのインターフェース:使用しない場合は[削除]をクリック
    • SNMPインターフェース:[追加]をクリックし、以下項目を入力する
      • IPアドレス:192.168.1.2(※監視対象のIPアドレス)
      • DNS名:空白(※デフォルト値)
      • 接続方法:IPアドレス(※デフォルト値)
      • ポート:161(※デフォルト値)
      • 標準:チェック
    • 説明:空白(※デフォルト値)
    • プロキシによる監視:(プロキシなし)(デフォルト値)
    • 有効:☑

テンプレート作成

テンプレートの作成

  1. Zabbix Webインターフェースにログインする
  2. [設定] > [テンプレート] をクリックする
  3. [テンプレートの作成] をクリックする
  4. 以下の項目を入力し、[追加]をクリックする
    • テンプレート名:TEST-C9200L_TRAP(※任意の文字列)
    • グループ or 新規グループ作成:TEST(※任意の文字列)

アイテムの作成

  1. 「TEST-C9200L_TRAP」の[アイテム]をクリックする
  2. [アイテムの作成]をクリックする
  3. 以下の項目を入力し、[追加]をクリックする
    • 名前:TEST-C9200L_snmptrap(※任意の文字列)
    • タイプ:SNMPトラップ
    • キー:snmptrap[]
    • データ型:ログ
    • ヒストリ保存期間(日):90(※デフォルト値)
    • ログの時間の形式:YYYY/MM/dd hh:mm:ss
    • アプリケーションの作成 or アプリケーション:空白(※デフォルト値)
    • 説明:空白(※デフォルト値)
    • 有効:☑

ディスカバリルール作成

ディスカバリルールの作成

  1. 「TEST-C9200L_TRAP」の[ディスカバリ]をクリックする

  2. [ディスカバリルールの作成]をクリックする

  3. 以下の項目を入力・選択する1

  • 名前:Network Interfaces Discovery(※任意の文字列
  • タイプ:SNMPv2エージェント
  • キー:net.if.discovery
  • SNMP OID:
    discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFNAME},1.3.6.1.2.1.31.1.1.1.1,{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3]
  • SNMPコミュニティ:{$SNMP_COMMUNITY}
  • ポート:空白
  • 更新間隔(秒):60(※デフォルト値:3600)
    • 更新を確認したらデフォルト値に戻す
  • 存在しなくなったリソースの保持期間(日):30
  • 説明:
    Discovering interfaces from IF-MIB. Interfaces are not discovered:
    - with down(2) Administrative status
    - with notPresent(6) Operational status
    - loopbacks(※任意)
  • 有効:☑
    ※Zabbix 4.0の標準テンプレートの『 Template Module Interfaces SNMPv2』に設定されている ディスカバリルール『 Network Interfaces Discovery』と同一
  1. フィルターをクリックし、以下の項目を入力し、[追加]をクリックする
    • 計算のタイプ23:And/Or(※デフォルト値)
      • And:すべての条件を満たす
      • Or:いずれかの条件を満たす
      • And/Or:同一マクロ名ではOr、異なるマクロ名ではAndを使用する
    • フィルタ:
      {#IFDESCR}=GigabitEthernet[0-9]\/[0-9]\/(.|..)$

アイテムのプロトタイプの作成

  1. 「Network Interfaces Discovery」の[アイテムのプロトタイプ]をクリックする
  2. [アイテムのプロトタイプの作成]をクリックする
  3. 以下項目を入力・選択し、[追加]をクリックする
    • 名前:TEST-C9200L_{#IFNAME}_snmptrap(※任意の文字列)
    • タイプ:SNMPトラップ
    • キー:snmptrap[{#IFDESCR}($|\s)]45
    • データ型:ログ
    • ヒストリの保存期間(日):90
    • ログの時間の形式:YYYY/MM/dd hh:mm:ss
    • アプリケーションの作成 or アプリケーション:空白(※デフォルト値)
    • アプリケーションプロトタイプの作成 or アプリケーションプロトタイプ:空白(※デフォルト値)
    • 説明:空白(※デフォルト値)
    • 有効:☑

トリガーのプロトタイプの作成

  1. 「Network Interfaces Discovery」の[トリガーのプロトタイプ]をクリックする
  2. [トリガーのプロトタイプの作成]をクリックする
  3. 以下項目を入力し、[追加]をクリックする
    • 名前:TEST-C9200L_{#IFNAME}_LinkDown(※任意の文字列)
    • 条件式:
      {TEST-C9200L_TRAP:snmptrap[{#IFDESCR}($|\s)].iregexp("Link Down")}<>0
    • 障害イベントを継続して生成:☑
    • 説明:空白(※デフォルト値)
    • URL:空白(※デフォルト値)
    • 深刻度:警告(※任意の深刻度)
  4. 3と同様に、以下項目を入力し、[追加]をクリックする
    • 名前:TEST-C9200L_{#IFNAME#}_LinkUp(※任意の文字列)
    • 条件式:
      TEST-C9200L_TRAP:snmptrap[{#IFDESCR}($|\s)].nodata(60)}=0 and {TEST-C9200L_TRAP:snmptrap[{#IFDESCR}($|\s)].iregexp("Link Up")}0
    • 障害イベントを継続して生成:□
    • 説明:空白(※デフォルト値)
    • URL:空白(※デフォルト値)
    • 深刻度:情報(※任意の深刻度)

テンプレート適用

  1. [設定] > [ホスト]をクリックする
  2. 「TEST-C9200L」をクリックする
  3. [テンプレート]をクリックする
  4. 「新規テンプレートをリンク」にて[選択]をクリックし、「TEST-C9200L_TRAP」を選択し、[追加]をクリックする
  5. [更新]をクリックする

確認

  1. 「TEST-C9200L」の[アイテム]をクリックし、ポート毎のアイテム取得が正常に行われていることを確認する
  2. ディスカバリルールの作成」を参考に、更新間隔をデフォルトの「3600」に戻す

参考資料

1ではキーとして{#IFNAME}を使用している。
​ しかし、検証環境ではポートの名称が省略しない形(GigabitEthernet1/0/1)で出力されたため、{#IFDESCR}を用いる。

ツイッターでシェア
みんなに共有、忘れないようにメモ

batica@初心者はここからわかりません。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント