Скрипты и файлы конфигурации для мониторинга состояния TCP соединений.
Шаблон для zabbix:
Для удобства установки различных нестандартных метрик для мониторинга я использую директиву Include=/etc/zabbix/zabbix_agentd.conf.d/ после чего можно добавлять отдельные файлы, в которых будут все опции, необходимые для работы необходимой метрики, в данном случае: /etc/zabbix/zabbix_agentd.conf.d/tcp_status.conf:
Шаблон для 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.
Комментариев нет:
Отправить комментарий