第一步:写监控监控,脚本如下

#!/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]# ll
total 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.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.10.11
ServerActive=127.0.0.1
Hostname=192.168.10.12
Include=/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 restart
Shutting 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链接数的监控项目。

wKiom1coGPbC6WFcAAI1O85hn94496.png

主要就是注意键值的编写:键值中的键linux_status[tcp_status,ESTAB] ,其中tcp_status也就是$1,ESTAB也就是$2。

[root@localhost zabbix_agent.conf.d]# egrep -v '^$|#' ../zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=192.168.10.11
ServerActive=127.0.0.1
Hostname=192.168.10.12
Include=/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"


重复添加tcp的11个监控状态,仅仅需要修改上面图片中的监控名称,已经键值即可。

wKioL1coGyWyytdvAAF1feAHRYw733.png



第五步:添加监控图像

wKiom1coGvPBzCMkAALoUI5uLrg055.png


完成