Категории

понедельник, 1 июня 2015 г.

Zabbix: TCP connections

Скрипты и файлы конфигурации для мониторинга состояния TCP соединений.

Шаблон для zabbix:


    2.0
    2015-05-31T06:58:27Z
    
        
            Linux servers
        
    
    
        
    
    
        
            {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.

Комментариев нет:

Отправить комментарий