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