zabbix3对tcp连接数及状态的监控
tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以改用ss命令对脚本进行优化
对tcp连接数和状态的监控意义主要有以下几点:
1.可以观察服务器的压力分布(连接数大于5W的时候可能系统会有一定的压力,可以考虑加服务器)
2.如果服务器的连接数突然变得极小(比如100以下),可能是业务系统故障导致在线用户被踢出
创建文件夹
mkdir -p /usr/local/zabbix-agent/scripts/
mkdir -p /etc/zabbix/zabbix_agentd.d/
vim /usr/local/zabbix-agent/scripts/tcp_status_ss.sh
#!/bin/bash
#scripts for tcp status
function SYNRECV {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'SYN-RECV' | awk '{print $2}'
}
function ESTAB {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}'
}
function FINWAIT1 {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-1' | awk '{print $2}'
}
function FINWAIT2 {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-2' | awk '{print $2}'
}
function TIMEWAIT {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}'
}
function LASTACK {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LAST-ACK' | awk '{print $2}'
}
function LISTEN {
/usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
}
$1
或者
- function SYNRECV {
- /usr/sbin/ss -s | grep 'synrecv' | awk '{print $2}'
- }
- function ESTAB {
- /usr/sbin/ss -s | grep 'estab' | awk '{print $2}'
- }
- function FINWAIT1 {
- /usr/sbin/ss -o | grep 'FIN-WAIT-1'|wc -l
- }
- function FINWAIT2 {
- /usr/sbin/ss -ant| grep 'FIN-WAIT-2' | wc -l
- }
- function TIMEWAIT {
- /usr/sbin/ss -ant | grep 'TIME-WAIT' | wc -l
- }
- function LASTACK {
- /usr/sbin/ss -ant | grep 'LAST-ACK' | wc -l
- }
- function LISTEN {
- /usr/sbin/ss -ant | grep 'LISTEN' | wc -l
- }
- $1
赋予脚本执行权限
chmod +x /usr/local/zabbix-agent/scripts/tcp_status_ss.sh
二、填写key值:当然大家在加入key值之后最好再服务器上面去执行看有没有返回值:
vim /etc/zabbix/zabbix_agentd.d/tcp_status_ss.conf
#monitor tcp
UserParameter=tcp[*],/usr/local/zabbix-agent/scripts/tcp_status_ss.sh $1
重启agent
service zabbix-agent restart
zabbix-server服务端测试
zabbix_get -s 192.168.3.18 -p 10050 -k "tcp[LISTEN]"
zabbix_get -s 192.168.3.18 -p 20050 -k "tcp[LISTEN]"
22
zabbix web端配置:
登录Zabbix3.0 的web界面,一次选择 Configuration > Templates,在主界面的右上角有个 Import 按钮,用来导入模板
模板文件:
- zbx_tcp_status.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <zabbix_export>
- <version>3.0</version>
- <date>2016-10-20T10:07:50Z</date>
- <groups>
- <group>
- <name>Templates</name>
- </group>
- </groups>
- <templates>
- <template>
- <template>Templates tcp status ss</template>
- <name>Templates tcp status ss</name>
- <description/>
- <groups>
- <group>
- <name>Templates</name>
- </group>
- </groups>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <items>
- <item>
- <name>tcp ESTAB</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[ESTAB]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- <item>
- <name>tcp fin_wait1</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[FINWAIT1]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- <item>
- <name>tcp fin_wait2</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[FINWAIT2]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- <item>
- <name>tcp last_ack</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[LASTACK]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- <item>
- <name>tcp listen</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[LISTEN]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- <item>
- <name>tcp syn_recv</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[SYNRECV]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- <item>
- <name>tcp timewait</name>
- <type>0</type>
- <snmp_community/>
- <multiplier>0</multiplier>
- <snmp_oid/>
- <key>tcp[TIMEWAIT]</key>
- <delay>30</delay>
- <history>90</history>
- <trends>365</trends>
- <status>0</status>
- <value_type>3</value_type>
- <allowed_hosts/>
- <units/>
- <delta>0</delta>
- <snmpv3_contextname/>
- <snmpv3_securityname/>
- <snmpv3_securitylevel>0</snmpv3_securitylevel>
- <snmpv3_authprotocol>0</snmpv3_authprotocol>
- <snmpv3_authpassphrase/>
- <snmpv3_privprotocol>0</snmpv3_privprotocol>
- <snmpv3_privpassphrase/>
- <formula>1</formula>
- <delay_flex/>
- <params/>
- <ipmi_sensor/>
- <data_type>0</data_type>
- <authtype>0</authtype>
- <username/>
- <password/>
- <publickey/>
- <privatekey/>
- <port/>
- <description/>
- <inventory_link>0</inventory_link>
- <applications>
- <application>
- <name>tcp status</name>
- </application>
- </applications>
- <valuemap/>
- <logtimefmt/>
- </item>
- </items>
- <discovery_rules/>
- <macros/>
- <templates/>
- <screens/>
- </template>
- </templates>
- <graphs>
- <graph>
- <name>linux tcp status</name>
- <width>900</width>
- <height>200</height>
- <yaxismin>0.0000</yaxismin>
- <yaxismax>100.0000</yaxismax>
- <show_work_period>1</show_work_period>
- <show_triggers>1</show_triggers>
- <type>0</type>
- <show_legend>1</show_legend>
- <show_3d>0</show_3d>
- <percent_left>0.0000</percent_left>
- <percent_right>0.0000</percent_right>
- <ymin_type_1>0</ymin_type_1>
- <ymax_type_1>0</ymax_type_1>
- <ymin_item_1>0</ymin_item_1>
- <ymax_item_1>0</ymax_item_1>
- <graph_items>
- <graph_item>
- <sortorder>0</sortorder>
- <drawtype>0</drawtype>
- <color>1A7C11</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[ESTAB]</key>
- </item>
- </graph_item>
- <graph_item>
- <sortorder>1</sortorder>
- <drawtype>0</drawtype>
- <color>F63100</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[FINWAIT1]</key>
- </item>
- </graph_item>
- <graph_item>
- <sortorder>2</sortorder>
- <drawtype>0</drawtype>
- <color>2774A4</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[FINWAIT2]</key>
- </item>
- </graph_item>
- <graph_item>
- <sortorder>3</sortorder>
- <drawtype>0</drawtype>
- <color>A54F10</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[LASTACK]</key>
- </item>
- </graph_item>
- <graph_item>
- <sortorder>4</sortorder>
- <drawtype>0</drawtype>
- <color>FC6EA3</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[LISTEN]</key>
- </item>
- </graph_item>
- <graph_item>
- <sortorder>5</sortorder>
- <drawtype>0</drawtype>
- <color>6C59DC</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[SYNRECV]</key>
- </item>
- </graph_item>
- <graph_item>
- <sortorder>6</sortorder>
- <drawtype>0</drawtype>
- <color>AC8C14</color>
- <yaxisside>0</yaxisside>
- <calc_fnc>2</calc_fnc>
- <type>0</type>
- <item>
- <host>Templates tcp status ss</host>
- <key>tcp[TIMEWAIT]</key>
- </item>
- </graph_item>
- </graph_items>
- </graph>
- </graphs>
- </zabbix_export>
目录 返回
首页