Скрипты и файлы конфигурации для мониторинга состояния TCP соединений.
Шаблон для
zabbix:
2.0
2015-05-31T06:58:27Z
Linux servers
Template UnixTcp
Template UnixTcp
Linux servers
TCP
-
CLOSE_WAIT
2
0
tcp.closew
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
ESTABLISHED
2
0
tcp.establ
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
FIN_WAIT1
2
0
tcp.finw1
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
FIN_WAIT2
2
0
tcp.finw2
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
LISTEN
2
0
tcp.listen
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
SYN_RECV
2
0
tcp.synrecv
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
SYN_SENT
2
0
tcp.synsent
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
TIME_WAIT
2
0
tcp.timew
60
7
365
0
3
0
0
0
0
0
0
0
0
TCP
-
Trapper
0
0
tcp.all
30
7
365
0
3
0
0
0
0
1
0
0
0
TCP
{Template UnixTcp:tcp.establ.last(0)}>10000
Too many ESTABLISHED connections on {HOST.NAME}
0
3
0
{Template UnixTcp:tcp.timew.last(0)}>30000
Too many TIME_WAIT connections on {HOST.NAME}
0
3
0
TCP Connections
900
200
0.0000
100.0000
1
1
1
1
0
0.0000
0.0000
0
0
0
0
6
1
009900
0
2
0
-
Template UnixTcp
tcp.establ
3
1
9999FF
0
2
0
-
Template UnixTcp
tcp.closew
0
1
3333FF
0
2
0
-
Template UnixTcp
tcp.timew
5
1
DDDD00
0
2
0
-
Template UnixTcp
tcp.synrecv
1
1
FFFF66
0
2
0
-
Template UnixTcp
tcp.listen
4
1
BBBB00
0
2
0
-
Template UnixTcp
tcp.synsent
2
1
DDDDDD
0
2
0
-
Template UnixTcp
tcp.finw1
1
1
CCCCCC
0
2
0
-
Template UnixTcp
tcp.finw2
Для удобства установки различных нестандартных метрик для мониторинга я использую директиву
Include=/etc/zabbix/zabbix_agentd.conf.d/ после чего можно добавлять отдельные файлы, в которых будут все опции, необходимые для работы необходимой метрики, в данном случае:
/etc/zabbix/zabbix_agentd.conf.d/tcp_status.conf:
UserParameter=tcp.all,/etc/zabbix/scripts/tcp_status.sh
Теперь создадим скрипт, который осуществляет доставку данных в
zabbix -
/etc/zabbix/scripts/tcp_status.sh:
#!/bin/sh
# WARNING: Correctly setup 'Hostname=' in config is REQUIRED!
/usr/bin/env ss -ant | \
awk '{
if (NR>1) {
state[$1]++;
}
}
END {
for (i in state) {
s=i;
sub(/ESTAB/, "establ", s);
sub(/LISTEN/, "listen", s);
sub(/SYN-SENT/, "synsent", s);
sub(/SYN-RECV/, "synrecv", s);
sub(/FIN-WAIT-1/, "finw1", s);
sub(/FIN-WAIT-2/, "finw2", s);
sub(/CLOSE-WAIT/, "closew", s);
sub(/TIME-WAIT/, "timew", s);
print "- tcp."s, state[i]
}
}' | /usr/bin/env zabbix_sender \
--config /etc/zabbix/zabbix_agentd.conf \
--input-file - >/dev/null 2>&1
echo $?
exit 0
И сразу выставляем правильные права на скрипт:
chmod 755 /etc/zabbix/scripts/tcp_status.sh
chown zabbix:zabbix /etc/zabbix/scripts/tcp_status.sh
Если каталога
/etc/zabbix/scripts у вас еще нет, то его нужно создать:
mkdir /etc/zabbix/scripts
chmod 755 /etc/zabbix/scripts
chown zabbix:zabbix /etc/zabbix/scripts
Стоит отметить тот факт, что в скрипте используется
ss (из пакета
iproute2), вместо
netstat, замеры и опыт использования показал, что
ss быстрее.
Все почти готово, теперь можно зайти в панель
zabbix и добавить нужному хосту новый шаблон
Template UnixTcp.