自定義key解決zabbix端口監聽取值不許確的問題

今天有一個朋友問到我一個關於zabbix監控tcp端口的問題,明明端口在監聽,可是經過net.tcp,listen取值取到的倒是0。
  通過簡單的goole發現這已是一個歷史悠久的問題:
  問題的根本緣由是zabbix的這個key(net.tcp,listen)是經過讀取 /proc/net/tcp這個文件來進行數據採集的,而/proc/下的文件並非線程安全的,所以會出現取值不許確的問題。
另外這種機制還存在另一個隱患:當/proc/net/tcp文件的條目很是多的話,就會形成取值慢的狀況,所以就有可能形成取值失敗的問題。安全

那咱們該若是解決這個問題呢,網上也找到了解決辦法,我在這裏當一次大天然的搬運工~哈哈

解決方法就是新添加一個用戶自定義key來代替zabbix本身提供的監控方式,具體操做步驟以下:tcp

#1,添加自定義key --> net.tcp.listen.grep[]
添加方式,在zabbix客戶端的agentd的配置文件中,或者在zabbix agentd所聲明的Include配置文件目錄下添加以下配置:
1
UserParameter=net.tcp.listen.grep[
],grep -q $$(printf '%04X.00000000:0000.0A' $1) /proc/net/tcp && echo 1 || echo 0
  例如個人選在就是在/etc/zabbix/zabbix-agentd.conf.d目錄下,建立了一個文件net_tcp_listen.conf,將上述key的聲明寫到文件裏,由於個人zabbix_agentd.conf中已經作了配置文件目錄包含的聲明:ide

thatsit:~ # grep ^Include /etc/zabbix/zabbix-agentd.conf
Include=/etc/zabbix/zabbix-agentd.conf.d/
thatsit:~ #
thatsit:~ # cat /etc/zabbix/zabbix-agentd.conf.d/net_tcp_listen.conf
UserParameter=net.tcp.listen.grep[*],grep -q $$(printf '%04X.00000000:0000.0A' $1) /proc/net/tcp && echo 1 || echo 0
thatsit:~ #
#2,重啓zabbix-agentd,使配置生效 線程

shipeng:~ # /etc/init.d/zabbix-agentd restart
Shutting down zabbix agentd done
Starting zabbix agentd done
shipeng:~ #rest

相關文章
相關標籤/搜索