Cisco機器のSNMP TrapをZABBIXで取得できるようにしてみる1



自宅のzabbixでSNMP Trapを受信し、Trapをzabbix上に表示するようにしたので、その時設定したときのメモを残しておく。

めちゃめちゃ長くなるので2部構成です。。。
この記事ではSNMP Trapを受信し、ログに残すところまでを行う。

目次

 
 

概要

SNMP Trapをzabbixのトリガー画面に表示させるには、ざっくり以下のような感じで表示を行っている。
1.監視している機器がSNMP Trapを送信
2.「snmptrapd」というデーモンがSNMP Trapを受け取る
3.「snmptrapd」はTrapを受信したら「snmptthandler」というスクリプトを実行する
4.スクリプトはMIBファイルをもとに生成した設定ファイルを基に「snmptt.log」にログを書き込む
5.zabbixが「snmptt.log」にログが書き込まれたのを検知した時、ログを基にzabbixのトリガー画面に表示する

つまり、zabbix単体ではSNMP Trapの監視を行うことができず、これを実現するには「snmptrapd」「snmptt」という2つのサービスを導入する必要がある。

 
 

導入環境

導入するサーバ/NW機器の環境は以下の通り。zabbixはあらかじめ導入されている。

  • OS : CentOS7
  • zabbixバージョン : zabbix-server3.0.8
  • SNMP Trap送信機器 : WS-C3750E-48TD (IOS ver: 12.2(44r)SE3)
  • SNMPコミュニティストリング : public
  •  
     
    zabbixは/opt配下に配置されており、今回導入する「snmptrapd」「snmptt」も/opt配下へ導入する。(バックアップが容易になるため)
    /opt/
    L openssl-1.0.2k/
    L zabbix-server3.0.8/

     
     

    snmptrapd導入

    1. http://www.net-snmp.org/download.htmlから最新バージョンのnet-snmpをダウンロードする。(この記事を書いたときのバージョンは5.7.3)
     
     
    2. ダウンロードしたアーカイブを展開し、コンパイルする。prefixで/opt配下にインストールされるように指定する。また、./configure実行後、対話形式で設定値を入力する場面がでてくるので、必要に応じて入力。

     
     
    3.make, make installを実行し、インストール

     
     
    4./opt配下へ移動し、設定ファイルやログを格納するディレクトリを作成。

     
     
    5.snmptrapd.confをエディタで開き編集する。

    以下の内容を記述。

     
     
    6.systemctlコマンドでsnmptrapdを実行できるようにしたいため、「/usr/lib/systemd/system/」配下に以下の内容のファイルを作成する。

    以下の内容を記述。

     
     
    7.起動オプションを格納するファイルを作成する。

    以下の内容を記述。

     
     
    8.iptablesの設定ファイルを開き、udp/162のポートの通信を許可する設定を記述

    以下の内容を追加。

     
     
    9./etc/profileを開き、PATH環境変数に「/opt/net-snmp-5.7.3/sbin/」「/opt/net-snmp-5.7.3/bin/」を追加するように設定する。(サーバが再起動してもパスを保持する為)
    また、将来追加するsnmpttのコマンドのパスもあらかじめ渡しておく。(/opt/snmptt_1.4/bin/)

    以下の内容を追加。

     
     
    10.sourceコマンドで「/etc/profile」を実行し、PATHを通す。

     
     
    11.「systemctl daemon-reload」を実行した後、iptablesを再起動させ、snmptrapを起動させる。

    12.「snmpwalk」コマンドを実行し、結果がちゃんと返ってくればsnmptrapdは正しく導入されている。

     
     

    snmptt導入

    まずCPANを導入し、「Config::IniFiles」「Sys::Syslog」をインストールする必要があるので先にそれらを行う。ついでにnet-snmp-libsもインストールする。
    1.yumでcpanをインストール

     
     
    2.「Config::IniFiles」「Sys::Syslog」の各モジュールをインストールする。

     
     
    ※「Can’t call method “http” on unblessed reference at /usr/share/perl5/CPAN/FirstTime.pm line 1866」みたいなエラーが出てきてインストールできない場合
    http://search.cpan.org/dist/CPAN/lib/CPAN/FirstTime.pmからCPAN-X.XX.tar.gzをダウンロードする。(この記事を書いた時点では2.16)
     
     
    ■アーカイブを展開する。

     
     
    ■展開したフォルダにある「FirstTime.pm」を「/usr/share/perl5/CPAN/」配下へコピーする。

     
     
    ■項番2を再度実行してみる。
     
     
    3.https://ja.osdn.net/projects/sfnet_snmptt/releases/から「snmptt_X.X.tgz」をダウンロードし、/opt/download配下配置する。(因みにこの記事を書いている時点での最新バージョンは1.4)
     
     
    4.アーカイブを展開する。

     
     
    5.カレントディレクトリを「/opt」へ移動し、snmpttのファイルを所定の位置にコピーする。(/opt/snmptt_1.4/配下へ配置するようにする)

     
     
    6.「snmptrapd.conf」を以下のように編集し保存する。

    最終行に「traphandle…」を追加する。

     
     
    7.以下のMIBファイルをダウンロードして、/opt/net-snmp-5.7.3/share/snmp/mibs/配下へ配置する。

  • CISCO-GENERAL-TRAPS
  • ftp://ftp.cisco.com/pub/mibs/v1/CISCO-GENERAL-TRAPS.my

  • OLD-CISCO-SYSTEM-MIB
  • ftp://ftp.cisco.com/pub/mibs/v1/OLD-CISCO-SYSTEM-MIB.my

  • OLD-CISCO-INTERFACES-MIB
  • ftp://ftp.cisco.com/pub/mibs/v1/OLD-CISCO-INTERFACES-MIB.my

  • OLD-CISCO-TS-MIB
  • ftp://ftp.cisco.com/pub/mibs/v1/OLD-CISCO-TS-MIB.my

  • OLD-CISCO-TCP-MIB
  • ftp://ftp.cisco.com/pub/mibs/v1/OLD-CISCO-TCP-MIB.my

  • CISCO-SYSLOG-MIB
  • ftp://ftp.cisco.com/pub/mibs/v2/CISCO-SYSLOG-MIB.my

  • CISCO-SMI
  • https://www.cisco.com/iam/PGW_MIBS/973/CISCO-SMI.my
     
     
    8.「snmpttconvertmib」でMIBファイルから、snmpttの設定ファイルを生成するのだが、このままのフォーマットだとzabbix側から読み取れないフォーマットとなってしまうのでスクリプトの改造を行う。まず、既存の「snmpttconvertmib」のバックアップを取る。

     
     
    9.「snmpttconvertmib-zbx」を以下のように改造していく。

    814行付近に修正する行がある。エディタの検索機能を使って該当行を探し出す。

     
     
    10.MIBファイルからsnmptt設定ファイルを生成する。

     
     
    11.「snmptt.ini」を編集する。

    変更をした設定値のみ下に表示している。

     
     
    12.systemctlコマンドでsnmpttを実行できるようにしたいため、「/usr/lib/systemd/system/」配下にファイルを作成する。

    以下の内容で編集する。

     
     
    13.起動オプションを格納するファイルを作成する。

    以下の内容で編集する。

     
     
    14.snmptrapdがSNMP Trapを受け取ったときに実行するスクリプト「snmptthandler」を少し改造する。「$ini」の定義の所を実際に配置されているiniのパスを入力する。

    以下の行に変更を加える

     
     
    15.ユーザを作成し、snmptt_1.4フォルダのアクセス権を変更する。

     
     
    16.「systemctl daemon-reload」を実行した後、snmpttを起動させ、さらにsnmptrapdを再起動させる。

     
     

    Cisco機器側の設定 & SNMP Trap確認

    1.Cisco機器側に下のコンフィグを投入する。これだけ設定しておけばSNMP Trapは送信される。

     
     
    2.今回は試しにインターフェイスのdown/upのTrapを拾ってみる。好きなポートにno shutdownコンフィグを投入する。

     
     
    3.zabbixサーバ側で「/opt/snmptt_1.4/var/log/snmptt.log」をリアルタイムで監視する。

     
     
    4.項番2で指定したポートにPCのつながったLANケーブルを挿してみてLinkUPさせる。tailコマンドで監視しているログに以下のようなものが出てくればTrap送信は正常に行われている。(ここでは192.168.100.254がSNMP Trapを送信した機器となる)

     
     
    これで、受信したTrapをログに残すところまでは完了した。次回の記事ではそのログをもとにzabbixで参照し、トリガーが表示される所まで行う。

    ※続きはこちら
    Cisco機器のSNMP TrapをZABBIXで取得できるようにしてみる2

    Leave a Reply

    Your email address will not be published. Required fields are marked *