Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ZABBIX-JP Study#5 Zabbix2.0rc1 SNMP Traps

30,805 views

Published on

第5回 ZABBIX-JP勉強会
Zabbix 2.0 新機能レビュー : snmp-trap 監視をGW中に機能評価してみる

Published in: Technology
  • Be the first to comment

ZABBIX-JP Study#5 Zabbix2.0rc1 SNMP Traps

  1. 1. 第5回 ZABBIX-JP 勉強会 12th May 2012 Sat.Zabbix 2.0 新機能レビューSNMP Traps 監視設定レビュー Haruyoshi CHIYODA @halchiyo
  2. 2. 自己紹介Name 千代田 晴良 (Haruyoshi CHIYODA) Zabbix Certified Specialist + Large Env.(2012/09)Twitter @halchiyoBlog http://log4hc.wordpress.com/ IDCフロンティア エンジニアExperience with Zabbix – 2010/07 ~ とあるお客様の専用監視システムの一部に提案・ 構築 – 2011/01 ~ Operating (ver.1.8.3 by MIRACLE LINUX) – Current New values per sec. = 1400 over (stable) 2
  3. 3. Agenda SNMP Traps 監視機能レビュー1. Zabbix 2.0 SNMP Traps 紹介2. SNMP Traps インストール手順3. Lessons learned4. FEATURE REQUESTS 3
  4. 4. Zabbix SNMP Traps 紹介 4
  5. 5. Zabbix SNMP Traps Zabbix SNMP Traps• Support from ver. 2.0.0• 1.8系では zabbix_sender を利用したカスタマイズによる 実装• 2.0 からより容易な形で実装 – Integration with SNMPTT (SNMP Trap Translator) – 2 Items add • snmptrap.key[regex] • snmptrap.fallback 5
  6. 6. How Zabbix & SNMPTT are integrated to process a trap snmptrapdSNMPTT zabbix_server action action snmptthandler trigger trigger Trap spool Dir. snmptrap[] snmptrap.fallback snmpttsnmptt_conf_files snmp trapper SNMPTrapperFile Log Message Format %H:%M:%S %Y/%m/%d trap-oid severity “category” ZBXTRAP IP translated-trap 6
  7. 7. Screen Shot - SNMPTrapperFileこのログファイルがZabbixのアイテムにより読み込まれます 7
  8. 8. Screen Shot – History of events Local time Timestamp = = TrapローカルタZabbix検知時刻 イム 以下を比較し、一致するホストで 取扱 “ZBXTRAP [address]”• [address] はイベント処理時に切り離し• SNMP IFのIP/DNS 8
  9. 9. Screen Shot – LATEST DATA 9
  10. 10. Screen Shot - Triggers 10
  11. 11. Install 手順紹介 11
  12. 12. 何はともあれ Zabbix 2.0 を確保しましょうabbix 2.0.0RC1 セットアップは此方を参照ください http://www.slideshare.net/BlueSkyDetector/zabbix20 12
  13. 13. How to - SNMPTT Integration Zabbix SNMP Traps 構築/設定の概要 Setup Zabbix 2.0 & configure Step 1 SNMPTT ログファイルの書き出し先を読み取れるよう、 Zabbix server (proxy) の設定を行います。 Install SNMPTT & Startup snmptrapd Step 2 SNMPTT のセットアップを行います。さらに、 snmptrapd を SNMPTT が連携するよう設定します。 Add SNMPTT Config Files Step 3 SNMP Trap をメッセージ変換するために、 SNMPTT Trap ファイルを追加します。 Add Item, Trigger Setup Step 4 SNMPTT ログファイルを検出し、重要度に準じたトリガー出 できるよう、アイテムとトリガーを設定し、ホストとリンク ※ この後の紹介は CentOS 6.x (i686)での手順紹介です。他Distrosはご自分でお試しください 13
  14. 14. Step1 : Setup Zabbix 2.0 & configure Step 1 : Zabbix Server の設定Zabbix server 設定ファイルを変更 # vi /etc/zabbix/zabbix_server.conf 以下の行を追 加 SNMPTrapperFile=/var/log/snmptt/snmptt.log StartSNMPTrapper=1Zabbix server 再起動で、上記設定を反映 # service zabbix-server restart zabbix_server.conf を 2箇所 変更するだけ ※ Zabbix 公式ドキュメントとは SNMPTrapperFile の Path が異なります。 (SNMPTT 標準を採用 14
  15. 15. Step2 : Install SNMPTT & Startup snmptrapd (1) Step 2 : SNMPTT 環境構築レポジトリ (Repoforge) 追加 # cd /usr/src/ # wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2- 2.el6.rf.i686.rpm # rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt # rpm -K rpmforge-release-0.5.2-2.el6.rf.i686.rpm # rpm -i rpmforge-release-0.5.2-2.el6.rf.i686.rpmSNMPTTインストール要件整備 (主にPerl環境) # yum install net-snmp-utils # yum install net-snmp-perl # yum install perl # yum install perl-Net-SNMP # yum install perl-Config-IniFiles Perl 環境 重要 # yum install perl-Module-Build # yum install perl-Time-HiRes ※ CPU Architecture の選択に注意ください。 15
  16. 16. Step2 : Install SNMPTT & Startup snmptrapd (2)SNMPTT ユーザ追加 # useradd –s /sbin/nologin snmpttSNMPTTインストール # cd /usr/src/ # wget http://sourceforge.net/projects/snmptt/files/snmptt/snmptt_1.3/snmptt_1 .3.tgz/download # tar xvzf snmptt_1.3.tgz # cd snmptt_1.3 # cp snmptt /usr/sbin # cp snmptthandler /usr/sbin/ # cp snmptt.ini /etc/snmp/ # cp snmpttconvertmib /usr/sbin/ ダウンロードして # chmod 755 /usr/sbin/snmptt 解凍して # chmod 755 /usr/sbin/snmptthandler コピーするだけ # chmod 755 /usr/sbin/snmpttconvertmib ※ SNMPTT は Daemon モードでのセットアップ手順を記載しています。 16
  17. 17. Step2 : Install SNMPTT & Startup snmptrapd (3)SNMPTT ログディレクトリ追加 # mkdir /var/log/snmptt 変換された # chown snmptt:snmptt /var/log/snmptt メッセージの出力 先SNMPTT spool ディレクトリ追加 # mkdir /var/spool/snmptt/ SNMPTT spool # chown snmptt:snmptt /var/spool/snmptt/ ディレクトリ作成SNMPTT Startup Script 設定追加 # cp snmptt-init.d /etc/rc.d/init.d/snmptt # chkconfig --add snmptt # chkconfig --level 2345 snmptt on コピーするだけSNMPTT LOG Rotate 設定追加 # cp snmptt.logrotate /etc/logrotate.d/snmptt 17
  18. 18. Step2 : Install SNMPTT & Startup snmptrapd (4)snmptt.conf ファイル追加 どの条件にも # vi /etc/snmp/snmptt.conf 一致しなかった場 合のデフォルト ルール 以下の行を追 加 EVENT general .* “LOGONLY” Normal FORMAT ZBXTRAP $aA $ar にて未定義のイベント受信。$-* 18
  19. 19. Step2 : Install SNMPTT & Startup snmptrapd (5) Trap受信時にsnmptrapd.conf ファイル編集 snmptthandler を # vi /etc/snmp/snmptrapd.conf 呼び出すための設 定 以下の行を追 加 traphandle default /usr/sbin/snmptthandler disableAuthorization yessnmptrapd startup script 編集・サービス起動 # vi /etc/rc.d/init.d/snmptrapd 以下変更点(色つきオプション追加) # OPTIONS="-Lsd -p /var/run/snmptrapd.pid" OPTIONS="-m +ALL -Lsd -On -p /var/run/snmptrapd.pid" Trap OID を サービス起動 オブジェクト変換 # service snmptrapd restart せず数字で扱うよ # chkconfig --level 2345 snmptrapd on うにする # service snmptrapd start “-On” 19
  20. 20. Step2 : Install SNMPTT & Startup snmptrapd (6)snmptt.ini 変更・サービス再起動 # vi /etc/snmp/snmptt.ini以下変更点(標準から変更した点、追加した点のみ記載) mode = daemon net_snmp_perl_enable = 1 net_snmp_perl_best_guess = 2 sleep = 1 DEBUGGING = 1 date_time_format = %H:%M:%S %Y/%m/%d DEBUGGING_FILE = /var/log/snmptt/snmptt.debug DEBUGGING_FILE_HANDLER = /var/log/snmptt/snmptthandler.debugSNMPTT サービス起動 # service snmptt start 20
  21. 21. Step2 : Install SNMPTT & Startup snmptrapd (7)一度動作テスト# snmptrap -v 1 -c public localhost .1.3.6.1.2.1.11 192.168.100.100 2 0 .1.3.6.1.2.1.2.2.1.1.1 i 7現状の設定であれば、以下のようにログに出力される。# tail -1 /var/log/snmptt/snmptt.log23:30:21 2012/05/07 .1.3.6.1.6.3.1.1.5.3 Normal "LOGONLY"192.168.100.100 - ZBXTRAP 192.168.100.100 127.0.0.1 にて未定義のイベント受信。.1.3.6.1.6.3.1.1.5.3 ifIndex.1 (INTEGER32):7 Step 2 完了 注意点 • Perl関連パッケージインストールもれ • spoolおよびlogのディレクトリパーミッション 21
  22. 22. Step 3, Step 4 : Case Senario SNMPTT, item, trigger 設定 Add SNMPTT Config Files Step 3 SNMP Trap をメッセージ変換するために、 SNMPTT Trap ファイルを追加します。 Add Items, Triggers Step 4 SNMPTT ログファイルを検出し、重要度に準じたトリガー出 できるよう、アイテムとトリガーを設定し、ホストとリンク ケース・シナリオ 以下のようなパターンの設定を考えてみる • SNMPTTの機能と、Zabbixの機能をそれぞれ生かした設 定 • Generic トラップ用の設定 22
  23. 23. SNMPTT.conf Files Format (1) snmptt.conf ファイル書式coldStart を例にしたSNMPTT コンフィグファイルフォーマット # EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal FORMAT A coldStart trap signifies that the SNMP entity, $* SDESC A coldStart trap signifies that the SNMP entity, supporting a notification originator application, is reinitializing itself and that its configuration may have been altered. EDESC # 事前スクリプト処理 入力定義 出力定義 説明 ・PREEXEC • EVENT • Category • SDESC ~ • NODE • Severity EDESC 事後スクリプト処理 • MATCH • FORMAT ・EXEC ※ 詳細はSNMPTTのサイトをご参照ください。 23
  24. 24. SNMPTT.conf Files Format (2)Category と Severity # EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal FORMAT A coldStart trap signifies that the SNMP entity, $* …………… Category Severity • 運用ルールきめておけば自由 • 運用ルールきめておけば自由 でOK でOK • 定義ファイルご別とか、エン • よくあるパターンでは以下の タープライズ別に定義すると 5種 便利 • Critical • Major • 特別なカテゴリ • Minor • “IGNORE” • Warning ⇒ 変換自体されません • Normal • “LOGONLY” 24
  25. 25. Step3 : Add SNMPTT Config Files (1) snmpttconvertmib MIB File ⇒ SNMPTT configurationsnmpttconvertmib により、SNMPTT設定を作成 # snmpttconvertmib --in=/usr/share/snmp/mibs/IF-MIB.txt -- out=/etc/snmp/IF-MIB.conf.org --net_snmp_perl # snmpttconvertmib --in=/usr/share/snmp/mibs/SNMPv2-MIB.txt -- out=/etc/snmp/SNMPv2-MIB.conf.org --net_snmp_perl # cd /etc/snmp/ # sed -e "s/^FORMATs/FORMAT ZBXTRAP $aA /g" IF-MIB.conf.org > IF- MIB.conf # sed -e "s/^FORMATs/FORMAT ZBXTRAP $aA /g" SNMPv2-MIB.conf.org > SNMPv2-MIB.conf (スクリプトで一括変換が吉。細かいところは手で編集。) 25
  26. 26. Step3 : Add SNMPTT Config Files (2)結局こんな感じにしてみました。#EVENT coldStart .1.3.6.1.6.3.1.1.5.1 “Generic" MajorFORMAT ZBXTRAP $aA coldStart 検知 (SNMPv2-MIB)SDESCA coldStart trap signifies that the SNMP entity,supporting a notification originator application, isreinitializing itself and that its configuration mayhave been altered.EDESC# FORMAT Category / SeverityZBXTRAP $aA 分かりやすいメッセージが • “Generic”Zabbix 連携では 第一 • Majorイベント必須のおまじない として定義 他OIDについてもそれぞれ同様に定義して。。。 26
  27. 27. Step3 : Add SNMPTT Config Files (3)snmptt.ini 変更・サービス再起動 # vi /etc/snmp/snmptt.ini 以下変更点(色つきの箇所) [TrapFiles] …省略… # and filename. Ex: /etc/snmp/snmptt.conf snmptt_conf_files = <<END /etc/snmp/snmptt.conf 増やしたconf /etc/snmp/IF-MIB.conf ファイル追加 /etc/snmp/SNMPv2-MIB.conf END 設定リロード reload で読込 # service snmptt reload Step 3 完了 注意点 • ZBXTRAP $aA 書き忘れ • *.conf ファイルロード忘れ 27
  28. 28. Step4 : Add Items, Triggers (1) Flow design – log, Items Triggers snmptt.log item trigger… Critical “Generic” … snmptrap[ Critical “Generic” ] Disaster… Major “Generic” … snmptrap[ Major “Generic” ] High… Minor “Generic” … snmptrap[ Minor “Generic” ] Average… Warning “Generic” … snmptrap[ Warning “Generic” ] Warning… Normal “Generic” … snmptrap[ Normal “Generic” ] Information… xxx “xxx” … snmptrap.fallback --- (none) --- 28
  29. 29. Step4 : Add Items, Triggers (2) Items : snmptrap.fallback Key Snmptrap.fallback Type of Information Log Log time format hh:mm:ss yyyy/MM/dd Applications SNMP Traps 29
  30. 30. Step4 : Add Items, Triggers (3) snmptrap[ Critical "Generic" ] Key Snmptrap[ Critical “Generic” ] Type of Information Log Log time format hh:mm:ss yyyy/MM/dd Applications SNMP Traps - Generic 30
  31. 31. Step4 : Add Items, Triggers (3) {Template_SNMPTrap-Generic:snmptrap[ Critical "Generic" ].regexp(.*)}=1 Name {HOSTNAME}…{ITEM.VALUE} Exception {template:item.regrep(.*)}=1 Multiple PLOBLEM Yes Severity Disaster 31
  32. 32. SNMPTT Items List Items for TEST 32
  33. 33. SNMPTT Triggers List Triggers for TEST Step 4 完了 33
  34. 34. Lessons Learned 34
  35. 35. Lessons learned (1)• SNMPTT の Category 単位でテンプレートは作成して、ア プリ、キーを作成しておくと便利かも 1. カテゴリ増やすたびにテンプレートxmlをエクスポート 2. Generic の文字列を New Category を置換 3. インポートして完了 …みたいな• ヒストリに蓄積されるのは SNMP IF の Default のみ – SNMP IFの設定変更時は注意!!! – アイテム収集が止まらないかテストすべし!!!• snmptrap[regrex]で『正規表現機能』は使えない? – “regex” と <regexp>とは違うらしい – 正規表現が使えないので柔軟に絞り込めません• snmptt.logを見ないと分からない事はあります。絶対。 35
  36. 36. Lessons learned (2)• 1つのアイテムsnmptrap[] に、複数トリガーの正規表現を 割り当てて Severity 付け替えようとして失敗。 – 重要度がより良い状態に遷移する時点で複数のトリガーが併発 • 意図した Severity のイベント • 意図していない Recovery イベント – これを逆手に狙ってRecoveryを出せるかもしれないが、ちと大変 – Log形式のイベント全般で同じかもしれない 36
  37. 37. FEATURE REQUESTS 37
  38. 38. FEATURE REQUESTS(1)Please support <regexp> at “snmptrap[]”.I want to use complex regular expressions pattern by "regular expressions". • SNMP Trap は、基本的に仕様がブラックボックス – MIB≠Trap仕様(MIBは翻訳を手助けするだけ) – どのIF IPがSNMP Agent Address(v1)になる? – Trap発生条件 – VarBindの仕様(どんな情報が何番目に入る?) – 全ての状況を再現できない ⇒ できるテストに限界がある • ゆるい条件で運用開始し、運用を通じて除外やフォーマッ ト変更を続ける必要がある • Zabbixでは柔軟なフィルターと強力なトリガー判定が重要 – SNMPTTの定義を変えずZabbixアイテムで除外できないと手間 38
  39. 39. FEATURE REQUESTS(2) Please cut off trap-oid from the SNMPTT message.Log Message Format%H:%M:%S %Y/%m/%d trap-oid severity “category” ZBXTRAP IP translated-trap ココも無いほうが “ZBXTRAP [address]” 切り離し 見やすい • SNMPTTがメッセージから読みたい • 見たい人はFORMATで出力定義できる (LOG見れば充分) 39
  40. 40. summary 40
  41. 41. Summary – Zabbix SNMP Traps• Zabbix 2.0 + SNMPTT で SNMP Trap 監視が簡単に!!! • SNMPTT: メッセージ変換 (一部フィルター) • Zabbix: ホスト別のフィルター、連携アクショ ンの実現• Low-Level Discovery による登録自動化• 本来持っていたのSNMP監視機能 • Dynamic Index • 多彩なトリガー条件式(頭つかえば動的な閾値設定 可) NW監視 でも Zabbix 2.0 は期待大!!! 41
  42. 42. Thank you 42

×