У нас есть полностью функциональная сеть с двумя стеками, работающая в нашем бизнесе. Кто-нибудь нашел простой инструмент для мониторинга соотношения IPv4 и IPv6 трафика на данном хосте? Когда я говорю "простой", я имею в виду демон / службу, похожую на 'vnstat'
Идеальный отчет в простейшей форме выглядел бы примерно так:
Total IPv4 IPv6 Ratio
This Month: 300gb 100gb (33%) 200gb (66%) 1:2
This Week: 5gb 1gb (20%) 4gb (80%) 1:4
Today: 1.2gb 400mb (33%) 800mb (66%) 1:2
Простите меня, если какая-то моя математика неверна, поэтому мне нужен инструмент;)
Меня в первую очередь интересуют хосты Linux (CentOS 6), но также могут быть полезны любые инструменты Windows (2008R2).
Я нашел тему, предлагающую netstat -s -6 | grep -i octets
но -6
опция недопустима в CentOS 6; Я предполагаю, что это недавнее дополнение к netstat.
Я уже делаю это и уже некоторое время использую Мунин и собственный плагин, который я написал сам, который получает данные из iptables
правила аудита. Он работает на коробке C6, поэтому вы сможете погрузить его вилочным погрузчиком на место, если ни у кого нет лучших идей. Это не тот простой однострочник, который вам нужен, но он работает и выдает такие данные:
Плагин достаточно прост, он просто берет данные из двух плоских файлов, созданных в /var/tmp
:
#!/bin/bash
#
# (c) Gatekeeper Technology Ltd., 2013
# May be used under the terms of GPLv3 or, at your discretion, any later version
if [ "$1" = "config" ]; then
echo 'graph_title Network Throughput'
echo 'graph_category network'
echo 'graph_info This is the total throughput on the NIC since the beginning of the calendar month, or the last reboot, whichever was mo
st recent.'
echo 'graph_vlabel bytes'
echo 'graph_args --logarithmic'
echo 'in4.label in v4'
echo 'in4.colour ff0000'
echo 'out4.label out v4'
echo 'out4.colour 00ff00'
echo 'in6.label in v6'
echo 'in6.colour aa0088'
echo 'out6.label out v6'
echo 'out6.colour 00aa88'
echo 'total.label total'
echo 'total.colour 0000ff'
exit 0
fi
out=`head -3 /var/tmp/audit.out.counts | tail -1 | awk '{print $2}'`
echo "out4.value $out"
in=`head -3 /var/tmp/audit.in.counts | tail -1 | awk '{print $2}'`
echo "in4.value $in"
out6=`head -3 /var/tmp/audit.out.v6.counts | tail -1 | awk '{print $2}'`
echo "out6.value $out6"
in6=`head -3 /var/tmp/audit.in.v6.counts | tail -1 | awk '{print $2}'`
echo "in6.value $in6"
total=$(($in+$out+$in6+$out6))
echo "total.value $total"
Запись crontab, которая их делает, выглядит так:
# output the audit rule counts for munin purposes
* * * * * /sbin/iptables -L AUDIT-I -n -x -v > /var/tmp/audit.in.counts
* * * * * /sbin/iptables -L AUDIT-O -n -x -v > /var/tmp/audit.out.counts
* * * * * /sbin/ip6tables -L AUDIT-I -n -x -v > /var/tmp/audit.in.v6.counts
* * * * * /sbin/ip6tables -L AUDIT-O -n -x -v > /var/tmp/audit.out.v6.counts
# and zero the counts once a month
0 0 1 * * /sbin/iptables -Z AUDIT-I
0 0 1 * * /sbin/iptables -Z AUDIT-O
0 0 1 * * /sbin/ip6tables -Z AUDIT-I
0 0 1 * * /sbin/ip6tables -Z AUDIT-O
и iptables
правила составлены со следующими /etc/sysconfig/iptables
правила:
:AUDIT-I - [0:0]
:AUDIT-O - [0:0]
# audit input traffic
-A INPUT -i eth0 -j AUDIT-I
[ALL OTHER INPUT RULES APPEAR HERE, AFTER THE AUDIT RULE]
# audit outbound traffic
-A OUTPUT -o eth0 -j AUDIT-O
[ALL OTHER OUTPUT RULES APPEAR HERE, AFTER THE AUDIT RULE]
# AUDIT rules
-A AUDIT-I -p all
-A AUDIT-O -p all
Причина crontab
задействован, чтобы остановить плагин munin, который должен запускаться с привилегиями root; если вы не возражаете, вы можете настроить плагин для получения счетчиков пакетов напрямую, вызвав iptables
сам.
Счетчики не сохраняются после перезагрузки (отсюда дополнительное падение до нуля на графике выше), но если ваш сервер настроен на сохранение iptables
правила и количество пакетов при перезагрузке это не повлияет на вас.
Вы можете попробовать этот плагин IPv6 Munin на GitHub: