Передовой наблюдательный пункт. Symon: удобная система мониторингаSergey Jaremchuk feat. Andrey Matveev Плох тот админ, кто не контролирует состояние подопечных систем. Потраченное на установку даже простейшей системы мониторинга время окупится с лихвой. Лениться в этом вопросе не стоит, да и выбор готовых решений, распространяемых под свободными лицензиями, сегодня достаточно велик. Системный монитор Symon обладает хорошей функциональностью, весьма прост в настройках, а генерируемые им графики наглядны и информативны. Установка SymonСистемный монитор Symon (www.xs4all.nl/~wpd/symon) изначально был написан для работы с OpenBSD, но сейчас поддерживает еще FreeBSD, NetBSD и Linux. Распространяется под BSD-подобной лицензией, разрешающей использовать как саму программу, так и исходный код – при условии сохранения информации об авторских правах. Программа потребляет минимум системных ресурсов и позволяет контролировать нагрузку CPU, состояние памяти, сетевых интерфейсов, разделов жесткого диска, данные PF и другие параметры. Традиционно для никсов, Symon построен по клиент-серверной архитектуре. В нем используется несколько утилит, каждая из которых выполняет свой участок работы. Система сбора информации состоит из:
При этом один symux может получать и, соответственно, накапливать данные не только с локального, но и с нескольких удаленных серверов. Для анализа собранных данных и выдачи информации пользователю предусмотрено еще три приложения:
На просторах Сети можно найти еще ряд связанных проектов. Например, phpSymon (www.ryanflannery.net/works/phpsymon), как и syweb, собирает данные с указанного порта и выводит их в виде красивых графиков. Примеры конфигурационных файлов будут даны для FreeBSD. Впрочем, все сказанное, за исключением процесса установки и особенностей обозначения устройств, актуально и для других систем. Установка при помощи системы портов стандартна:
Кроме Symon, будет установлена большая группа зависимостей, включая RRDTool. Проверяем:
Все на месте! Можно приступать к настройкам. Конфигурационные файлы SymonУправление symon и symux осуществляется при помощи конфигурационных файлов symon.conf и symux.conf. Копируем их шаблоны в каталог /etc/:
И приступаем к разбору. Конфигурационный файл демона symon называется /etc/symon.conf. Правило мониторинга выглядит так:
Настройки, выставленные в шаблоне, позволяют мониторить лишь четыре параметра локальной системы и отправлять результат на 2100 порт локального узла (протокол UDP):
Контролируется загрузка процессора, ОЗУ, работа интерфейса обратной петли и жесткого диска. Это самый простой пример. Все возможные параметры приведены в справочной странице symon(8). Вот только некоторые:
Кстати, сразу видны корни OpenBSD, ведь в списках нет iptables или ipfw, только pf. В ином случае придется отключать этот модуль, чтобы не возникла ошибка вроде: «fatal: pf module not available». Аналогичное сообщение будет выведено, если неправильно назван сервис для proc или сетевой интерфейс. Названия процессов для proc смотрим при помощи ps, а названия сетевых интерфейсов вспоминаются по ifconfig. Найти диски поможет fdisk или dmesg. Список сенсоров также специфичен для каждого железа, – получить его можно при помощи команды «sysctl hw.sensors». Чтобы упростить создание конфигурационного файла, разработчики предлагают скрипт c_config.sh. После его запуска получим заготовку, куда будут записаны настройки применительно к текущей системе (сетевые интерфейсы, io разделов диска, CPU и ОЗУ):
Остается лишь дополнить его своими параметрами. Для полноценного мониторинга «боевого» сервера, на котором работает прокси, апач, демон серых списков, MySQL и Clamd, пишем приблизительно такой конфиг:
Если сбор данных будет производиться на другом сервере, то вместо localhost указываем IP-адрес (или DNS-имя), на который следует отправлять собранные данные: «stream to 192.168.10.10 2100» (не забудь открыть в брандмауэре этот порт). По умолчанию, собранная информация отправляется каждые 5 секунд. Если необходимости в таком частом опросе нет, можно указать другое время, вписав в правило параметр time с указанием секунд. Проверяем правильность конфига:
Порядок, можно стартовать. При запуске без параметров symon переходит в режим демона, поэтому не сразу понятно, чем он там занимается. Чтобы протестировать его работу, лучше выполнить команду с ключами '-d' и '–u':
И так далее. Если сообщений об ошибке не получено, можно запускать в рабочем режиме:
Все данные направляются в сетевой порт, и работоспособность демона в этой ситуации можно отследить анализом вывода «tcpdump –i lo0» – прителнетившись к 2100 порту, или проверив наличие файла /var/run/symon.pid и процесса symon в выводе «ps au». Осталось лишь добавить symon в автозагрузку:
Данные отправлены, самое время их поймать! Настраиваем SymuxПриступаем к настройке Symux. Конфигурационный файл symux.conf описывает источники, с которых будут приниматься данные, сами данные и каталог/файл, куда их сохранять. В одном файле могут содержаться ссылки на несколько источников:
Как видишь, все просто. Конфигурационный файл составлен, проверяем:
Кроме собственно конфига, эта команда проверит наличие всех указанных ресурсов, а также прав доступа к каталогу, в который будут сохраняться данные. Такого каталога пока нет, создаем его:
Демон symux не может самостоятельно создавать RRD-файлы. Для этого используется специальный скрипт c_smrrds.sh, входящий в поставку symon. Команда для запуска выглядит так:
В данном случае поступаем просто:
В итоге скрипт выдаст список созданных файлов. Проверяем снова:
Можно работать, добавляем symux в автозагрузку:
Так же, как и symon, симуксу при запуске можно передать ряд параметров. Например, ключ '-l' позволяет просмотреть список активных файлов, куда собираются данные в текущей конфигурации. Чтобы увидеть отладочную информацию, первый запуск произведем с ключом '-d'.
Данные пришли. Теперь на них нужно как-то посмотреть. Анализируем данныеКак уже говорилось, для анализа собранной информации проект предлагает несколько скриптов. Один из них (модуль SymuxClient.pm и скрипт getsymonitem.pl) после установки можно найти в /usr/local/share/symon/client. Скрипт довольно прост в работе; в общем случае вызов выглядит так:
В качестве последнего параметра используем информацию из «man 8 symux». Применительно к CPU это: user, nice, system, interrupt, idle. Более наглядно представляют информацию скрипты, написанные на PHP, — syweb или phpSymon. Для их работы нам понадобится связка Apache + PHP, описание настройки которой неоднократно приводилось в нашем журнале, поэтому останавливаться на этом не будем. Скачиваем и распаковываем архив syweb:
Копируем находящиеся внутри каталоги htdocs и symon в DocumentRoot веб-сервера:
Веб-сервер должен считывать с них данные, поэтому меняем владельца каталога (в Free/OpenBSD апач работает от имени учетной записи www):
В файле syweb/setup.inc необходимо изменить несколько переменных под наши реалии. В нем есть несколько заготовок для различных систем Free/OpenBSD и ситуаций (с chroot или без):
Все указанные каталоги у нас уже созданы, остался каталог для кэша:
Если веб-сервер запускается в chroot, дополнительно следует запустить скрипт, находящийся в архиве install_rrdtool.sh, который перенесет библиотеки rrd в chroot-окружение. Все готово, заходим на страницу
Пароль создаем при помощи утилиты htpasswd, входящей в состав Apache:
Как видишь, Symon довольно простой и понятный в настройках инструмент, при помощи которого можно снимать статистику основных системных параметров сразу с нескольких серверов. Установка symon/symux в Ubuntu/DebianНаправленность на *BSD-системы сказалась на том, что найти symon в репозитариях дистрибутивов Linux непросто. Повезло, разве что, гентушникам (gentoo-portage.com/net-analyzer/symon). Поэтому пользователям остальных дистрибутивов Linux придется собирать эту систему мониторинга самостоятельно. Но благо, процесс стандартен, и сюрпризов обычно не бывает. Cборка в Linux осуществляется при помощи Pmake, который по умолчанию не устанавливается:
Далее скачиваем и распаковываем архив с symon-x.xx.tar.gz. Переходим в созданный каталог и даем команды:
В отличие от BSD, установка исполняемых файлов производится в /usr/local/bin. Если при компиляции будет выдано сообщение: «symux.c:46:17: error: rrd.h: No such file or Directory», значит, в системе отсутствуют заголовочные файлы RRDTool. Доустанавливаем пакет librrd2-dev и повторяем попытку. Или – собираем Symux отдельно. Также в Linux обязательно заводим учетную запись «_symon»:
INFO
VIDEOНа прилагаемом к журналу диске ты найдешь видеоролик, где показано, как с помощью symon настроить систему мониторинга серверов. WWW
|