Zabbix для мониторинга состояния tcp-соединений

В предыдущей записи я рассказывал как посредсвом настроить nginx. В этой записи речь пойдет о состоянии -соединений.

Вообщем-то отслеживать состояние tcp-соединений не всегда нужно, но иногда очень полезно, когда число оных переваливает за сотни.

Часть 1. Скрипт

Создадим файл ~/zabbix/scripts/tcp_status.sh с примерно таким содержанием (Версия 2.0, спасибо p2n):

 #!/bin/bash HOST=`/bin/hostname` SERVER='zabbix.yourdomain.com' /bin/ss -ant | awk "{if (NR>1) {state[\$1]++}} END {host = \"${HOST}\"; \ 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 host, \"tcp.\"s, state[i]}}" \ | ~/zabbix/bin/zabbix_sender --zabbix-server ${SERVER} -s ${HOST} --port '10051' -i - >/dev/null 2>&1 echo "1" exit 0 

Часть 2. Настройка агента

В Конфиг агента добавляем строку:

 UserParameter=tcp.all,~/zabbix/scripts/tcp_status.sh 

После чего перезапускаем:

 /etc/init.d/zabbix-agent restart 

Часть 3. Шаблон

Готовый шаблон с графиком и триггерами:

Образец графика:
tcp connections