zabbix自動發現規則實現批量監控主機的TCP監聽端口

檢查服務器所有監聽端口和其對應的服務名稱的腳本可以參考https://blog.zzyyxx.top/blog/post/gordy/acf57f04f9e1  現在準備加入zabbix自動發現規則並實現批量監控主機的這些TCP監聽端口。

1)考慮到zabbix的運行用戶是zabbix,zabbix用戶需要root權限才能執行netstat -p參數,這裏不打算使用把zabbix用戶加入sudo來實現。

而是折中的方法:

先使用root用戶執行腳本python checkallports.py 生成服務器所有監聽端口和其對應的服務名稱的json文本,生成的文件名是allports.log(如果服務經常變動,可以把python checkallports.py 加入crontab定時刷新allports.log的json文件內容)

cat checkallports.py 

#!/bin/python
import os
import subprocess
import json
def filterlist(cmd):
    plist = []
    mlist = []
    getcmd = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE).stdout.readlines()
    for line in getcmd:        
        port = line.split()[3].split(':')[-1]        
        pname = line.split()[6].split('/')[1]
        pp = [port, pname]        
        plist.append(pp)    
    for i in plist:        
        pdict = {}        
        pdict['{#PPORT}'] = i[0]        
        pdict['{#PNAME}'] = i[1]        
        mlist.append(pdict)    
    return mlist
def main(filename,cmd2):    
    mlist = filterlist(cmd)    
    result = {}    
    result['data'] = mlist    
    with open(filename,'w') as f:        
        f.write(json.dumps(result, sort_keys=True, indent=4))    
    subprocess.Popen(cmd2,shell=True,stdout=subprocess.PIPE).stdout.readlines()
if __name__ == '__main__':    
    cmd = 'netstat -antulp|grep LISTEN|grep -v ssh|grep -v zabbix'    
    filename = '/data/app/zabbix/share/allports.log'    
    cmd2 = 'chown zabbix.zabbix %s'%(filename)    
    main(filename,cmd2)

然後再使用zabbix用戶去讀取這個json文本allports.log

cat displayallports.py 

#!/bin/python
import os
with open('/data/app/zabbix/share/allports.log','r') as f:     
    for line in f.readlines():         
        print(line)

最後執行python displayallports.py 即可得到需要的json信息

 

2)在zabbix_agentd.conf添加配置

UserParameter=ports.discovery,python /data/app/zabbix/share/displayallports.py

 

3)在模板裏創建發現規則

依次進入:配置>>模板>>自動發現規則>>創建發現規則


4)創建發現規則

 

5)創建監控項原型 {#PPORT} {#PNAME} 就是從執行python displayallports.py 獲得的json信息

 


6)最後進入 配置>>主機>>選擇一臺主機的監控項查看,可以看到有 自動發現規則ALL TCP Ports discovery生成的監控項

 

參考 http://www.xiaomastack.com/2015/07/04/zabbix-auto-tcp-port/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章