EN
RU

В даній статті описується, як здійснити моніторинг різних системних та фізичних параметрів комп'ютерів, що працюють під 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.

Компіляція ядра

Детальну інструкцію по компіляції нового ядра можна прочитати за посиланням ?Компіляція ядра GNU Linux

Зверніть особливу увагу на пункти, що додають до ядра 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.orange.fr/sebastien.godard/ або ftp://ibiblio.org/pub/Linux/system/status/
Розархівовуємо та розпаковуємо файл sysstat-..*.tar.bz2 в /usr/src
Заходимо в директорію, яка створилась і виконуємо:

make config     #Відповідаємо на питання 'y' xb '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).

Linux iptables

Потрібно відкоригувати 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

FreeBSD ipfw

Для 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

Детальніше можна ознайомитись тут: xinetd, hosts.allow and hosts.deny
Також можете зробити деякі змінити в 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                      # Вкл. Викл.
}

Якщо Ви хочете здійснити установку вручну, пропустіть наступний пункт.

Автоматична інсталяція

Для автоматичної інсталяції відкоректуйте наступні рядки в 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

Базою даних, для зберігання інформації та інструмент генерації графіків, використовуєм пакет 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 файли /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
кількість комірок=2724*2=672 +min+max+avg+cur ~ 750

0.5:6:750

2-ух годинниковий - дані протягом останніх 2 місяці:
х-доля=0.5
кількість відліків на комірку=602/5=24
кількість комірок=2
31*24/2=744 +min+max+avg+cur ~ 850

0.5:24:850

1-но денний - дані протягом останніх двох років:
х-доля=0.5
кількість відліків на комірку=6024/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

Дана версія програми для роботи через мережу вимагає Net-Telnet perl модуль (можна при бажанні використати і netcat): через це потрібно встановити perl (що мабуть вже зроблено). Далі Net-Telnet perl модуль беремо і встановлюємо звідси: http://cpan.perl.org/modules/by-module/Net/ назва файлу Net-Telnet-*.tar.gz

Інсталяція Apache

Потрібно встановити і налаштувати 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) вносимо перелік серверів, які потрібно моніторити (імена мусять розв'язуватись в ІР адреси). Редагуємо під свої потреби файл 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 прийматиме дані. Третя і четверта колонка визначає мінімальне і максимальне значення параметру яке ще може бути записано в базу. П'ята колонка визначає легенду (розмірність).

colors - файл з номерами кольорів у 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 [$i 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 [$i 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

Все решта згенериться само !!!
Насолоджуйтесь :)))

Альтернативи

Якщо Ви не задоволені реалізацією моніторингу в такий спосіб (на мою думку досить непоганий;)) підберіть собі кращий. Ось деякий перелік альтернатив чи доповнень :=)

Подяки

Спеціальна подяка Tobi Oetiker за чудову rrdtool!

Дякую Сергію Євгеновичу Богомолову bog на deol.ru

Статтю з Божою поміччю написав Svyat © 19.09.2004р

Будь ласка присилайте всі Ваші вдосконалення, виправлення, зауваження і запитання на https://sourceforge.net/projects/monitoring/, або на http://sourceforge.net/mail/?group_id=163331 це прискорить розвиток проекту!

Сайт проекту http://monitoring.sourceforge.net/ приєднуйтесь!

--Svyat 23:53, 19 Вер 2004 (EEST)