zabbix4.2學習筆記--TCP狀態監控


Tcp的連接狀態對於我們web服務器來說是至關重要的,尤其是並發量ESTAB;或者是syn_recv值,假如這個值比較大的話我們可以認為是不是受到了攻擊(例如SYN攻擊),或是是time_wait值比較高的話,我們要考慮看我們內核是否需要調優,太高的time_wait值的話會占用太多端口,要是端口少的話后果不堪設想

環境

主機 ip zabbix版本 關系
centos7.5 192.168.181.135 zabbix4.2 服務端
centos7.5 192.168.181.136 zabbix4.2 客戶端

客戶端配置

編寫采集規則

編寫一個獲取tcp狀態的腳本文件,參考

vim /etc/zabbix/scripts/tcp_status.sh

#!/bin/bash

#########################################################################
# File Name: tcp_status.sh
# file_path:
# Author: 浪子塵心
# Mail: 536418286@qq.com
# Created Time: 2019-03-18 14:01:34
# Last Changed: 2019-03-18 14:02:18
# Description: TCP狀態采集
# Version:
#########################################################################

#!/bin/bash
[ $# -ne 1 ] && echo "Usage:CLOSE-WAIT|CLOSED|CLOSING|ESTAB|FIN-WAIT-1|FIN-WAIT-2|LAST-ACK|LISTEN|SYN-RECV SYN-SENT|TIME-WAIT" && exit 1
ss_file=/tmp/ss.txt
tcp_status_fun(){
    [ $1 == "ESTABLISHED" ] && TCP_STAT="ESTAB" || TCP_STAT=$1    #可能大家習慣了看ESTABLISHED,所以我做了個小小的轉換。
        ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > $ss_file
        TCP_STAT_VALUE=$(grep ${TCP_STAT} $ss_file|awk {'print $NF'})
        if [ -z "$TCP_STAT_VALUE" ];then
           TCP_STAT_VALUE=0
        fi
        echo $TCP_STAT_VALUE
}
tcp_status_fun $1

給腳本加執行權限

chmod +x /etc/zabbix/scripts/tcp_status.sh

編寫自定義key

vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf

UserParameter=tcp_status[*],/etc/zabbix/scripts/tcp_status.sh $1

重啟客戶端

systemctl restart zabbix-agent

服務端測試獲取數據

zabbix_get -s 192.168.181.136 -p 10050 -k tcp_status[LISTEN]

TCP1

導入監控TCP模板

配置-模板-導入
模板地址
導入完成后選擇客戶端主機,添加模板即可,點擊主機群組 myApplications 查看
tcp0
點擊tcp模板的監控項查看
tcp1
查看圖形
tcp2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM