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

Мониторинг IPv4 и IPv6 трафика

У нас есть полностью функциональная сеть с двумя стеками, работающая в нашем бизнесе. Кто-нибудь нашел простой инструмент для мониторинга соотношения 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:

https://github.com/MorbZ/munin-ipv6