The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Мониторинг сетевой подсистемы FreeBSD (swi1:net) (freebsd monitoring network mrtg)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: freebsd, monitoring, network, mrtg,  (найти похожие документы)
From: Виктор Цедрик aka TSYUHA <tsyuha@mail.ru.> Newsgroups: email Date: Mon, 20 Oct 2008 17:02:14 +0000 (UTC) Subject: Мониторинг сетевой подсистемы FreeBSD (swi1:net) Написать данную статью меня побудило падение интернета на нашей техплощадке. То есть иногда 50-100 мегабитный поток внезапно превращался в 10 мегабитный, а то и вообще рвался. После долгих общений с вышестоящим провайдером и многочасовых изучений выводов различных команд было решено, что какой-то из компьютеров сети (всего около 1200) генерирует множество пакетов в направлении Интернета. Опытным путем, а именно выдергиванием джеков, злоумышленник, если его можно так назвать, был установлен и обезврежен. Причиной, как вы догадались, являлись банальные вирусы. Данный мануал поможет желающим представить важные параметры своей сетевой подсистемы в виде графиков для удобства мониторинга. Эта система работает у меня на FreeBSD 7.0-STABLE и четырехядерном Пентиум-4. На нем осуществляется подсчет трафика и nat всей сети. Нам понадобится: * Mrtg; * Apache; * PHP (я для простоты написал на нем сам скрипт, но можно использовать любой язык по своему вкусу) * Awk * самописный скрипт на основе которого и будут строиться графики. Основой скрипта является наблюдение при помощи команды top -S за загрузкой процесса swi1:net, отвечающей за сетевую подсистему; Устанавливаем mrtg: # cd /usr/ports/net-mgmt/mrtg && make install Он сам вытянет за собой несколько библиотек, необходимых ему для работы. В данном примере я буду получать информацию непосредственно с вывода команды top -S. Скрипт будет выглядеть следующим образом: /home/ts/graph/swi.php <?php //из вывода top-а выделяем относящееся к swi1:net и отсоединяем значение загруженности //(число) $swi = `top -S|grep swi1|awk '{print $11}'`; //убираем знак процента (%) $swi = substr($swi, 0, -2); //Делаем вывод целым (необходимо для mrtg) $swi=intval($swi);\ //вывод значения. Осуществляется дважды из-за капризности mrtg. echo $swi; echo "\n"; echo $swi; ?> То есть, мы отдаем 2 одинаковых строки - загрузка (в процентах) сетевой подсистемы FreeBSD. Далее пишем конфигурационный файл mrtg: WorkDir: /usr/local/www/apache22/data Target[swi]: `/usr/local/bin/php /home/ts/graph/swi.php` Options[_]: gauge, noo,growright,nopercent MaxBytes[_]: 100 WithPeak[_]: ymwd Title[swi]: Analysis of SWI:NET load averages PageTop[swi]: <H1>SWI:NET Load Averages</H1> ShortLegend[swi]: % YLegend[swi]: % of Load Здесь WorkDir - каталог, где будут храниться html и рисунки, содержащие графики загрузки внешней сетевой карты. MaxBytes - максимальное значение параметров (в нашем случае -100, т.к. используются проценты. Параметр Target является для нас самым важным, т.к. именно это есть источник данных о целевом процессе. Сюда мы просто впишем полный путь нашего скрипта, получающего данные. WithPeak - изображение пиков в графике (week, month, year). Далее запускаем indexmaker для создания html-странички: # indexmaker /usr/local/etc/mrtg/mrtg.cfg > /usr/local/www/apache22/data/index.html Также поместим вызов mrtg под управление cron: */5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg --logging /usr/local/www/apache22/data/mrtg.log После этого внимательно следим за адресом http://localhost/index.html на предмет выявления чрезвычайной загруженности сетевой подсистемы и принятия решительных мер по ее устранению.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, OLD (ok), 11:35, 27/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    SNMP автором проигнорирован по какой-то причине, или просто не известен?
     
     
  • 2.3, Антон (??), 11:50, 27/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >SNMP автором проигнорирован по какой-то причине, или просто не известен?

    snmpd нет смысла поднимать ради одного графика. В статье скорее пример как можно для любых изменяющихся параметров системы строить график. Я например, график по интенсивности ввода/вывода всегда строю, здесь вам никакой snmp не поможет без дополнительных надстроек.

     

  • 1.2, denis (??), 11:46, 27/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Cacti + snmpd = и ничего не нужно изобретать
     
     
  • 2.4, Andrew Kolchoogin (?), 13:21, 27/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    И в какое место SNMP отдает активность работы сетевой подсистемы ядра? (Смотреть на счетчики байт сетевых интерфейсов не предлагать: сетевой стек можно ухайдакать кучей мелких пакетиков).
     
     
  • 3.6, Dyr (??), 17:42, 27/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Есть системы мониторинга таких аномалий, например, простейший ourmon (правда, грузит проц, поскольку мониторит трафик через libalias). А вообще график по счётчикам ПАКЕТОВ даст вполне наглядную картину, особенно если вместе с с графиком трафика.
     
  • 3.7, User294 (ok), 18:14, 27/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >на счетчики байт сетевых интерфейсов не предлагать: сетевой стек можно ухайдакать
    >кучей мелких пакетиков).

    А счетчиков пакетов что, нет? (disclaimer: меня правда бсд мало интересует, мне актуальнее линуксы, зато вот snmp и мониторинг c графиками - очень даже интересно).

     

  • 1.5, MiB (?), 15:46, 27/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    использовать php для того чтобы выполнять команды shell это сила.
     
  • 1.9, dimasp (?), 02:32, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А у меня почему-то здесь отказался нормально работать 'awk'. И насколько я помню mrtg ожидает получить себе на вход четыре переменные, в их числе uptime.
    На перл получился вот такой рабочий swi.pl:

    $line = 'top -S|grep swi1';
    ($a1,$a2,$a3,$a4,$a5,$a6,$a7,$a8,$a9,$swi,$a11,$a12) = split(" ",$line);
    $swi = substr($swi, 0, -2);
    print "$swi\n";
    print "$swi\n";
    print "192.168.11.60\n";        ### 'ip'
    $up = 'uptime';
    print "$up";                    ### 'uptime'

     
  • 1.10, Konstantin (??), 10:25, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    можно еще так переписать:

    #!/usr/local/bin/perl

    my $ip='192.168.0.1';
    my $swi=0;
    foreach('top -S')
    {
            if(/(\d+\.\d+)\%\s+swi1:/)
            {
                    $swi=$1;
                    last;
            }
    }
    print "$swi\n$swi\n$ip\n".'uptime';

     
  • 1.11, terminus (ok), 10:56, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    netstat -inb байтики с интерфейсов без SNMP.
    ИМХО MRTG уже не модно - cacti рулез.
     
  • 1.12, cvsup (ok), 11:15, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Эта система работает у меня на <..> четырехядерном Пентиум-4

    к сожалению, таких моделей не существует %)

     
  • 1.13, Tr0jan (?), 16:42, 12/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Доброго времени суток Я прочел статью, у меня такая проблемка Есть тачка Fre... большой текст свёрнут, показать
     
  • 1.14, ddenia (??), 10:49, 17/10/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Я всегда пользуюсь мониторингом онлайн, точнее трафшов... http://it-admin.org/os-freebsd/ustanovka-utility-trafshow-iz-portov-vo-freebs
    а также, ставлю на свои системы http://blogfreebsd.com/freebsd/monitoring-freebsd-servera-s-otpravkoj-otcheta
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру