环境介绍:
系统版本:cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
zabbix版本: rpm -qa | grep zabbix
zabbix-get-4.0.27-1.el7.x86_64
zabbix-web-mysql-4.0.27-1.el7.noarch
zabbix-web-4.0.27-1.el7.noarch
zabbix-release-4.0-2.el7.noarch
zabbix-server-mysql-4.0.27-1.el7.x86_64
zabbix-agent-4.0.27-1.el7.x86_64
[root@ansible-kvm zabbix]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
操作步骤:
1 写脚本 -> 2 配置zabbix_agent.conf并重启agent -> 3 zabbix_get测试 -> 4 web界面添加监控项
1 脚本:cat dis_tcpport.sh
#!/bin/bash
#portarray=(`netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk {'print $4'}|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort|uniq`)
length=${#portarray[@]}
printf "{\n"
printf '\t'"\"data\":["
for ((i&#61;0;i<$length;i&#43;&#43;))doprintf &#39;\n\t\t{&#39;printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}"if [ $i -lt $[$length-1] ];thenprintf &#39;,&#39;fidone
printf "\n\t]\n"
printf "}\n"
2 # cat /etc/zabbix/zabbix_agentd.conf | grep -v ^$ | grep -v ^#
PidFile&#61;/var/run/zabbix/zabbix_agentd.pid
LogFile&#61;/var/log/zabbix/zabbix_agentd.log
LogFileSize&#61;0
Server&#61;127.0.0.1
ServerActive&#61;127.0.0.1
Hostname&#61;Zabbix server
Include&#61;/etc/zabbix/zabbix_agentd.d/*.conf
UserParameter&#61;testkey,who | wc -l # 这是testuser登陆人数的key
UserParameter&#61;tcp_state[*],netstat -ant|grep -c $1 # 这是tcp九种状态的被动key
UserParameter&#61;testpasswd,md5sum /etc/shadow # 监控文件变化
UserParameter&#61;tcpportlisten,/usr/lib/zabbix/dis_tcpport.sh "$1" # 添加此项
3 测试 得到下面数据即可 主机 #TCP_PORT 这个key 后面会用到
zabbix_get -s 127.0.0.1 -p 10050 -k tcpportlisten
{
"data":[
{"{#TCP_PORT}":"10050"},
{"{#TCP_PORT}":"10051"},
{"{#TCP_PORT}":"111"},
{"{#TCP_PORT}":"21"},
{"{#TCP_PORT}":"22"},
...
{"{#TCP_PORT}":"9100"},
{"{#TCP_PORT}":"9200"},
{"{#TCP_PORT}":"9300"},
{"{#TCP_PORT}":"9600"}
]
}
4 模板添加 先添加模板和 自动发现规则 --- 然后是item ----- 然后是 trigger
# 上面的截图 &#61; 1不对 应该是0 另外 报警里面加上 #TCP_PORT的变量
# yinweinetstat 普通用户权限不够看所有端口&#xff0c;会提示权限不够 记得给 zabbix提权
chmod 660 /etc/sudoers
echo "zabbix ALL&#61;(ALL) NOPASSWD: ALL" >> /etc/sudoers