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命令即可。
