Визуализация системных процессов с помощью mrtg
Администрирование
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.
Постоянная ссылка: http://www.nixp.ru/articles/32.html
Надеюсь, данный опус поможет желающим представлять важные параметры своей системы в виде графиков для удобства мониторинга. Эта система работает у меня на FreeBSD 5.4-STABLE.
Надеюсь, данный опус поможет желающим представлять важные параметры своей системы в виде графиков для удобства мониторинга. Эта система работает у меня на FreeBSD 5.4-STABLE.
Нам понадобится:
- mrtg (про rrdtool мне известно, но нет желания разбираться с форматом базы данных);
- Apache;
- самописный скрипт, который, собственно, и будет скармливать mrtg необходимые параметры, на основе которых и строится график;
- софт, выдающий информацию, которую от него просят ;-) Это может быть все, что угодно: счетчики трафика, команда du… — хоть средства для получения сведений о погоде на Марсе, но здесь я буду использовать ipfw.
Устанавливаем Apache:
# cd /usr/ports/www/apache13/ && make install
Если у вас старая верия, то можете обновить ее с помощью portupgrade или portinstall -r, обновив порты. Я рекомендую не использовать для обновления дерева портов cvsup — можно обойтись вытягиванием тарболла с сервера ftp.citkit.ru:
$ cd /usr $ fetch ftp://ftp.citkit.ru/pub/FreeBSD/ports/ports/ports.tar.gz $ tar xvfz ports.tar.gz $ cd /usr/ports/ # make fetchindex
Quod erat demonstrandum — все гораздо проще и быстрее. После этого производим настройку httpd.conf по вкусу.
Далее устанавливаем mrtg:
# cd /usr/ports/net-mgmt/mrtg && make install
Он вытянет за собой и библиотеку gd, которая и занимается отрисовкой, да и не только ее ;-)
Теперь самое важное. Вообще, mrtg очень хорошо работает с snmp-агентами, но в данном примере мы не будем ими пользоваться, а получать информацию от ipfw, для чего напишем следующие правила:
# ipfw add 50 count ip from any to any in via <вненшний интерфейс> # ipfw add 51 count ip from any to any out via <внешний интерфейс>
и поместим их в скрипт, выполняющийся при запуске системы.
Далее, нам необходимо получать информацию о входящих/исходящих байтах данных и отдавать ее mrtg:
#!/bin/sh
/sbin/ipfw show 50 | /usr/bin/awk {'print $3'} /sbin/ipfw show 51 | /usr/bin/awk {'print $3'} echo fxp0
То есть, мы отдаем 3 строки: количество входящих байт, количество исходящих и имя интерфейса.
Далее пишем конфигурационный файл mrtg:
WorkDir: /usr/local/www/data/mrtg Pagetop[fxp0]: Traffic on fxp0 Title[fxp0]: Traffic fxp0 MaxBytes[fxp0]: 1250000 AbsMax[fxp0]: 1250000 Target[fxp0]: `/usr/local/etc/ipfw` XSize[fxp0]: 400 YSize[fxp0]: 100 WithPeak[fxp0]: w m y
Здесь WorkDir — каталог, где будут храниться html и рисунки, содержащие графики загрузки внешней сетевой карты. AbsMax и MaxBytes — максимальные параметры, если получаемые нами цифры будут больше, то они не будут учитываться. Параметр Target является для нас наиболее важным, т.к. именно это есть источник данных о целевом объекте. Сюда мы просто впишем полный путь нашего скрипта, получающего данные. XSize/YSize — количество пикселов в картинке по горизонтали/вертикали. WithPeak — изображение пиков в графике (week, month, year).
Далее запускаем indexmaker для создания html-странички:
# indexmaker /usr/local/etc/mrtg/mrtg.cfg > /usr/local/www/data/mrtg/index.html
Также поместим вызов mrtg под управление cron:
0-59/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg — logging /usr/local/www/data/mrtg/fxp0.log
Перезапустим cron:
# killall -HUP cron
Остался последний штрих:
# apachectl start
После этого радуемся жизни, видя, как формируется картинка. Если кто-то потянет большой файл — например, очередной эротический фильм — вы легко это заметите ;-)
-
Популярные в этом разделе:
- «Настройка сервера SSH (теория и практика)»,
- «Реализация отправки и приёма SMS с помощью Gnokii»,
- «Настройка сервера OpenLDAP».
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1