Мне нужно каждую минуту собирать определенные данные мониторинга и отправлять их на сервер мониторинга. Источник этих данных должен быть проанализирован с помощью стандартных инструментов 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
и наслаждаться...