zabbix使用snmp監控硬件設備


1,zabbix server或者proxy服務器上安裝snmp服務並開啟(如net-snmp工具)。

2,對被監控機器開啟snmp服務,目前廣泛使用的版本是2c,community一般是public。

3,在zabbix server或者proxy測試是否可以正常獲取數據,

shell> snmpwalk -v 2c -c public <host IP> .(OID(可以是字符串也可是數字,最好是數字))

ps:snmpwalk會遍歷OID下面的所有的值,所以會很多,我這里只是測試下可以連上服務器並能獲取到值

4,在zabbix上添加要監控的主機,可以從網上下載相應的模板,進行添加。然后根據不同設備情況對item和trigger進行適度調整。

5,如果添加后,發下主機的item或者discovery報錯,一般為:監控項找不到。這說明zabbix server或proxy的mib文件里面沒有對應的值。需要自己添加mib文件

6,根據要監控的主機,去下載對應的mib文件,將文件上傳的對應的proxy或者zabbix server,默認路徑為:/usr/share/snmp/mibs/,之后將.mib后綴名改為.txt。需要重啟系統才能生效。

7,腳本批量添加,需要修改zabbix地址,登錄用戶密碼,主機組,模板,macros,proxy等相關名稱,運行腳本即可,腳本是根據別人寫的自己做了修改,適用於zabbix3.x版本,2.x版本需要調整幾個地方。主機組需要提前創建好。

 1 from pyzabbix import ZabbixAPI
 2 import sys
 3 
 4 def zabbix_add(hostname,server_ip,proxy_name,base_template,group_name,value1,value2,user,passw):
 5     zapi = ZabbixAPI("http://zabbix.com")     #3.X的zabbix地址
 6 
 7     zapi.login(user, passw)   #填寫zabbix的登錄用戶名和密碼
 8     groups = zapi.hostgroup.get(filter={"name":group_name})
 9     tempaltes = zapi.template.get(filter={'host':base_template})
10     proxy_id = zapi.proxy.get(filter={"host": proxy_name})[0]['proxyid']
11 
12     zapi.host.create(host=hostname,interfaces=[{"type":2,"main":1,"useip":1,"dns":"","ip":server_ip,"port":"161"}],proxy_hostid=proxy_id,groups=groups,templates=tempaltes,macros=[{"macro":value1,"value":value2}])
13 """上面一行,端口號默認161,macro需要更改"""
14 
16 """讀取配置文件的信息"""
17 with open("D:\\config.txt",'r') as f:
18     host_group,macro_name,value_name,proxy,temp_name,file_path = f.readlines()
19 # print(type(host_group),macro_name,value_name,proxy,temp_name,file_path)
20 proxy = proxy.strip()
21 macro_name = macro_name.strip()
22 value_name = value_name.strip()
23 host_group = eval(host_group)
24 temp_name = eval(temp_name)
25 a = ''  #后面幾行是把Excel里的IP列表copy到一個txt文件中,然后將IP用,連接起來,當時單獨這樣寫,是用來再拼接上雙引號的,現在不需要這樣做了。
26 with open(file_path,'r') as f:
27     for j in f.readlines():
28         if len(j) == 0:
29             pass
30         else:
31             a =a+j.strip()+","
32 ips = a[:-1]
33 # print(ips)   #輸出檢驗下
34 
35 # with open('D:\\new2.txt','w') as f2:
36 #     f2.write(a[:-1])
37 lic = ips.split(',')  
38 username = input("輸入zabbix用戶名")
39 passwd = input("密碼:")
40 for i in lic:
41     zabbix_add(i,i,proxy,temp_name,host_group,macro_name,value_name,username,passwd) #proxy的全名稱和模板名稱

 

config文件如下:

1 'HP'
2 {$SNMP_COMMUNITY}
3 public4 zabbix-proxy11111.abc.com
5 'Template_HP_SNMP_Autodiscovery'
6 D:\\new1.txt

 

1是host group名,如果要添加多個,可以加在后面,用逗號分隔;

2不用解釋了,可以在宏配置里看到

3是community字符串

4是proxy的全名稱

5是模板名稱,多個的話,以逗號間隔

6是IP信息文件

IP文件信息格式如下:

ip1
ip2
ip3

 

8,添加前最好先加到維護模式,誰知道后面會不會有一大堆告警。一般模板里的item或者discovery的時間間隔比較長,可能長時間獲取不到數據,可以手動把時間間隔調短點,待驗證數據能正常獲取的話,再調回來。

9,模板里的item基本都是一些比較基本的信息,有價值的信息多數都是通過discovery獲取的

已風扇為例,先獲取到有多少個風扇,它的index,然后根據index獲取每一台風扇的狀態和speed。

 

再補充個,大量的主機去驗證snmp是否已經開啟並生效,用Python寫個腳本去循環執行snmpwalk命令即可。

 
       


免責聲明!

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



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