| RSS



Меню

Bookmark and Share


Статистика
Ваш IP: 18.222.161.245
Вы используете: v





Сейчас на сайте:

Тех поддержка ->

Облако тэгов
ОС видио Tor Обратная сторона антенна 4.6 PHP Эксплоит Windows Server 2008 qip Virtual chroot kernel proc sysctl tune FreeBSD bridge Boot Disk Bluetooth GEO game directx Emulator Python Shell DDoS червь Conficker вирус троян Лаборатория Касперского пиратство apple iPhone ИТ-отрасль Щеголев Microsoft экономический кризис Twitter социальная сеть анонимность Лицензия Open Source ASP.NET MVC уязвимость MySQL база данных файлообмен закон франция пират Skype мобильный Deutsche Telekom Хакер киберпреступник Trend Micro кибератака Германия робот утечка данных персональные данные ноутбук интернет Китай цензура ядро Linux Торвальдс Windows Vista Acer Linux патент браузер Firefox Internet Explorer Opera Net Applications Safari Intel Linux Foundation Moblin Oracle патч банкомат кардер HSM IBM X-Force Cofee сша кибервойна Эстония Dell ИТ-специалист хакерские атаки Pirate Bay контроль кибербезопасность язык программирования The Pirate Bay Пиратская партия утечка информации приговор Mozilla Chrome безопасность Госдума СМИ Windows 8 Баллмер взлом Пентагон ботнет Украина Facebook Cisco cloud Windows XP нетбук торрент музыка биометрический nokia ФБР IP-адрес CIPAV Comcast sms RSA java Google CAPTCHA Symantec спам конфиденциальная информация инсайдер Perimetrix антивирус тест Anti-Malware Windows 7 операционная система Windows провайдер авторское право RapidShare UNIX свиной грипп шантаж дети EFF BluWiki копирайт экстремизм Panda Security cloud computing McAfee Cybercrime Response Unit Bottle Domains HTTPS ICANN студент шпионское ПО Норвегия школьник New York Times XSS YouTube Warner Music кибершпионаж КНДР Ubuntu свободное ПО AMD ATI касперский Россия РФ сервер хостинг фальшивый антивирус Comodo CA Wi-Fi D-Link суд пароль блог фишинг Одноклассники медведев контрафакт мошенник штраф Sony GPS по Gumblar JAVASCRIPT хакеры вредоносное ПО Yahoo ФАС компьютер Софт MPAA кибероружие PandaLabs Red Hat Минкомсвязи сбой ASUSTeK Computer мошенничество Доктор Веб ВКонтакте Cyber-Arc исходный код PCI DSS МВД фильтр порнография BREIN свобода слова Казахстан GEMA Autodesk сисадмин Gmail кредитная карта кибермошенник LiveJournal шифрование криптография Deep Purple банк нанотехнологии Wikipedia zero-day ColdFusion выборы кража данных DNS BIND Android BASIC атака Black Hat Mac OS X Click Forensics Clampi домен фсб Прокуратура Уголовное дело icq Barrelfish киберпреступность Sophos AT&T ошибка Electa Gamma Knife OpenBSD DARPA военные Сайт Visual Studio 2010 .NET Framework 4 Chrome OS электронная почта турция конференция спамер FTC полиция российская ОС Koobface Великобритания БЕЛОРУССИЯ грузия BSA Bittorrent облачные вычисления Azure Европа Dr.Web Билл Гейтс спецслужбы Cryzip Живой Журнал Royal Bank of Scotland смартфон Canonical Pwn2Own F-Secure Symbian Hotmail фильм

Главная » Статьи » Общие Статьи

Передовой наблюдательный пункт: Symon - удобная система мониторинга

Установка Symon

Системный монитор Symon изначально был написан для работы с OpenBSD, но сейчас поддерживает еще FreeBSD, NetBSD и Linux. Распространяется под BSD-подобной лицензией, разрешающей использовать как саму программу, так и исходный код – при условии сохранения информации об авторских правах. Программа потребляет минимум системных ресурсов и позволяет контролировать нагрузку CPU, состояние памяти, сетевых интерфейсов, разделов жесткого диска, данные PF и другие параметры. Традиционно для никсов, Symon построен по клиент-серверной архитектуре. В нем используется несколько утилит, каждая из которых выполняет свой участок работы. Система сбора информации состоит из:

  • сервера symon – собственно системный монитор, в его задачу входит сбор и пересылка данных. Для сбора некоторых системных параметров, не требующих привилегированного доступа (CPU, ОЗУ и других), может работать с правами обычного пользователя. По умолчанию после запуска переходит в chroot.
  • клиента symux – получает потоки symon и сохраняет их в RRD-файлы.

При этом один symux может получать и, соответственно, накапливать данные не только с локального, но и с нескольких удаленных серверов. Для анализа собранных данных и выдачи информации пользователю предусмотрено еще три приложения:

  • syweb – набор PHP-скриптов, использующих RRDtool для создания графиков на основе собранной информации.
  • sylcd – клиент, предназначенный для вывода данных о сетевой нагрузке текущего узла на разнообразные LCD-устройства (производства CrystalFontz и HD44780).
  • SymuxClient.pm – "родной" модуль на Perl, в качестве примера использования к нему прилагается программа getsymonitem.pl.

На просторах Сети можно найти еще ряд связанных проектов. Например, phpSymon, как и syweb, собирает данные с указанного порта и выводит их в виде красивых графиков.

Примеры конфигурационных файлов будут даны для FreeBSD. Впрочем, все сказанное, за исключением процесса установки и особенностей обозначения устройств, актуально и для других систем. Установка при помощи системы портов стандартна:

# cd /usr/ports/sysutils/symon
# make install clean

Кроме Symon, будет установлена большая группа зависимостей, включая RRDTool. Проверяем:

# pkg_info | grep symon
symon-2.79_1 Performance and information monitoring tool

Все на месте! Можно приступать к настройкам.

Конфигурационные файлы Symon

Управление symon и symux осуществляется при помощи конфигурационных файлов symon.conf и symux.conf. Копируем их шаблоны в каталог /etc/:

# cp -v /usr/local/share/examples/symon/*.conf /etc/

И приступаем к разбору. Конфигурационный файл демона symon называется /etc/symon.conf. Правило мониторинга выглядит так:

monitor "{" resources "}" [every] "stream" ["from" host] ["to"] host [ port ]

Настройки, выставленные в шаблоне, позволяют мониторить лишь четыре параметра локальной системы и отправлять результат на 2100 порт локального узла (протокол UDP):

monitor {cpu(0), mem, if(lo0), io(wd0)} stream to 127.0.0.1 2100

Контролируется загрузка процессора, ОЗУ, работа интерфейса обратной петли и жесткого диска. Это самый простой пример. Все возможные параметры приведены в справочной странице symon(8). Вот только некоторые:

  • cpu/cpuiow – загрузка процессора в состояниях (idle, user, nice, system, interrupt), плюс iowait для cpuiow. Максимальное значение 100, подсчет ведется с шагом 2.
  • df – статистика использования дискового пространства.
  • if – счетчики сетевых интерфейсов (количество принятых/отправленных пакетов, байт, ошибки, отброшенные пакеты).
  • io – производительность жесткого диска.
  • mem – состояние памяти и свопа.
  • pf/pfq – статистика пакетного фильтра PF (количество принятых и отброшенных пакетов, байт) и очереди ALTQ.
  • sensor - информация с датчиков, показывающих температуру процессора, частоту вращения кулера и др. Тип сенсора указывается в скобках.
  • proc – статистика процесса.

Кстати, сразу видны корни OpenBSD, ведь в списках нет iptables или ipfw, только pf. В ином случае придется отключать этот модуль, чтобы не возникла ошибка вроде: "fatal: pf module not available". Аналогичное сообщение будет выведено, если неправильно назван сервис для proc или сетевой интерфейс. Названия процессов для proc смотрим при помощи ps, а названия сетевых интерфейсов вспоминаются по ifconfig. Найти диски поможет fdisk или dmesg. Список сенсоров также специфичен для каждого железа, – получить его можно при помощи команды "sysctl hw.sensors".

Чтобы упростить создание конфигурационного файла, разработчики предлагают скрипт c_config.sh. После его запуска получим заготовку, куда будут записаны настройки применительно к текущей системе (сетевые интерфейсы, io разделов диска, CPU и ОЗУ):

# /usr/local/share/symon/c_config.sh > /etc/symon.conf

Остается лишь дополнить его своими параметрами. Для полноценного мониторинга "боевого" сервера, на котором работает прокси, апач, демон серых списков, MySQL и Clamd, пишем приблизительно такой конфиг:

# vi /etc/symon.conf

monitor { cpu(0),
mem,
mbuf,
pf,
df(sd0a), df(sd0d), df(sd0e),
sensor(lm0.temp0), sensor(lm0.temp1), sensor(lm0.fan0),
proc(squid), proc(httpd), proc(spamd), proc(mysqld), proc(clamd),
if(fxp0), if(fxp1), if(fxp2), if(tun0),
io(wd0), io(wd1)
} stream to 127.0.0.1 2100

Если сбор данных будет производиться на другом сервере, то вместо localhost указываем IP-адрес (или DNS-имя), на который следует отправлять собранные данные: "stream to 192.168.10.10 2100" (не забудь открыть в брандмауэре этот порт). По умолчанию, собранная информация отправляется каждые 5 секунд. Если необходимости в таком частом опросе нет, можно указать другое время, вписав в правило параметр time с указанием секунд. Проверяем правильность конфига:

# /usr/local/libexec/symon -t
/etc/symon.conf: ok

Порядок, можно стартовать. При запуске без параметров symon переходит в режим демона, поэтому не сразу понятно, чем он там занимается. Чтобы протестировать его работу, лучше выполнить команду с ключами '-d' и '–u':

# /usr/local/libexec/symon -d -u
symon version 2.79
program id=9530
debug: symon packet size=362
sending packets to udp 127.0.0.1 2100
started module io(wd0)

И так далее. Если сообщений об ошибке не получено, можно запускать в рабочем режиме:

# /usr/local/libexec/symon

Все данные направляются в сетевой порт, и работоспособность демона в этой ситуации можно отследить анализом вывода "tcpdump –i lo0" – прителнетившись к 2100 порту, или проверив наличие файла /var/run/symon.pid и процесса symon в выводе "ps au". Осталось лишь добавить symon в автозагрузку:

# vi /etc/rc.local

if [ -x /usr/local/libexec/symon ]; then
echo 'starting symon'; /usr/local/libexec/symon
fi

Данные отправлены, самое время их поймать!

Настраиваем Symux

Приступаем к настройке Symux. Конфигурационный файл symux.conf описывает источники, с которых будут приниматься данные, сами данные и каталог/файл, куда их сохранять. В одном файле могут содержаться ссылки на несколько источников:

# vi /etc/symux.conf

# На каком порту слушать входящие соединения symon
# mux 192.168.10.10 2100
mux 127.0.0.1 2100
# Определяем входящие данные для каждого источника
source 127.0.0.1 {
accept {
# Описываем, какую именно информацию принимаем (здесь просто перечисляем источники из symon.conf)
cpu(0),
mem,
mbuf,
pf,
df(sd0a), df(sd0d), df(sd0e),
sensor(lm0.temp0), sensor(lm0.temp1), sensor(lm0.fan0),
proc(squid), proc(httpd), proc(spamd), proc(mysqld), proc(clamd),
if(fxp0), if(fxp1), if(fxp2), if(tun0),
io(wd0), io(wd1)
}
# Каталог, в который будем сохранять данные
datadir "/var/www/symon/rrds/localhost"
# Опционально можно указать и названия файлов
# write sensor(lm0.fan1) in "/var/www/symon/rrds/localhost/sensor_lm0.fan0.rrd"
}
# Аналогично описываются все остальные сервера с запущенным symon

Как видишь, все просто. Конфигурационный файл составлен, проверяем:

# /usr/local/libexec/symux -t
warning: /etc/symux.conf:7: file '/var/www/symon/rrds/localhost/df_sd0e.rrd', guessedannot be opened
warning: /etc/symux.conf: no filename specified for stream 'df(sd0e)'

Кроме собственно конфига, эта команда проверит наличие всех указанных ресурсов, а также прав доступа к каталогу, в который будут сохраняться данные. Такого каталога пока нет, создаем его:

# mkdir -p /var/www/symon/rrds/localhost

Демон symux не может самостоятельно создавать RRD-файлы. Для этого используется специальный скрипт c_smrrds.sh, входящий в поставку symon. Команда для запуска выглядит так:

c_smrrds.sh [oneday] [interval <seconds>] [all] <rrd files>

В данном случае поступаем просто:

# cd /usr/local/share/symon/
# ./c_smrrds.sh all

В итоге скрипт выдаст список созданных файлов. Проверяем снова:

# /usr/local/libexec/symux -t
/etc/symux.conf: ok

Можно работать, добавляем symux в автозагрузку:

# vi /etc/rc.local

if [ -x /usr/local/libexec/symux ]; then
echo 'starting symux'; /usr/local/libexec/symux
fi

Так же, как и symon, симуксу при запуске можно передать ряд параметров. Например, ключ '-l' позволяет просмотреть список активных файлов, куда собираются данные в текущей конфигурации. Чтобы увидеть отладочную информацию, первый запуск произведем с ключом '-d'.

# /usr/local/libexec/symux -d
debug: rrdupdate -- /var/www/symon/rrds/localhost/df_sd0e.rrd
1233494631:15630616:8801288:8801288:0:0:0:0

Данные пришли. Теперь на них нужно как-то посмотреть.

Анализируем данные

Как уже говорилось, для анализа собранной информации проект предлагает несколько скриптов. Один из них (модуль SymuxClient.pm и скрипт getsymonitem.pl) после установки можно найти в /usr/local/share/symon/client. Скрипт довольно прост в работе; в общем случае вызов выглядит так:

./getsymonitem.pl <symux host> <symux port> <measured host> <stream> <item>

# cd /usr/local/share/symon/client
# ./getsymonitem.pl 127.0.0.1 2100 127.0.0.1 'cpu(0)' user
12.80

В качестве последнего параметра используем информацию из "man 8 symux". Применительно к CPU это: user, nice, system, interrupt, idle.

Более наглядно представляют информацию скрипты, написанные на PHP, — syweb или phpSymon. Для их работы нам понадобится связка Apache + PHP, описание настройки которой неоднократно приводилось в нашем журнале, поэтому останавливаться на этом не будем. Скачиваем и распаковываем архив syweb:

# wget -c http://www.xs4all.nl/~wpd/symon/philes/syweb-0.58.tar.gz
# tar zxf syweb-0.58.tar.gz

Копируем находящиеся внутри каталоги htdocs и symon в DocumentRoot веб-сервера:

# cd syweb
# cp -rv htdocs/syweb /var/www
# cp -rv symon /var/www

Веб-сервер должен считывать с них данные, поэтому меняем владельца каталога (в Free/OpenBSD апач работает от имени учетной записи www):

# chown -R www:www /var/www/syweb/
# chown -R www:www /var/www/symon/

В файле syweb/setup.inc необходимо изменить несколько переменных под наши реалии. В нем есть несколько заготовок для различных систем Free/OpenBSD и ситуаций (с chroot или без):

# vi /var/www/syweb/setup.inc

$symon['rrdtool_path']='/usr/local/bin/rrdtool';
$symon['cache_dir']='/var/www/symon/cache';
$symon['host_tree']='/var/www/symon/rrds';
$symon['layout_dir']='/var/www/symon';

Все указанные каталоги у нас уже созданы, остался каталог для кэша:

# mkdir /var/www/symon/cache
# chown www:www /var/www/symon/cache

Если веб-сервер запускается в chroot, дополнительно следует запустить скрипт, находящийся в архиве install_rrdtool.sh, который перенесет библиотеки rrd в chroot-окружение.

Все готово, заходим на страницу http://localhost/syweb и смотрим красивые графики. Используя меню, можно изменить временной промежуток и их размер. В отдельный пункт вынесена статистика PF. Если необходимо защитить эту информацию от посторонних лиц, можно использовать .htaccess:

# vi /var/www/syweb/.htaccess

AuthName "Syweb zone"
AuthType Basic
AuthUserFile /usr/local/etc/apache/httpd_access
require valid-user

Пароль создаем при помощи утилиты htpasswd, входящей в состав Apache:

# htpasswd -c /usr/local/etc/apache/httpd_access admin

Как видишь, Symon довольно простой и понятный в настройках инструмент, при помощи которого можно снимать статистику основных системных параметров сразу с нескольких серверов.

МИНИ СТАТЬЯ: установка symon/symux в Ubuntu/Debian

Направленность на *BSD-системы сказалась на том, что найти symon в репозитариях дистрибутивов Linux непросто. Повезло, разве что, гентушникам. Поэтому пользователям остальных дистрибутивов Linux придется собирать эту систему мониторинга самостоятельно. Но благо, процесс стандартен, и сюрпризов обычно не бывает. Cборка в Linux осуществляется при помощи Pmake, который по умолчанию не устанавливается:

$ sudo apt-get install pmake

Далее скачиваем и распаковываем архив с symon-x.xx.tar.gz. Переходим в созданный каталог и даем команды:

$ pmake
$ sudo pmake install

В отличие от BSD, установка исполняемых файлов производится в /usr/local/bin. Если при компиляции будет выдано сообщение: "symux.c:46:17: error: rrd.h: No such file or Directory", значит, в системе отсутствуют заголовочные файлы RRDTool. Доустанавливаем пакет librrd2-dev и повторяем попытку. Или – собираем Symux отдельно. Также в Linux обязательно заводим учетную запись "_symon":

$ sudo useradd -d /var/empty -L daemon -c 'symon account' -s /sbin/nologin _symon

INFO

Названия процессов для proc смотрим при помощи ps, названия сетевых интерфейсов вспоминаются по ifconfig, а диски поможет найти fdisk или dmesg.

Список сенсоров специфичен для каждого железа, получить его можно при помощи команды "sysctl hw.sensors".

Подробнее о RRDTool читай в статье "Универсальный наблюдатель".

Категория: Общие Статьи | Добавил: aka_kludge (31.07.2009) | Автор: Sergey Jaremchuk feat. Andrey Matv
Просмотров: 2383 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
    Главная      
...
На службе : дней

06:57
Обновить


Пользователи
aka_kludge
qwerty
LeadyTOR
aka_Atlantis
AdHErENt
mAss
Sissutr
hiss
DrBio
tHick

Поиск


Copyright tHR - TeAM 2024 г. admin: aka_kludge (ICQ:334449009) Moderator's: LeadyTOR, ... Яндекс.Метрика