zabbix--SNMP 硬件設備監控


SNMP協議

介紹

簡單網絡管理協議(SNMP:Simple Network Management Protocol)是由互聯網工程任務組(IETF:Internet Engineering Task Force )定義的一套網絡管理協議。該協議基於簡單網關監視協議(SGMP:Simple Gateway Monitor Protocol)。利用SNMP,一個管理工作站可以遠程管理所有支持這種協議的網絡設備,包括監視網絡狀態、修改網絡設備配置、接收網絡事件警告等。 雖然SNMP開始是面向基於IP的網絡管理,但作為一個工業標准也被成功用於電話網絡管理。

組成

SNMP Agent:負責處理snmp請求,主要包括get、set等操作。可通過此接口查詢設備的運行狀態(使用較多),或者變更配置(使用較少),默認使用UDP 161端口;

SNMP Trap:snmp通知消息,主動發送消息到管理端。如設備故障,端口down等都會實時發送消息到接收端。默認使用UDP 162端口;

SNMP MIB:MIB代表管理信息庫,是按層次結構組織的信息的集合,定義了設備內被管理對象的屬性。

方式一 SNMP Oid

說明

通過snmp oid的方式進行硬件設備的狀態監控。其所使用的為snmp agent get的方式去獲取硬件設備的狀態,所使用端口默認為161端口。部署流程如下:

1、部署zabbix時需要開啟snmp模塊,rpm包默認開啟,如果是源碼包部署則需要加上--with-net-snmp參數;

2、找到對應硬件設備的oid文檔(各個廠商的不一樣,且各個廠商的不同機型的不一樣,甚至同一機型的不同hdm版本也會存在oid不一致的情況);

3、首先被監控的硬件設備上開啟snmp服務,設定所使用的snmp協議(目前廣泛使用的是2c),設定團體字;

4、配置安全策略,允許zabbix server或者proxy訪問被監控設備的161端口;

5、zabbix server或者proxy上安裝snmp服務工具(如net-snmp工具),進行測試對應oid是否可以正常獲取數據;

6、zabbix上主機添加,oid監控項添加、觸發器添加等(這里一般設置為對應設備的模板)。

示例

這里以監控硬件服務器(浪潮SA5212M5)示例

配置團體字

登陸需要被監控的硬件服務器的帶外,配置snmp團體字。

測試連通性

zabbix server或者proxy安裝測試工具測試是否可以獲取數據,這里使用snmpwalk進行測試,軟件包名:net-snmp-utils

官網下載地址:http://www.net-snmp.org/download.html

可以直接通過yum進行安裝,也可以通過官網下載進行安裝。

1、添加epel源

# yum install epel-release -y

2、安裝net-snmp-utils

# yum install net-snmp-utils -y

3、根據獲取到的oid進行測試是否可以獲取到數據,比如這里獲取機器的開關機狀態

# snmpwalk -v 2c -c Tencent@22 10.55.128.1 1.3.6.1.4.1.37945.2.1.2.13.1.1.1
SNMPv2-SMI::enterprises.37945.2.1.2.13.1.1.1.0 = STRING: "Power On"

snmpwalk命令格式及參數說明:

snmpwalk -v snmp協議版本 -c 團體字名 目標IP地址 OID號
注意:如果指定具體OID號,則獲取所有OID信息

zabbix添加主機

添加主機 【配置】——>【主機】——>【創建主機】

設置相關信息(所屬主機組、interface等,然后點擊添加)

創建監控項

創建監控項【配置】——>【主機】——>(找到上面創建的主機點擊進入)——>【監控項】——>【創建監控項】

驗證最新數據(查看最新獲取的數據是否為想要的信息及是否能正常拿到數據)【監測】——>【最新數據】

創建觸發器

創建觸發器【配置】——>【主機】——>(找到上面創建的主機點擊進入)——>【觸發器】——>【創建觸發器】

添加結果如下圖所示:

到此,基於一個snmp oid的監控項即配置完成。

模板制作

一般生產環境下,如果采用snmp agent的方式對硬件設備的監控,都會對一個廠商的對應設備所關注的oid監控值創建一個模板(避免成百上千的機器添加還需要一個一個去配置監控項等),然后再通過zabbix提供的API接口進行批量主機的添加並綁定該模板。

如下:Template Module Inspur SERVER-NAME SA5212M5 SNMP模板,對浪潮SA5212M5機型制作的模板,包含了11個監控項、以及16個自動發現規則。用於對服務器硬件(CPU、內存、磁盤、風扇、電源、控制器、Raid)等狀態進行了監控。

告警信息展示:

image-20220322142012301

總結

基於snmp agent oid方式進行硬件設備的監控,有以下幾個優缺點:

優點:

​ 1、監控數據信息全面,可以獲取到很多控制器的狀態、溫度、服務器基本信息等指標。

​ 2、可以根據獲取到的指標繪制對應可視化大盤等。及時了解硬件組件的各個狀態。

缺點:

​ 介於國內各廠商的oid不統一(甚至各廠商的不同型號的服務器oid、同一型號服務器不同hdm版本oid也不統一)的情況下,如果一個項目采用了不同廠商不同型號的硬件設備,則需要去配置不同的監控模板(配置一個模板,需要對對應oid文檔每個去核對其值以及數據類型),這樣工作量就會變得巨大。

方式二 SNMP Trap

說明

通過snmp trap的方式進行硬件設備的狀態監控。其本質並不是去獲取硬件設備指標的詳細數據,而是通過接收硬件設備自帶的snmp trap告警機制接收硬件設備發出的異常告警通知,再交由zabbix進行處理並發送出來。如果有郵件服務器且不需要使用zabbix,而是直接使用郵件服務器發出告警信息進行通知。

Zabbix中接收SNMP trap旨在使用snmptrapd和內置機制之一來傳遞trapZabbix - 一個perl腳本或SNMPTT

這里以zabbix trap方式接收trap的工作流程作一說明:

  1. snmptrapd 收到trap
  2. snmptrapdtrap傳遞給SNMPTT或調用Perl trap接收器
  3. SNMPTTPerl trap接收器解析,格式化並將trap寫入文件
  4. Zabbix SNMP trap讀取並解析trap文件
  5. 對於每個trap,Zabbix發現主機接口與接收的trap地址匹配的所有“SNMP trap”監控項。請注意,在匹配期間只使用主機接口中選定的“IP”“DNS”
  6. 對於每個找到的監控項,將trap“snmptrap[regexp]”中的regexp進行比較。 trap設置為all匹配項的值。如果沒有找到匹配的監控項,並且有一個“snmptrap.fallback”監控項,則將trap設置為該監控項的值。
  7. 如果trap未設置為任何監控項的值,Zabbix默認記錄未匹配的trap。(通過管理 → 常規 → 其它中的“記錄未匹配的SNMP trap(Log unmatched SNMP traps)”進行配置。)

配置流程如下:

1、部署zabbix時需要開啟snmp模塊,rpm包默認開啟,如果是源碼包部署則需要加上--with-net-snmp參數;

2、找到對應硬件設備的mib庫文件(各個廠商的不一樣,且各個廠商的不同機型的不一樣);

3、zabbix server或者proxy部署snmpttsnmptrap

4、轉換mib文件;

5、被監控設備上配置snmp trap接收地址;

6、zabbix server或者proxy讀取接收trap文件並創建主機及創建接收監控項;

7、根據監控項配置告警策略。

示例

這里以監控硬件服務器(浪潮NF8260M5)為例

安裝snmptt

1、添加epel源

# yum install epel-release -y

2、安裝snmptt及相關軟件

# yum install snmptt perl-Sys-Syslog perl-DBD-MySQL -y

轉換MIB文件

snmptt提供了snmpttconvertmib工具,snmpttconvertmib是一個Perl腳本,它將讀取MIB文件並將TRAP-TYPE(v1)NOTIFICATIONATION-TYPE(v2)定義轉換為SNMPTT可讀的配置文件,從而實現對trap消息的翻譯。

1、上傳對應硬件設備的mib庫到服務器,並放置到/usr/share/snmp/mibs/目錄(centos7默認的mibs文件路徑,放置此處方便統一管理)

# cp inspurAlert_v2.3_20190520.mib /usr/share/snmp/mibs/

2、進行轉換

/usr/bin/snmpttconvertmib --in=/usr/share/snmp/mibs/inspurAlert_v2.3_20190520.mib --out=/etc/snmp/snmptt.conf.inspur --net_snmp_perl
  • --in:表示mib源文件
  • --out:表示輸出文件的地址

輸出結果如下所示,表示轉換成功:

3、轉換文件的修改,由於這里轉換出來的為標准文件,不符合zabbix snmptrap文件格式,因此還需要執行以下命令對配置文件進行稍加修改。

# ll /etc/snmp/snmptt.conf.inspur 
-rw-r--r-- 1 root root 1234142 Mar 21 12:18 /etc/snmp/snmptt.conf.inspur

# sed -i 's/FORMAT/FORMAT ZBXTRAP $aA/g' /etc/snmp/snmptt.conf.inspur

其實就是添加一個ZBXTRAP字符,否則會導致后續配置時候zabbix server日志出現如下錯誤

25926:20220322:172836.320 invalid trap data found "Tue Mar 22 17:28:34 2022 inspurServerTRAPObject Normal "Status Events" UNKNOWN -  2022-03-22 09:18:39 Inspur NF8260M5 SNMPTrap_test Platform Alert 0.00 0.00 0.00 0.00 0.00 0.00 0.00     Information 219636054 Info SNMPTrap Test Event

補充說明

由於某些設備的mib可能有多個,建議轉換為一個配置文件中,便於管理,這樣可以使用下面的批量命令進行轉換

for i in inspurAlert* do /usr/bin/snmpttconvertmib --in=$i --out=/etc/snmp/snmptt.conf.inspur --net_snmp_perl; done

配置snmptt

snmptt配置文件有2個:

  • /etc/snmp/snmptt.ini:snmptt主配置文件
  • /etc/snmp/snmptt.conf:系統默認的策略文件,包括一些基本的端口up/down的配置

修改snmptt.ini添加上面生成的/etc/snmp/snmptt.conf.inspur

# vim /etc/snmp/snmptt.ini
mode = standalone
net_snmp_perl_enable = 1
date_time_format = %Y/%m/%d %H:%M:%S
translate_log_trap_oid = 2		# 0:數字形式顯示OID,1:顯示OID名稱,2:顯示OID所屬模塊名及其名稱 
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt.conf.inspur
END

安裝snmptrap

該軟件包同樣在epel源中有。

# yum install -y net-snmp net-snmp-utils net-snmp-perl net-snmp-libs net-snmp-agent-libs net-snmp-devel

配置snmptrap

Snmp trap 消息為主動通知,因此需要配置服務器來接收設備發送過來的 snmp trap 消息。net snmp接收trap消息后,通過traphandle調用snmptt來對trap消息進行處理。

1、修改/etc/sysconfig/snmptrapd文件

# vim /etc/sysconfig/snmptrapd 

OPTIONS="-m +ALL -On"

2、修改/etc/snmp/snmptrapd.conf配置文件(authCommunity可以配置多個)

# vim /etc/snmp/snmptrapd.conf
authCommunity execute public
traphandle default /usr/sbin/snmptt

3、啟動snmptrap服務並加入開機啟動

# systemctl enable snmptrapd --now

4、驗證狀態

# systemctl status snmptrapd 
● snmptrapd.service - Simple Network Management Protocol (SNMP) Trap Daemon.
   Loaded: loaded (/usr/lib/systemd/system/snmptrapd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-03-22 16:17:04 CST; 2s ago
 Main PID: 7158 (snmptrapd)
   CGroup: /system.slice/snmptrapd.service
           └─7158 /usr/sbin/snmptrapd -m +ALL -On -f

Mar 22 16:17:04 zabbix-server systemd[1]: Starting Simple Network Management Protocol (SNMP) Trap Daemon....
Mar 22 16:17:04 zabbix-server snmptrapd[7158]: NET-SNMP version 5.7.2
Mar 22 16:17:04 zabbix-server systemd[1]: Started Simple Network Management Protocol (SNMP) Trap Daemon..

被監控設備配置trap

1、通過登陸帶外,配置snmp trap

2、觀察snmptt日志,驗證是否可以接收到消息

Zabbix配置

修改zabbix server配置文件或者proxy配置文件,開啟snmptrapper處理

1、配置文件修改

# vim /etc/zabbix/zabbix_server.conf
SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

2、重啟zabbix server

 # systemctl restart zabbix-server

配置snmptrap item

在zabbix上添加一個主機

1、添加主機

2、添加監控項,找到上面創建的主機,點擊進去,創建一個監控項

3、驗證是否zabbix是否收到信息(在被監控設備上發出測試告警信息)

配置觸發器

說明:這里名稱采用了zabbix的宏變量及使用了正則對告警信息中的內容進行提取。

問題表現形式:通過在最新的數據中(字符串)查找Critical,如果找到了則進行告警信息發生。

恢復表達式:通過在最新的數據中(字符串)查找Recovery,如果找到了則表示該告警恢復。

告警信息展示:

image-20220322175904499

總結

基於snmp trap方式進行硬件設備的監控,有以下幾個優缺點:

優點:

​ 1、配置相對簡單,只需配置一個監控項,但是觸發器需要配置n個,需要不斷優化,去根據告警信息去進行正則匹配。

缺點:

​ 無法實時了解硬件設備運行狀態,如溫度、電壓等,無法繪制可視化大盤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM