How to collect syslog-ng statistics. [SOLVED]

Возникла задача сбора статистики с боевого syslog-ng сервера. Сначала решил изменить EPS (Events per Second). Тут все просто - согласно документации начиная с syslog-ng Open Source Edition version 3.1, syslog-ng включает утилиту syslog-ng-ctl:

syslog-ng-ctl stats

Дело в том, что EPS там не показывается, можно ли получить количество обработанных сообщений (нарастающий счетчик). Нагуглил простой скрипт для решения задачи показа EPS. Сначал следует понять что именно смотреть в статистике. У меня в конфиге есть общее описание источников:

linux# less /etc/syslog-ng/syslog-ng.conf
source s_udp {
        udp();
};

Значит это и будем искать (grep). Скрипт выглядит так:

linux# vi /usr/local/bin/syslog-ng-logs_per_second.sh
#!/bin/sh

while true; do
        for i in $(syslog-ng-ctl stats | grep s_udp | grep proc | cut -d ";" -f6);
        do
                let tc1+=$i
        done
        let lps=tc1-tc2
        test -z $tc2 || echo $lps
        tc2=$tc1
        tc1=0
        sleep 1
done

Устанавливаем атрибуты файла:

chmod +x /usr/local/bin/syslog-ng-logs_per_second.sh

При первом запуске получил ошибку:

/usr/local/bin/syslog-ng-logs_per_second.sh: 13: let: not found
/usr/local/bin/syslog-ng-logs_per_second.sh: 13: let: not found
/usr/local/bin/syslog-ng-logs_per_second.sh: 13: let: not found

Решение простое - заменить #!/bin/sh на #!/bin/bash:

linux# /usr/local/bin/syslog-ng-logs_per_second.sh
2593
2898
2787
3105

Следующий этап - сбор информации по количеству пакетов в секунду и Mbit/s. Количество пакетов в секунду в большинстве случаев будет равно EPS (каждое syslog сообщение передается в виде одного пакета, фрагментация все же теоретически возможна). Для сбора токой статистики использовал pktstat со следующими параметрами:

linux# apt-get install pktstat
linux# man pktstat

           -n    Do not try and resolve hostnames or service port numbers.
           -p    Show packet counts instead of bit counts.
           -P    Do not try to put the interface into promiscuous mode.
           -t    "Top" mode.  Sorts the display by bit count (or packet count if -p was given) instead of by the name.
           -w waittime
                 Refresh the display every waittime seconds.  The default is 5 seconds.

Пример использования:

linux# pktstat -i eth0 -npPtT udp port 514

Admin area