zabbix使用snmp監控硬件設備

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

2,對被監控機器開啓snmp服務,目前普遍使用的版本是2c,community通常是public。api

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文件spa

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

7,腳本批量添加,須要修改zabbix地址,登陸用戶密碼,主機組,模板,macros,proxy等相關名稱,運行腳本便可,腳本是根據別人寫的本身作了修改,適用於zabbix3.x版本,2.x版本須要調整幾個地方。主機組須要提早建立好。3d

 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文件以下:code

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

 

1是host group名,若是要添加多個,能夠加在後面,用逗號分隔;server

2不用解釋了,能夠在宏配置裏看到

3是community字符串

4是proxy的全名稱

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

6是IP信息文件

IP文件信息格式以下:

ip1
ip2
ip3

 

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

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

已風扇爲例,先獲取到有多少個風扇,它的index,而後根據index獲取每一臺風扇的狀態和speed。

 

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

相關文章
相關標籤/搜索