netflow, sflow
Установка
Установка коллектора netflow, sflow с ролью v98765_nfdump. Пакеты есть для ubuntu,debian. Роль только для этих ОС с systemd.
Примеры использования
man nfdump
для справки.
Индекс интерфейса пишется тоже по умолчанию. Выбрать top 1 srcip, где snmp-индекс исходящего интерфейса 12, чтобы посмотреть откуда качают. Заменить на dstip, чтобы посмотреть с каких адресов.
nfdump -r [filename] 'out if 12' -s srcip -O bytes -n 1
Проверка маркировки телефонной сигнализации
nfdump -r [filename] -c 1 'tos > 0 and port 5060' -o long
Проверка отсутствия маркировки на пакетах от/до АТС.
nfdump -r [filename] 'host 10.00.00.0 and tos 0' -o long
Top10 за 1 апреля
nfdump -R 2021/04/01 -s srcip -O bytes
Фрагменты
nfdump -r [filename] '(proto tcp and flags F and dst ip in [ 999.888.777.0/22 ] and dst port in [ 80 445 443 ]) %nf_fragment ' -c 10
man nfdump
прямо так по флагам.
nfdump -r [filename] '(proto tcp and flags S and not flags ARFPU and dst ip in [ 999.888.777.0/22 ] and port in [ 80 443 445 ]) %nf_syn' -c 10
nfdump -r [filename] '(proto udp and dst ip in [ 999.888.777.0/22 ] and port in [ 53 123 161 80 3389 ] )' -c 10
nfdump -r [filename] '(proto icmp and dst ip in [ 999.888.777.0/22 ] )' -A dstip
Место на диске
Есть утилита nfexpire
но она только для файлов с именем nfdump.*
. Если переименовать файлы, то бесполезна.
root@flows:/var/lib/flows# nfexpire -h
usage nfexpire [options]
-h This text
-l datadir List stat from directory
-e datadir Expire data in directory
-r datadir Rescan data directory
-u datadir Update expire params from collector logging at <datadir>
-s size max size: scales b bytes, k kilo, m mega, g giga t tera
-t lifetime maximum life time of data: scales: w week, d day, H hour, M minute
-w watermark low water mark in % for expire.
root@flows:/var/lib/flows# for i in `ls` ; do echo -n "$i has " ; nfexpire -l $i | grep Status ; done
router1 has Status: OK
router2 has Status: OK
switch1 has Status: OK
switch2 has Status: OK
root@flows:/var/lib/flows# for i in `ls` ; do nfexpire -u $i -s 5g -t 8w ; done
Можно ставить node_exporter с collector.textfile и генерить метрики
агрегация статистики
С сохранением в файл в формате nfdump, агрегацией и сжатием -A srcip,dstip -j
.
#!/bin/bash
cd /var/cache/nflow
filecounter=0
for file in `find . -name 'nfcapd.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'` ; do
aggfile=$(echo ${file} | sed s/nfcapd/ajnfcapd/)
nfdump -A srcip,dstip -j -a -r ${file} -w ${aggfile}
[ -f ${aggfile} ] && rm -f ${file} && let filecounter=${filecounter}+1
done
date >> add.log
echo " $filecounter" >> add.log
поиск по файлам за период
Для случаев когда нужно выбрать конкретные данные
#!/bin/bash
cd /var/cache/nflow
mkdir -p reports
echo 'enter ip address'
read varip
# создание каталогов для отчета по Ip-адресу
mkdir -p reports/${varip}
# поиск данных по каталогам статистики
date
for m in $(find ./20* -maxdepth 1 -mindepth 1 -type d -name "[0-9][0-9]"); do
reportdata=$( echo $m | tr -d './')
set -x bash
targetnfdump="reports/${varip}/nfdump.${reportdata}"
nfdump -R $m "host ${varip}" -w $targetnfdump
nfdump -r $targetnfdump -o "fmt:%ts;%sa;%da" > reports/${varip}/${reportdata}.txt
set +x bash
done
date
Лучше запускать в screen
, потому что долго.
просмотр текущих данных
Файлы ротируются с интервалом раз в 15 минут, поэтому долго ждать актуальных данных. Просмативать можно и текущий временный файл. Время должно быть синхронизировано.
#!/bin/bash -x
cd /var/cache/nflow
filecurr=$(ls nfcapd.current*)
timewin=$(date -d "-1 minutes" +%Y/%m/%d.%H:%M)
nfdump -r $filecurr -t $timewin
vmware
Помимо телекоммуникационного оборудования, для сбора статистики по трафику можно использовать возможности vmware Configure the NetFlow Settings of a vSphere Distributed Switch