Zabbix伺服器上的SNMP陷入配置

來源:互聯網
上載者:User

在前面,我們提到並在被監控裝置或代理上配置了SNMP陷入。與Zabbix伺服器可以直接支援SNMP查詢不一樣,對於SNMP陷入,我們需要在Zabbix伺服器(或者Proxy 伺服器)上配置並啟動SNMP陷入服務,Zabbix系統才能使用SNMP陷入的方法採集監控資料。

u Zabbix系統中SNMP陷入的工作流程

被監控裝置上的SNMP服務代理無法直接向Zabbix服務端或代理髮送SNMP陷入資訊,它需要藉助第三方服務或外掛程式才能完成這個功能。以下Zabbix系統中SNMP陷入的工作流程。

1、 snmptrapd進程接收到來自被監控裝置或代理上的SNMP代理髮送過來的SNMP陷入;

2、 snmptrapd將接收到的陷入資訊傳送給SNMP陷入轉譯器(SNMPTT,SNMP Trap Translator)或用Perl編寫的陷入接收器(Zabbix軟體包裡附帶這個接收器程式);

3、 SNMPTT或Perl接收器解析接收到的陷入資訊,並按照一定格式進行格式化,之後將格式化後的陷入資訊寫入指定的陷入資訊檔中;

4、 Zabbix服務的SNMP陷入器讀取並解析這個陷入資訊檔;

5、 Zabbix從每條陷入資訊中分離出發送陷入資訊的被監控裝置的IP地址或主機名稱;

6、 將接收到的陷入資訊與分離出來的IP地址或主機名稱對應的主機上配置的項目進行正則匹配。如果匹配監控項目,則將對應的項目設定成相應的值。如果沒有匹配到任何項目,但是配置了“snmptrap.fallback”項目,則將陷入的資訊設定到該目上;

7、 如果分離出來的IP地址或主機名稱沒有匹配到任何被監控的主機,則zabbix會產生一條沒有匹配到陷入的陷入資訊;

u SNMPTT安裝配置

通過上面的介紹,我們瞭解到Zabbix系統接收SNMP陷入需要與snmptrapd服務(該服務是net-snmp軟體包內建的服務)一起工作。snmptrapd服務通過其內嵌的機制——Perl指令碼或SNMPTT將接收到的SNMP陷入傳送給Zabbix伺服器(或伺服器代理)進程的。如果使用Perl指令碼進行SNMP陷入資訊的轉譯,則要求在編譯net-snmp時顯示的添加內嵌Perl支援,即在編譯net-snmp軟體包時使用--enable-embedded-perl編譯選項。而我們在介紹安裝net-snmp包時使用的yum安裝的,預設情況下使用二進位方式安裝的net-snmp軟體包是不支援內嵌Perl的(在net-snmp5.4以後的版本裡支援內嵌Perl)。所以,我們在這裡介紹使用SNMPTT進行SNMP陷入轉譯的方法。

SNMP陷入轉譯器(SNMPTT,SNMP Trap Translator),是用Perl語言編寫的,供net-snmp或ucd-snmp軟體包中的snmptrapd 進程使用的SNMP陷入處理器。SNMP陷入轉譯器的主要作用是將snmptrapd捕獲的陷入資訊按照指定的格式進行轉換,並將其存成檔案形式、輸出到系統日誌、Windows系統的事件記錄甚至儲存到SQL資料庫中。下面我們來介紹SNMPTT安裝和配置的方法。

SNMPTT需要使用SNMP以及IniFiles的perl模組,所以需要首先安裝net-snmp-perl以及perl-Config-IniFiles軟體包。

shell> yum install net-snmp-perl

perl-Config_IniFiles在CentOS的預設yum源裡,而使用源碼安裝各個軟體包的依賴關係比較複雜。所以,我們使用epel源來安裝。故我們首先來配置一下epel。建立/etc/yum.repos.d/epel.repo檔案,並將下面內容複寫進該檔案後儲存。

shell> vi /etc/yum.repos.d/epel.repo

[epel]

name=Extra Packages for Enterprise Linux 5 - $basearch

#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch

mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch

failovermethod=priority

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

接下來用下面命令安裝perl-Config-IniFiles軟體包。

shell> yum install perl-Config-IniFiles

接下來,我們按照下面步驟安裝snmptt軟體包。

下載snmptt_1.4源碼包:

shell > wget http://downloads.sourceforge.net/project/snmptt/snmptt/snmptt_1.4 /snmptt_1.4.tgz?r=&ts=1389880477&use_mirror=superb-dca2

解壓軟體包:shell> tar -zxvf snmptt_1.4.tgz

shell> cd snmptt_1.4

將snmptt檔案拷貝到/usr/sbin下,並設定成可執行檔:

shell> cp snmptt /usr/sbin/

shell> chmod +x /usr/sbin/snmptt

將snmptthandler檔案拷貝到/usr/sbin下,並設定成可執行檔:

shell> cp snmptthandler /usr/sbin/

shell> chmod +x /usr/sbin/snmptthandler

拷貝snmptt設定檔snmptt.ini和snmptt.conf檔案到/etc/snmp下:

shell> cp snmptt.ini /etc/snmp/

shell> cp examples/snmptt.conf.generic /etc/snmp/snmptt.conf

建立/var/log/snmptt 和mkdir /var/spool/snmptt目錄:

shell> mkdir /var/log/snmptt

shell> mkdir /var/spool/snmptt

建立使用者並賦予上述用新使用者的屬組:

shell> useradd –s /sbin/nologin snmptt

shell> chown snmptt:snmptt /var/spool/snmptt

修改snmptt設定檔snmptt.ini下列各項:

vi /etc/snmp/snmptt.ini

修改mode = standalone 項為 mode = daemon;

修改date_time_format = 項為date_time_format = %H:%M:%S %Y/%m/%d;

修改log_system_enable = 0項為og_system_enable = 1;

修改unknown_trap_log_enable = 0 項為unknown_trap_log_enable = 1。並確認

下面所列的兩項所配置的路徑是否正確。

log_file = /var/log/snmptt/snmptt.log

log_enable = 1

u 配置snmptrap服務

首先,我們需要按照2.3.3節所介紹的方法在zabbix伺服器或Proxy 伺服器上安裝net-snmp軟體包並做相應的配置。在安裝完net-snmp軟體包以後,系統不會自動產生預設配置的net-snmp陷入進程所需要的設定檔snmptrapd.conf。所以,我們可以使用snmpconf工具來產生一個snmptrapd.conf。snmpconf工具使用比較簡單,只要按照提示回答一些提問之後,snmpconf即可為我們產生snmptrapd的設定檔。在此,我們提供一個簡化的設定檔內容,讀者只需建立/usr/share/snmp/snmptrapd.conf檔案,並將下面這段內容複寫過去即可。

donotfork yes

pidfile /var/run/snmptrapd.pid

printeventnumbers yes

traphandle default /usr/sbin/snmptthandler

ignoreauthfailure yes

authcommunity execute,log,net snmp@domain.com

接下來,因為snmptt是基於數字OID來匹配/etc/snmp/snmptt.conf檔案裡的內容,以確定是接收到了哪種陷入並將陷入資訊轉化成相應格式的。但是,在預設情況下snmptrapd會自動將接收到陷入資訊中的OID轉化成類似於: SNMPv2-MIB::coldStart這種簡化的字串形式的。而這種簡化的字串形式OID與snmptt.conf中配置的OID是數字形式的不匹配,故snmptt服務將無法識別。因些,我們修改snmptrap的啟動指令碼來解決這一問題。

shell> /etc/init.d/snmptrapd

將snmptrapd檔案中的OPTIONS="-Lsd -p /var/run/snmptrapd.pid"修改成OPTIONS="-Lsd -On -p /var/run/snmptrapd.pid"並儲存。

好了,通過上面的安裝、配置和準備,我們已經完成了snmp陷入服務的安裝和配置,下面我們來重啟服務並檢查服務工作是否正常。

shell> service snmpd start/restart

shell> service snmptrapd start/restart

shell> service snmptt start/restart

如果上述三種服務啟動都是正常的,則我們可能通過下例命令來檢查我們配置的SNMP陷入服務是否正常。在本機或其它主機上發送一條陷入資訊到我們zabbix伺服器的陷入服務連接埠上,並檢查snmptt服務是否在指定的檔案裡輸出我們要求的陷入資訊的輸出。

shell>snmptrap -v 2c -c snmp@domain.com 192.168.5.139:162 "" .1.3.6.1.6.3.1.1.5.3

執行上述陷入命令之後,如果在/var/log/snmptt/snmptt.log檔案裡有如下類似如下的資訊輸出則說明我們配置的snmptrapd和snmptt服務工作是正常的。

15:05:362014/01/17.1.3.6.1.6.3.1.1.5.3Normal"Status Events" source.iwgame.tec - Link down on interface $1. Admin state: $2. Operational state: $3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.