第一步:写监控监控,脚本如下
#!/bin/bash############################################################# $Name: zabbix_linux_plugins.sh# $Version: v1.0# $Function: zabbix plugins# $Author: Jason Zhao# $organization: www.unixhot.com# $Create Date: 2014-08-10# $Description: Monitor Linux Service Status############################################################tcp_status_fun(){ TCP_STAT=$1 #netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,state[key]}' > /tmp/netstat.tmp ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2) if [ -z $TCP_STAT_VALUE ];then TCP_STAT_VALUE=0 fi echo $TCP_STAT_VALUE}main(){ case $1 in tcp_status) tcp_status_fun $2; ;; *) echo $"Usage: $0 {tcp_status key}" esac}main $1 $2 $3
第二步:把脚本放在需要监控的服务器上(即zabbix的客户端),并且在zabbix客户端配置文件中应用它。
[root@localhost zabbix_agent.conf.d]# lltotal 4-rwxr-xr-x 1 root root 2776 May 2 12:47 zabbix_linux_plugin.sh[root@localhost zabbix_agent.conf.d]# pwd/usr/local/zabbix/etc/zabbix_agent.conf.d[root@localhost zabbix_agent.conf.d]# [root@localhost zabbix_agent.conf.d]# egrep -v '^$|#' ../zabbix_agentd.confLogFile=/tmp/zabbix_agentd.logServer=192.168.10.11ServerActive=127.0.0.1Hostname=192.168.10.12Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/UserParameter=mysql_alive, mysqladmin -uroot -S /var/lib/mysql/mysql.sock ping |grep -c alive###下面这一行就是引用刚才的监控脚本UserParameter=linux_status[*],/usr/local/zabbix/etc/zabbix_agent.conf.d/zabbix_linux_plugin.sh "$1" "$2" [root@localhost zabbix_agent.conf.d]#
第三步:重启zabbix客户端,并且在zabbix服务器中测试,是否能够获取这个key
[root@localhost zabbix_agent.conf.d]# /etc/init.d/zabbix_agentd restartShutting down zabbix_agentd: [ OK ]Starting zabbix_agentd: [ OK ][root@localhost zabbix_agent.conf.d]# [root@zabbix ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.12 -k linux_status[tcp_status,ESTAB] 2[root@zabbix ~]#
第四部:在zabbx服务端的web中添加对于tcp链接数的监控项目。
主要就是注意键值的编写:键值中的键linux_status[tcp_status,ESTAB] ,其中tcp_status也就是$1,ESTAB也就是$2。
[root@localhost zabbix_agent.conf.d]# egrep -v '^$|#' ../zabbix_agentd.confLogFile=/tmp/zabbix_agentd.logServer=192.168.10.11ServerActive=127.0.0.1Hostname=192.168.10.12Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/UserParameter=mysql_alive, mysqladmin -uroot -S /var/lib/mysql/mysql.sock ping |grep -c aliveUserParameter=linux_status[*],/usr/local/zabbix/etc/zabbix_agent.conf.d/zabbix_linux_plugin.sh "$1" "$2"
重复添加tcp的11个监控状态,仅仅需要修改上面图片中的监控名称,已经键值即可。
第五步:添加监控图像
完成