今天想到一個需求:監控lvs服務的運行狀態。
有問題百度一下,找到此篇文章 https://www.cnblogs.com/huangyanqi/p/9203125.html 在我機器上試了一下,出現2個問題。1.普通用戶無法使用ipvsadm命令 2.連接數為0就報警,優化了一下
第1個問題試了好多辦法:zabbix用戶增加sudo權限,使用root用戶啟動zabbix程序,修改/usr/lib/systemd/system/zabbix-agent.service啟動腳本等。仍然無效。浪費2個小時沒解決,最后換一個編譯的zabbix程序。換個路徑成功!
第2個問題和其他優化內容如下:
一、優化zabbix自動發現腳本
優化了\n\t制表符,運行起來更像json。
#!/bin/bash #author: GuoYabin MY_KEY=(`sudo /usr/sbin/ipvsadm -L -n |egrep -v 'TCP|UDP|Virtual|LocalAddress|ActiveConn' |grep "$1"|awk '{print $2}'|awk -F ":" '{print $1}'`) length=${#MY_KEY[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++)) do printf '\n\t\t{' printf "\"{#IFNAME}\":\"${MY_KEY[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n}"
二、zabbix自定義鍵配置文件
修改了lvs.connect和lvs.status自定義鍵的取值
UserParameter=lvs.status.discovery,/usr/local/zabbix/etc/zabbix_agentd.conf.d/lvs_discovery_ActConn.sh UserParameter=lvs.connect[*], /usr/sbin/ipvsadm -L -n | egrep -v 'TCP|UDP|Virtual|LocalAddress|ActiveConn' | grep "$1" | awk '{print $$5}' UserParameter=lvs.status[*], /usr/sbin/ipvsadm -L -n |grep "$1" |wc -l UserParameter=lvs.CPS[*], ipvsadm -L --rate | egrep -v 'IP|Port|TCP' | grep "$1" | awk '{print $$3}' UserParameter=lvs.InPPS[*], ipvsadm -L --rate | egrep -v 'IP|Port|TCP' | grep "$1" | awk '{print $$4}' UserParameter=lvs.OutPPS[*], ipvsadm -L --rate | egrep -v 'IP|Port|TCP' | grep "$1" | awk '{print $$5}' UserParameter=lvs.InByte[*], ipvsadm -L --rate | egrep -v 'IP|Port|TCP' | grep "$1" | awk '{print $$6}' UserParameter=lvs.OutByte[*], ipvsadm -L --rate | egrep -v 'IP|Port|TCP' | grep "$1" | awk '{print $$7}'
三、其他配置
#設置權限
chmod +x /usr/local/zabbix/etc/zabbix_agentd.conf.d/lvs_discovery_ActConn.sh
#重啟agent服務
systemctl restart zabbix-agent.service
#zabbix-server測試
四、圖像處理
模板我已經做好了(主動模式),現在可以直接下載:鏈接:https://pan.baidu.com/s/1E5JqfO3Ilr7RSyBU_Angaw 提取碼:k5up
注意:優化了lvsdown觸發器,不能沒有連接時候就算down狀態。優化了間隔取值時間,優化了主動式上報模式。
下圖直接盜用了他們的圖給你們做個示范