В начало → Сетевые сервисы → Мониторинг работы системы |
В данной статье описывается, как осуществить мониторинг разных системных и физических параметров компьютеров, работающих под GNU/Linux или другими UNIX.
Постановка задачи
Нужно осуществлять постоянный мониторинг основных параметров работы компьютеров (физических и системных) через сеть, собирать и выдавать эту информацию в удобной форме.
Для примера см: http://monitoring.sourceforge.net/example.html
К основным системным параметрам относят: загрузка процессоров (пользователями, системой, привилегированными программами, свободное процессорное время), использования оперативной памяти (и многие другие, всего больше 100), дисков, сетевого трафика. Для получения необходимых нам значений параметров работы системы используем программы df, sar и iptables или ipfw.
К физическим параметрам относят: температуру процессора и материнской платы, скорость вращения вентиляторов, напряжения питания. Для получения показателей датчиков материнских плат используется модуль ядра I2C и программа lm_sensors.
Для передачи информации через сеть используем клент-серверную модель и программу Net-Telnet. Базу данных строим пакетом rrdtool, информацию предоставляем через сервер apache и/или по почте. С помощью скриптов постараемся максимально упростить и автоматизировать поставленную задачу, это избавит вас от рутинной работы.
Программа работает по клиент-серверной технологии. На компьютерах, которые нужно мониторить, размещается часть программы, которая снимает различные показатели работы компьютера и выдает их по запросу через сеть. На одном административном компьютере осуществляется периодический опрос всех компьютеров, за которыми ведется наблюдение, данные записываются в специально созданную базу, и на её основе формируется html страница, которая экспортируется через apache для просмотра обычным браузером.
Теперь подробно о том, что нам нужно сделать:
Загружаем последнюю версию программы для мониторинга с сайта http://monitoring.sourceforge.net/ Файл monitoring-*.tar.bz2 размещаем в доступном месте, например в папке локального ftp: /var/ftp/pub/linux.
Разархивируйте monitoring-*.tar.bz2.
У Gentoo есть ебилд, для установки программы monitoring со всеми зависимостями. С сайта необходимо скачать monitoring-*.ebuild.tar.bz2 и распаковать его в /usr/local. Далее выполните:
# emerge -pv monitoring
[ebuild N ] net-analyzer/monitoring-0.11 USE="-admin -apache2 -lm_sensors -server"
Для серверной стороны необходимо добавить USE="server", а для поддержки мониторинга датчиков USE="lm_sensors"
# export "USE=lm_sensors server"
# emerge monitoring
Компиляция и установка lm_sensors, sysstat, iptables, coreutils, xinetd в случае использования Gentoo можно пропустить, потому что эти пакеты уже установлены как зависимости, и перейти сразу к их настройке.
Определяем на базе какого чипсета сделаны платы: материнская, видеокарта (некоторые имеют датчики) и прочие, заходим на страницы: http://secure.netroedge.com/~lm78/supported.html и http://www.lm-sensors.nu/~lm78/newdrivers.html и ищем, есть ли драйверы для мониторинга этих плат под Линуксом. Если определили, что ваши чипсеты поддерживаются и драйвер стабильный, можете продолжить выполнение этого пункта.
Внимание, если версия ядра меньше за 2.4.9, нужно обновить ядро или воспользоваться старой версией программы! смотрите: i2c. Если ядро версии 2.4.*, вам дополнительно нужен СООТВЕТСТВУЮЩИЙ! модуль i2c-*.*.*.tar.gz, родной Линуксовый не подходит. В версии ядра 2.6.* все хорошо — отлично работает родной модуль ядра i2c.
Подробную инструкцию по сборке нового ядра можно прочесть по ссылке "Ставим ядро 2.6, или Ядерная физика для домохозяйки. Версия 2.0"
Обратите особое внимание на пункты, которые добавляют к ядру GNU/Linux поддержку сенсоров:
Для поддержания ACPI:
Power management options (ACPI, APM) ---> ACPI (Advanced Configuration and Power Interface) Support --->
Для поддержки IPMI стандарта управления сенсорами.
Device Drivers ---> Character devices ---> IPMI --->
Включаем поддержку сенсоров в ядре
Device Drivers ---> I2C support --->
Выбираем алгоритмы, использующие ваши чипы
Device Drivers ---> I2C support ---> I2C Algorithms --->
Выбираем ваш чипсет (внимание, здесь нужно указать чипсет именно вашей системной платы, или видеокарты, см. ниже):
Device Drivers ---> I2C support ---> I2C Hardware Bus support --->
Device Drivers ---> I2C support ---> Miscellaneous I2C Chip support --->
Выбираем драйверы ко всем вашим сенсорам (внимание, именно тех, соответствующих вашим чипам, предыдущим пунктам):
Device Drivers ---> Hardware Monitoring support --->
Можно собрать необходимые драйверы как модули, хотя это несколько добавит работы при настройке (нужно будет запустить программу sensors-detect). Для мониторинга сети можно использовать netfilter (iptables) и прочие опции...
Если Ваше аппаратное обеспечения поддерживается, установите lm_sensors
Загружаем с: lm_sensors, свеженькую версию lm_sensors-*.*.*.tar.gz. Разархивируем lm_sensors-*.*.*.tar.gz Заходим в директорию, какая создалась и выполняем:
# make user
# make user_install
# depmod -a
Проверяем, есть ли строка /usr/local/lib в файле /etc/ld.so.conf, если нет, добавляем и выполняем команду:
# ldconfig
Настройка lm_sensors
Выполняем команду
# prog/mkdev/mkdev.sh
Чтобы правильно определить ваше оборудование и знать, какие модули нужно загрузить, выполним:
# prog/detect/sensors-detect
именно этот скрипт и указывает, какие у вас чипсеты, и какие в них сенсоры!
Добавляем строки, созданные программой для modules.conf в /etc/modules.conf
Копируем prog/init/lm_sensors.init в каталог /etc/rc.d/init.d/lm_sensors (назначить права для исполнения).
Добавляем строки, которые создала программа prog/detect/sensors-detect с modprobe и sensors -s например, в конец файла /etc/conf.d/local.start — чтобы они загружались при старте системы
или можно запускать как сервис:
для Gentoo выполняем:
# rc-update -a lm_sensors default
Только для клонов RedHat выполняем:
# chkconfig --add lm_sensors
копируем prog/init/lm_sensors.sysconfig в /etc/sysconfig/lm_sensors
копируем etc/sensors.conf.eg в /etc/sensors.conf
копируем prog/sensors/sensors в каталог /usr/bin/sensors (предоставить права на выполнение)
Все теперь выполняют modprobe с параметрами, которые указала программа sensors-detect для загрузки модулей, потом выполняем:
# sensors -s
Корректируем /etc/sensors.conf таким образом, чтобы названия напряжений, скорости вентиляторов и температур, именно Ваших чипов содержали соответственно: "Volt", "Fan", "Temp". При этом, названия меток допускают только малые и большие латинские буквы, цифры, знак "_", и не должны содержать знаков „.”, ”/” или ”+”! Выполнение этих условий обязательно!!!
Пример /etc/sensors.conf можно найти в server/etc/sensors.conf
Например, для lm85*:
# cat /etc/sensors.conf
...
# Voltage inputs
label in0 "VoltA1_5" # AGP on Intel S845WD1-E
label in1 "Volt1_5"
label in2 "Volt3_3"
label in3 "Volt5"
label in4 "Volt12"
# Temperature inputs
label temp1 "TempCPU"
label temp2 "TempMB1"
label temp3 "TempMB2"
# Fan inputs
label fan1 "FanCPU"
label fan2 "FanSys1"
label fan3 "FanSys2"
label fan4 "FanSys3"
# PWM Outputs
label pwm1 "CPUF_PWM"
label pwm2 "SysF1_PWM"
label pwm3 "SysF2_PWM"
...
Теперь выполним команду sensors, и если у нас все получилось, то увидим примерно следующее:
# sensors
lm85b-i2c-0-2e
Adapter: SMBus I801 adapter at c800
VoltA1_5: +1.48 V (min = +1.42 V, max = +1.58 V)
Volt1_5: +1.50 V (min = +1.45 V, max = +1.60 V)
Volt3_3: +3.33 V (min = +3.13 V, max = +3.47 V)
Volt5: +5.10 V (min = +4.74 V, max = +5.26 V)
Volt12: +12.31 V (min = +11.38 V, max = +12.62 V)
FanCPU: 3360 RPM (min = 3000 RPM)
TempCPU: +36C (low = +10C, high = +60C)
TempMB1: +33C (low = +10C, high = +45C)
TempMB2: +33C (low = +10C, high = +45C)
CPUF_PWM: 255
SysF1_PWM: 255
SysF2_PWM: 77
vid: +1.525 V (VRM Version 9.1)
Если у вас названия напряжений, скорости вентиляторов и температуры не содержат соответственно: "Volt", "Fan", "Temp" — обязательно отредактируйте файл /etc/sensors.conf как показано выше.
Установка sysstat
Загружаем последнюю версию пакета sysstat с сайта http://perso.wanadoo.fr/sebastien.godard/ или ftp://ibiblio.org/pub/Linux/system/status/
Розархивируем файл sysstat-*.*.*.tar.bz2 в /usr/src
Заходим в созданный каталог и выполняем:
# make config #Отвечаем на вопросы только 'y' или 'n'
# make
# make install
Теперь из командной строки пробуем:
# sar -A 1 1 |grep Average:
Average: proc/s
Average: 0.00
Average: cswch/s
Average: 258.00
Average: CPU %user %nice %system %iowait %idle
Average: all 1.90 0.00 0.40 0.00 97.70
........................................................................
Average: runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
Average: 0 83 0.06 0.15 0.16
Проверка df
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 2007996 411772 1596224 71% /
/dev/sda1 132206 10981 114399 43% /boot
/dev/sda5 248895 4256 231789 2% /tmp
/dev/sda6 5863496 2556028 3307468 64% /var
/dev/sda7 6843432 5128048 1715384 75% /usr
/dev/sda8 1976492 1048740 827348 56% /home
/dev/sda9 5863496 4479752 1383744 77% /usr/portage/distfiles
none 254752 0 254752 0% /dev/shm
/usr/portage/distfiles 5863496 4479752 1383744 77% /var/ftp/pub/linux/distfiles
/usr/portage/packages 6843432 5128048 1715384 75% /var/ftp/pub/linux/packages
Если Вам выдало:
bash: df: command not found
установите df из пакета coreutils.
Мониторинг сети основывается на подсчете байт, попадающих в правила сетевых экранов — iptables или ipfw, и поэтому они достаточно гибкие, но является зависимым от конфигурации сетевого экрана.
Если Вы хотите осуществлять мониторинг сети: просмотрите server/etc/show_network.conf (/etc/monitoring/show_network.conf) – это список графиков, которые Вы получите. Он должен отвечать названиям графиков в admin/etc/network (/etc/monitoring/network).
Нужно откорректировать server/etc/show_iptables_acc.conf (/etc/monitoring/show_network.conf)
1 колонка – название графика (должна отвечать show_network.conf, но с “in_*.N” или “out_*.N”, где N – некоторый идентификатор, например число)
2 колонка – название таблицы
3 колонка – название цепочки с таблицы
4 колонка – порядковый номер правила с цепочки
Это всё должно отвечать Вашим правилам!
Простые примеры экранов находятся в server/firewall/* и если подходит Вам, можете использовать их.
Проверьте работу /usr/bin/show_iptables.sh. Результат найдёте в /home/monitoring
Для BSD, надо откорректировать server/bin/show_ipf_acc.conf:
1 колонка – название графика
2 колонка – номер правила
3 колонка – порядковый номер правила в ipfw show
Это должно отвечать Вашим правилам!
Проверьте работу /usr/bin/show_ipfw.sh Результат в /home/monitoring
Некоторые важные системные настройки
Если нет xinetd – установите его. Загляньте в
server/etc/host.allow (/etc/host.allow):
# BEGIN allow services for monitoring
show_hdisk.sh:127.0.0.1 # IP ком п'ютера что мониторит
show_sensors.sh:127.0.0.1 # IP ком п'ютера что мониторит
show_info.sh:127.0.0.1 # IP ком п'ютера что мониторит
show_system.sh:127.0.0.1 # IP ком п'ютера что мониторит
show_network.sh:127.0.0.1 # IP ком п'ютера что мониторит
# END allow services for monitoring
Также некоторые из них вы можете изменить в server/bin/show_* и строки "only_from", "bind" и "disable" в server/xinetd.d/show_*
$ cat server/xinetd.d/show_hdisk
# default: on
# description: The showdisk server show disk useg on the server.
# It dont uses authentication !!!!!!!!!!!!!!!.
service df
{
socket_type = stream
wait = no
user = monitoring
bind = 127.0.0.1 # IP сетевого интерфейса, на котором мониторят
server = /usr/bin/show_hdisk.sh
only_from = 127.0.0.1 # IP комп'ютера, который мониторит
disable = no # Вкл./Выкл.
}
Откройте доступ к следующим портам: 9045/tcp 9046/tcp 9047/tcp 9048/tcp 9049/tcp с административного компьютера в случае наличия сетевых экранов. Если Вы хотите осуществить установку вручную, пропустите следующий пункт.
Автоматическая инсталляция
Для автоматической установки отредактируйте следующие строки в monitoringinstall.sh (/usr/sbin/monitoringinstall.sh):
# Edit this first:
# all command will execute user:
runuser=monitoring
rungroup=monitoring
# cron cfg directory
cronpath=/etc/cron.d
# init script locations:
crond=/etc/init.d/crond
# Edit only for server side:
# init script location:
xinetd=/etc/init.d/xinetd
# program location:
dfpath=/bin/df
sarpath=/usr/bin/sar
sensorspath=/usr/bin/sensors
Теперь с правами суперпользователя выполните:
# ./monitoringinstall.sh --server
В Gentoo просто:
# monitoringinstall.sh --server
Вы можете пропустить пункт следующий пункт и перейти к „административной” части системы.
Копируем следующие файлы:
cp server/etc/show_iptables_acc.conf /etc/monitoring #for GNU/Linux
cp server/etc/show_ipfw_acc.conf /etc/monitoring #for BSD
cp server/etc/show_network.conf /etc/monitoring
cp server/xinetd.d/show_hdisk /etc/xinetd.d/
cp server/xinetd.d/show_network /etc/xinetd.d/
cp server/xinetd.d/show_sensors /etc/xinetd.d/
cp server/xinetd.d/show_system /etc/xinetd.d/
cp server/bin/show_hdisk.sh /usr/bin
cp server/bin/show_iptables.sh /usr/bin #for GNU/Linux
cp server/bin/show_ipfw.sh /usr/bin #for BSD
cp server/bin/show_network.sh /usr/bin
cp server/bin/show_sar.sh /usr/bin
cp server/bin/show_sensors.sh /usr/bin
cp server/bin/show_system.sh /usr/bin
Добавим следующие строки к /etc/service:
network 9045/tcp # show network info
info 9046/tcp # show server info
df 9047/tcp # show disk info
sys 9048/tcp # show system info
sensors 9049/tcp # show sensors info
Создадим специального пользователя:
groupadd monitoring
useradd -g monitoring -d /home/monitoring -s /bin/bash -c monitoring monitoring
mkdir /home/monitoring
chmod 700 /home/monitoring
chown -R monitoring:monitoring /home/monitoring
В случае использования политик SELinux необходимо также добавить:
# cat /etc/security/selinux/src/policy/users
...
# BEGIN monitoring selinux:
user monitoring roles user_r;
# END monitoring selinux.
и дополнительно выполнить:
# cd /etc/security/selinux/src/policy
# make load
Перегрузим xinetd:
# /etc/init.d/xinetd restart
и добавьте строки в crontab:
*/10 * * * * monitoring /usr/bin/show_iptables.sh # для GNU/Linux
*/10 * * * * monitoring /usr/bin/show_ipfw.sh # для BSD
*/1 * * * * monitoring /usr/bin/show_sar.sh
Перегрузим crond:
# /etc/init.d/crond restart
Все вышесказанное нужно сделать на КАЖДОМ сервере, который вы хотите мониторить...
Для начала убедитесь что все хорошо со стороны серверов
Для каждого сервера проверяем доступность необходимых сервисов:
# telnet server_name 9045
Trying serverIP...
Connected to serverIP.
Escape character is '^]'.
in_ftp 0
out_ftp 0
in_http 0
out_http 0
in_other 249
out_other 27
Connection closed by foreign host.
# telnet server_name 9046
Trying serverIP...
Connected to server_name.
Escape character is '^]'.
Intel(R) Celeron(R) CPU 2.40GHz | 504 Mb
Connection closed by foreign host.
# telnet server_name 9047
Trying serverIP...
Connected to server_name.
Escape character is '^]'.
/dev/sda3 2007996 411772 1596224 71% /
/dev/sda1 132206 10981 114399 43% /boot
/dev/sda5 248895 4256 231789 2% /tmp
/dev/sda6 5863496 2556028 3307468 64% /var
/dev/sda7 6843432 5128048 1715384 75% /usr
/dev/sda8 1976492 1048740 827348 56% /home
/dev/sda9 5863496 4479752 1383744 77% /usr/portage/distfiles
Connection closed by foreign host.
# telnet server_name 9048
Trying serverIP...
Connected to server_name.
Escape character is '^]'.
Average: proc/s
Average: 3.98
Average: cswch/s
Average: 308.00
Average: CPU %user %nice %system %iowait %idle
Average: all 1.76 0.00 0.47 0.00 97.76
.............................................................
Average: runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
Average: 1 88 0.05 0.21 0.21
Connection closed by foreign host.
# telnet server_name 9049
Trying serverIP...
Connected to server_name.
Escape character is '^]'.
lm85b-i2c-0-2e
Adapter: SMBus I801 adapter at c800
Volt1_5: +1.48 V (min = +1.42 V, max = +1.58 V)
VoltCore: +1.50 V (min = +1.45 V, max = +1.60 V)
Volt3_3: +3.33 V (min = +3.13 V, max = +3.47 V)
Volt5: +5.10 V (min = +4.74 V, max = +5.26 V)
Volt12: +12.25 V (min = +11.38 V, max = +12.62 V)
CPU_Fan: 3377 RPM (min = 3000 RPM)
fan2: 0 RPM (min = 0 RPM)
fan3: 0 RPM (min = 0 RPM)
fan4: 0 RPM (min = 0 RPM)
TempCPU: +32 C (low = +10 C, high = +50 C)
TempBoard: +30 C (low = +10 C, high = +45 C)
TempRemot: +30 C (low = +10 C, high = +40 C)
CPU_PWM: 255
Fan2_PWM: 255
Fan3_PWM: 77
vid: +1.525 V (VRM Version 9.0)
Connection closed by foreign host.
Разархивируйте monitoring-*.tar.bz2.
Для Gentoo есть ебилд, для установления программы monitoring со всеми зависимостями с сайта стоит брать monitoring-*.ebuild.tar.bz2 и распаковать его в /usr/local дальше выполните:
# emerge -pv monitoring
[ebuild N ] net-analyzer/monitoring-0.11 USE="-admin -apache2 -lm_sensors -server"
Для административной стороны необходимо добавить USE=admin, а для поддержки apache-2* USE=apache2
# export "USE=admin apache2"
# emerge monitoring
Компиляцию и установление rrdtool, apache, Net-Telnet в случае использования Gentoo можно пропускать, потому что эти пакеты уже будут установлены как зависимости, а переходить сразу к их настройке.
Базой данных, для хранения информации и инструмент генерации графиков, используется пакет rrdtool (round robin database tool). Зкачать пакет можно отсюда: http://rrdtool.eu.org или http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ Подробно ознакомиться с этим пакетом можно здесь: http://www.bog.pp.ru/work/rrdtool.html (Российская). В принципе, программа самостоятельно создаст необходимые базы так, что дополнительных знаний не нужно и следующий пункт Пример расчёта настройки базы RRD можно пропустить.
Пример расчёта настройки базы RRD
Расчёт настроек создания базы RRD файлы /etc/monitoring/*.rrd.cf Количество "слов" в файле будет соотведствовать количеству графиков в разных маштабах времени. например для расчёта подобия MRTG: 5-ти минутный — даные за последние 2 дня: х-доля=0.5 количество отсчётов на ячейку=1 количество ячеек=2*24*12=576 +min+max+avg+cur ~ 650
0.5:1:650
30-ти минутный — дание за последние две недели: х-доля=0.5 количество отсчётов на ячейку=30/5=6 количество ячеек=2*7*24*2=672 +min+max+avg+cur ~ 750
0.5:6:750
2-ух часовой — даные за последние два месяца: х-доля=0.5 количество отсчётов на ячейку=60*2/5=24 количество ячеек=2*31*24/2=744 +min+max+avg+cur ~ 850
0.5:24:850
1-но дневный — даные за последние два года: х-доля=0.5 количество отсчётов на ячейку=60*24/5=288 количество ячеек=2*366=732 +min+max+avg+cur ~ 900
0.5:288:900
Таким образом имеем:
# cat /etc/monitoring/5min.rrd.cf
0.5:1:650 0.5:6:750 0.5:24:850 0.5:288:900
Данная версия программы для работы через сеть требует Net-Telnet perl модуль (можно при желании использовать и netcat): из-за этого нужно установить perl (что пожалуй уже сделано). Дальше Net-Telnet perl модуль берем и устанавливаем отсюда: http://cpan.perl.org/modules/by-module/Net/ название файлу Net-Telnet-*.tar.gz
Нужно установить и настроить apache сервер, дополнительно можете добавить (admin/etc/apache/monitoring.conf):
# cat /etc/apache2/vhosts.d/monitoring.conf
### /etc/apache2/vhosts.d/monitoring.conf
### $Id: monitoring.conf,v 0.11 2006/09/28 16:27:12 hse Exp $
###
### For Monitoring *.shtml
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
### For authentication:
<Directory "/var/www/localhost/htdocs/administration/monitoring">
AllowOverride All
Options Includes
<IfModule mod_access.c>
### For password authentication:
# AuthUserFile /var/www/localhost/htdocs/administration/passwd_file
# AuthGroupFile /dev/null
# AuthName Administrative-information
# AuthType Basic
# Require valid-user
### For host/network authentication:
Order deny,allow
Deny from all
Allow from 127.0.0.1
# Allow from .cluster.linux
</IfModule>
</Directory>
Добавляем пользователя для просмотра веб страницы:
# htpasswd -bcm /var/www/localhost/htdocs/administration/passwd_file username password
Если все хорошо идем дальше.
В файл admin/etc/host (/etc/monitoring/host) вносим перечень серверов, которые нужно мониторить (имена должны разрешаться в IP адреса). Коректируем под свои потребности файл admin/etc/monitoring.conf (/etc/monitoring/monitoring.conf)
путь по которому установлено скрипт:
installpath=/usr/
путь к веб страницы:
apachehtmldir=/var/www/html
webdirpath=/administration/monitoring
путь к файлу с перечнем серверов для мониторинга:
confpath=$installpath/etc/host
путь к временных файлов:
diskinfopath=/tmp/monitoring/disk.tmp
sarinfopath=/tmp/monitoring/sar.tmp
sensorsinfopath=/tmp/monitoring/sensors.tmp
путь где установлен пакет rrdtool:
rrdtoolpath=/usr/bin/rrdtool
почтовый адресов:
emailvalue=root@localhost
По желанию (или за потребностью) правим другие файлы с каталога etc/ (/etc/monitoring/):
diskusage memusage quantity cpu memory systemload — содержимое файлов должно отвечать тем параметрам которые Вы хотите мониторить. Все параметры должны выводиться командой sar -A 1 1 |grep Average: Названия файлов отвечают названиям графиков и баз которые создадутся и должны быть записаны в файле system. Значение параметров принадлежащих одном файлу должны быть одного типа!
system — первая колонка определяет какие графики получите и каждый ее элемент отвечать файлу из этого же каталога (см. выше). Вторая указывает через какие периоды времени база rrdtool будет принимать данные. Третья и четвертая колонка определяет минимальное и максимальное значение параметра которое еще может быть записано в базу. Пятая колонка определяет легенду (размерность).
сolors — файл с номерами цветов в 16-ричной системе.
config — содержит имена конфигурационных файлов из этого же каталога отвечающие веб страницам что создаються (можно добавлять свои, но тогда их должны создать!).
disk — содержит названия графиков, периоды времени через которые база rrdtool будет принимать данные, минимальные и максимальные значение параметров которые мониторите, легенду (размерность).
network — содержит названия графиков, периоды времени через которые база rrdtool будет принимать данные, минимальные и максимальные значение параметров которые мониторите, легенду (размерность).
sensors — содержит названия графиков, периоды времени через которые база rrdtool будет принимать данные, минимальные и максимальные значение параметров которые мониторите, легенду (размерность).
disk.rrd.cf network.rrd.cf sensors.rrd.cf system.rrd.cf — описывают структуру базы данных.
disk.msg network.msg sensors.msg system.msg — содержит информацию которую получите почтой в критических ситуациях.
Если хотите осуществить установку вручную, пропустите следующий пункт.
Теперь можете воспользоваться скриптом для инсталляции. Для этого нужно откорректировать следующие строки в файле monitoringinstall.sh (/usr/sbin/monitoringinstall.sh) или пропустить этот пункт и следовать дальнейшей инструкции для установки в ручную.
имя пользователя и группы:
runuser=monitoring
rungroup=monitoring
директория где расположены cron настройки:
cronpath=/etc/cron.d
путь к инициализационному скрипту
crond crond=/etc/init.d/crond
директория где находятся настройки apache
apachconfdir=/etc/apache/conf
файл конфигурации apache:
apachconffile=apache.conf
путь к инициализационному скрипту apache
apached=/etc/init.d/apache
Теперь с правами рута выполните (нужно подождать 1 минуту, если не установили мониторинг сети, и 10 минут после установки мониторынга сети на последнем сервере, прежде чем выполнять следующую команду):
# ./monitoringinstall.sh --admin
В Gentoo просто
# monitoringinstall.sh --admin
Если видите ошибки, наверное надо:
1 поправить файлы конфигурации в admin/etc/ (/etc/monitoring)
2 посмотреть в /home/monitoring/hostname/err/...
3 удалить файлы с /home/monitoring/hostname/ и перезапустити скрипт
4 удалить базы данных с /var/db/monitoring/... и перезапустити скрипт
5 bin/net_telnet.pl читает только 500 строк входа. Если в Вас больше, отредактируйте його:
line 32: while [$и ne 500]
Тогда попробуйте еще, но добавьте имена сервисов, под рутом выполните:
# ./monitoringinstall.sh --admin=disk
# ./monitoringinstall.sh --admin=sensors
# ./monitoringinstall.sh --admin=system
# ./monitoringinstall.sh --admin=network
Если где-то допустили ошибку, можно просто выполнить monitoringuninstall.sh и попытаться еще раз. Можете пропустить следующий пункт.
Устанавливаем скрипти для мониторинга, генерации базы данных и веб страницы скопировав с каталога monitoring/admin в каталог: /usr/ ($INSTALL_PATH), используя опцию –p для сохранения прав. Выполняем:
# cp -p admin/bin/* $INSTALL_PATH/bin/
# mkdir /etc/monitoring
# cp -p admin/etc/* /etc/monitoring/
# mkdir $INSTALL_PATH/share/monitoring
# cp -p admin/share/* $INSTALL_PATH/share/monitoring/
# mkdir -p /var/www/localhost/htdocs/administration/monitoring
# chmod 755 /var/www/localhost/htdocs/administration/monitoring/
# groupadd -g 1111 monitoring
# useradd -u 1111 -g monitoring -d /home/monitoring -s /bin/bash -c monitoring monitoring
# chmod -R 700 /home/monitoring
# chown -R monitoring:monitoring /home/monitoring
# chown -R monitoring:monitoring /var/www/localhost/htdocs/administration/monitoring/
И тогда выполняйте (подождите 1 минуту, если не устанавливали мониторинг сети, и 10 минут после установки мониторынга сети на последнем сервере, прежде чем выполнять следующую команду):
# su monitoring
$ $INSTALL_PATH/bin/net.vert.1.sh
$ $INSTALL_PATH/bin/net.vert.10.sh
создаются базы данных в каталоге /var/db/monitoring/имя_сервера/ для всех серверов с файлу /etc/monitoring/host и дополнительная конфигурация в /home/monitoring
Выполняем:
$ $INSTALL_PATH/bin/png_graph.sh disk -1week 30min
$ $INSTALL_PATH/bin/png_graph.sh disk -1month 2hour
$ $INSTALL_PATH/bin/png_graph.sh disk -1year 1day
$ $INSTALL_PATH/bin/png_graph.sh network -1week 30min
$ $INSTALL_PATH/bin/png_graph.sh network -1month 2hour
$ $INSTALL_PATH/bin/png_graph.sh network -1year 1day
$ $INSTALL_PATH/bin/png_graph.sh sensors -2day 5min
$ $INSTALL_PATH/bin/png_graph.sh sensors -1week 30min
$ $INSTALL_PATH/bin/png_graph.sh sensors -1month 2hour
$ $INSTALL_PATH/bin/png_graph.sh sensors -1year 1day
$ $INSTALL_PATH/bin/png_graph.sh system -2day 5min
$ $INSTALL_PATH/bin/png_graph.sh system -1week 30min
$ $INSTALL_PATH/bin/png_graph.sh system -1month 2hour
$ $INSTALL_PATH/bin/png_graph.sh system -1year 1day
Если видите ошибки, наверное нужно:
1 поправить файлы конфигурации в /etc/monitoring
2 посмотреть в /home/monitoring/hostname/err/...
3 удалить файлы с /home/monitoring/hostname/ и перезапустить скрипт
4 удалить базы данных с /var/db/monitoring/... и перезапустить скрипт
5 bin/net_telnet.pl читает только 500 строк входа. Если в Вас больше, отредактируйте его:
line 32: while [$и ne 500]
Тогда попробуйте еще раз.
В каталоге /var/www/localhost/htdocs/administration/monitoring создаются начальная страница и каталоги с веб страницами для каждого сервера.
Если не возникло больше ошибок, используйте следующий файл для автоматизации всей работы с crond:
$ exit
# cat /etc/cron.d/monitoring
SHELL=/bin/bash
PATH=/bin:/usr/bin
MAILTO=root
HOME=/home/monitoring
LANG=POSIX
# Begin server part (may be you wont monitoring "admin" computer too)
*/1 * * * * monitoring /usr/bin/show_sar.sh
*/10 * * * * monitoring /usr/bin/show_iptables.sh #GNU/Linux
#*/10 * * * * monitoring /usr/bin/show_ipfw.sh #BSD
# End server part
# Begin disk admin part
*/30 * * * * monitoring /usr/bin/png_graph.sh hdisk -1week 30min
0 */2 * * * monitoring /usr/bin/png_graph.sh hdisk -1month 2hour
0 0 * * * monitoring /usr/bin/png_graph.sh hdisk -1year 1day
# End disk admin part
# Begin network admin part
*/30 * * * * monitoring /usr/bin/png_graph.sh network -1week 30min
0 */2 * * * monitoring /usr/bin/png_graph.sh network -1month 2hour
0 0 * * * monitoring /usr/bin/png_graph.sh network -1year 1day
# End network admin part
# Begin system admin part
*/5 * * * * monitoring /usr/bin/png_graph.sh system -2day 5min
*/30 * * * * monitoring /usr/bin/png_graph.sh system -1week 30min
0 */2 * * * monitoring /usr/bin/png_graph.sh system -1month 2hour
0 0 * * * monitoring /usr/bin/png_graph.sh system -1year 1day
# End system admin part
# Begin sensors admin part
*/5 * * * * monitoring /usr/bin/png_graph.sh sensors -2day 5min
*/30 * * * * monitoring /usr/bin/png_graph.sh sensors -1week 30min
0 */2 * * * monitoring /usr/bin/png_graph.sh sensors -1month 2hour
0 0 * * * monitoring /usr/bin/png_graph.sh sensors -1year 1day
# End sensors admin part
# Begin vert admin part
*/1 * * * * monitoring /usr/bin/net.vert.1.sh
*/10 * * * * monitoring /usr/bin/net.vert.10.sh
# End vert admin part
Выполняем:
# /etc/init.d/crond restart
Если все хорошо
Теперь заходим Вашим любимым браузером на страницу http://servername/administration/monitoring/index.html. Здесь уже можем выбрать ссылки на сервер, который вас интересует :)
Если Вам когда-то придется добавить новый сервер, достаточно будет сделать следующее:
1. Выполнить для него пункт 2 („Серверная” сторона)
2. Добавить его имя в файл /etc/monitoring/host
Всё остальное создастся само !!! Наслаждайтесь :)))
Если Вы недовольны реализацией мониторинга таким образом (по моему мнению достаточно неплохое решение ;)) подберите себе лучшую. Вот некоторый перечень альтернатив или дополнений :=)
Angel Network Monitor http://www.paganini.net/angel/
Autostatus http://www.angio.net/consult/autostatus/
Cacti http://cacti.net
HiWAyS http://www.hiways.org/
MARS http://www.altara.org/mars.html
Mon http://www.kernel.org/software/mon/
Monit http://www.tildeslash.com/monit/
Nagios http://www.nagios.org
Netup (French) http://www.pasteur.fr/units/sis/netup/
NocMonitor http://www2.discpro.org/nocmon/
NodeWatch http://www.skendric.com/nodewatch/
Penemo http://www.communityprojects.org/apps/penemo/
PIKT http://pikt.org/
RITW http://www.terravista.pt/Ancora/1883/ritw_e.html
RRDWorld http://oss.oetiker.ch/rrdtool/rrdworld/index.en.html
Scotty http://wwwhome.cs.utwente.nl/~schoenw/scotty/
Spong http://spong.sourceforge.net/
Sysmon http://www.sysmon.org/
ZABBIX http://www.zabbix.com
ZEUS http://www.zeus.com/
В начало → Сетевые сервисы → Мониторинг работы системы |