Назад | Перейти на главную страницу

Linux: мониторинг сетевого трафика и количества подключений с помощью grep

Мне нужно каждую минуту собирать определенные данные мониторинга и отправлять их на сервер мониторинга. Источник этих данных должен быть проанализирован с помощью стандартных инструментов Linux. Например, чтобы отслеживать количество текущих подключений каждую минуту, я использую netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n, а затем я извлекаю необходимые числа, снова используя awk.

Теперь мне также нужно отслеживать:

Подскажите, пожалуйста, инструменты, которые позволят производить grep-способный и awk-able вывод.

Примечание: измерения выполняются на выделенной машине, поэтому не имеет значения, получаю я данные для одного интерфейса (eth0) или для всего хоста.

Примечание: мне нужны только TCP-соединения.

Правила iptables, настроенные на ПРИНЯТИЕ всего трафика и всех SYN-пакетов (новые соединения), могут использоваться в качестве счетчиков.

iptables -A INPUT -j ACCEPT 
iptables -A INPUT --protocol tcp --syn -j ACCEPT

затем беги

iptables --list -v -n -Z

и пропустите столько команд cut cat sort grep awk sed perl ruby ​​и аналогичные, сколько необходимо для получения ваших чисел. -Z будет атомарно обнулять счетчики каждый раз, когда вы запускаете это, поэтому нет состояния гонки, когда вы теряете несколько пакетов во время процесса подсчета.

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

Подключения (текущие)

OUTPUT=`netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n`

ESTABLISHED=`echo "${OUTPUT}" | grep ESTABLISHED | awk '{print $1}'`                                                      
LISTEN=`echo "${OUTPUT}" | grep LISTEN | awk '{print $1}'`

Трафик (в минуту)

OUTPUT=`(LANG='' && ifstat -i eth0 60 1 | sed '3!d')`

IN=`echo "${OUTPUT}" | awk '{print $1}'`
OUT=`echo "${OUTPUT}" | awk '{print $2}'`

Для сетевого трафика: netstat -in или взгляните на счетчики статистики, которые предоставляет ethtool -S IFACE.

В обоих случаях необходимо построить дельту между двумя измерениями.

Новое значение ... похоже, связано с дельтой "текущих соединений" или с предыдущим значением.

Кстати, вы упомянули сервер мониторинга. Сервер мониторинга может делать все это самостоятельно, просто просматривая данные SNMP. Активный snmpd и наслаждаться...