Використання системи моніторингу Nagios
Nagios – система моніторингу з відкритим початковим кодом, призначена для постійного спостереження за станом сервісів, комп’ютерів та активного мережевого обладнання. За допомогою цієї системи можливо організувати перевірку доступності вузлів комп’ютерної мережі (хостів), показників роботи комп’ютерів та працездатності функціонуючих на них програм (сервісів): поштових, веб, проксі серверів, систем резервного копіювання тощо. Можливо також інформувати адміністраторів та користувачів про порушення нормальної роботи об’єктів моніторингу за допомогою поштових і SMS повідомлень, повідомлень на пейджер, або звукових сигналів.
Спочатку система Nagios була розроблена для операційної системи (ОС) Linux, проте зараз існують версії для інших Unix-подібних операційних систем. Також є програма-клієнт для збору показників роботи комп’ютерів під керуванням ОС Windows.
Для здійснення перевірок Nagios використовує зовнішні модулі. Існує велика кількість модулів, зокрема є модулі для перевірки завантаження процесору, використання оперативної пам’яті, вільного простору на вінчестері, стану різноманітних сервісів, температури в приміщенні та інші. Також можливо створювати власні модулі мовою командної оболонки або Perl.
Можливості системи настільки великі, що розглянути їх всі в одній статті практично неможливо. Тому у пропонованій статті детально розглянутий тільки окремий випадок використання Nagios для моніторингу невеликої мережі, що складається з кількох робочих станцій під керуванням ОС Windows та серверу з ОС FreeBSD, на якому функціонують проксі, веб, FTP сервери, система резервного копіювання та власне система Nagios. Значно більше інформації про можливості цієї системи моніторингу можна отримати зі спеціальної літератури [1, 2], офіційної документації або з численних публікацій в Інтернеті.
Інсталяція
В операційній системі FreeBSD систему Nagios краще збирати з колекції портів:
cd /usr/ports/net-mgmt/nagios
make install clean
Разом з Nagios буде також встановлений пакет модулів nagios-plugins. На момент створення статті останніми версіями Nagios та nagios-plugins були відповідно 3.0.6 та 1.4.13. В якості операційної системи була використана ОС FreeBSD 7.0.
Система Nagios має веб-інтерфейс, тому для повноцінної роботи з нею потрібний web -сервер Apache, у головному конфігураційному файлі якого, /usr/local/etc/apache/httpd.conf потрібно додати:
<Directory /usr/local/www/nagios >
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd/nagios.users
Require valid-user
</Directory>
<Directory /usr/local/www/nagios/cgi-bin >
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/etc/nagios/htpasswd/nagios.users
Require valid-user
</Directory>
ScriptAlias /nagios/cgi-bin/ /usr/local/www/nagios/cgi-bin/
Alias /nagios/ /usr/local/www/nagios/
Потім створюємо файл паролів та вводимо користувачів, наприклад admin і user :
htpasswd -c /usr/local/etc/nagios/nagios.users admin
htpasswd /usr/local/etc/nagios/nagios.users user
Після чого, необхідно перезапустити Apache. Відтепер веб-інтерфейс Nagios доступний в локальній мережі за адресою http://<адреса серверу>/nagios/
Файли конфігурації
Після завершення інсталяції в директорії /usr/local/etc/nagios будуть записані файли nagios.cfg-sample, cgi.cfg-sample, resource.cfg-sample, та тека objects з файлами commands.cfg-sample, contacts.cfg-sample, localhost.cfg-sample, printer.cfg-sample, switch.cfg-sample, templates.cfg-sample, timeperiods.cfg-sample які є зразками конфігураційних файлів Nagios. Слід зазначити, що назви та кількість цих файлів різняться для різних версій програми, крім того, користувач має змогу самостійно визначати кількість, розташування та назви конфігураційних файлів. По-перше, необхідно перейменувати ці файли, прибравши з їх назв суфікс "–sample". Не завадить зробити резервні копії конфігураційних файлів, або в самих файлах робити закоментовані копії параметрів, які будуть змінені. Численні параметри, визначенні в конфігураційних файлах, мають детальні коментарі, тому далі розглянуті тільки ті параметри, які зазнали змін.
Головним конфігураційним файлом є nagios.cfg. Інші конфігураційні файли приєднуються до головного за допомогою параметру cfg_file. Можливо самостійно створювати конфігураційні файли для будь-яких об’єктів моніторингу та включати їх до nagios.cfg. Спочатку в цьому файлі варто змінити тільки формат дати, який задається параметром date_format. За замовчанням встановлено американський формат. Для переходу на більш звичний європейський необхідно задати:
date_format=euro.
В файлі cgi.cfg визначаються користувачі системи Nagios та їх права. Наприклад:
authorized_for_system_information=admin,user
authorized_for_configuration_information= admin,user
authorized_for_system_commands= admin
authorized_for_all_services= admin,user
authorized_for_all_hosts= admin,user
authorized_for_all_service_commands= admin
authorized_for_all_host_commands= admin
В цьому прикладі користувач user має право тільки на перегляд інформації, а користувач admin крім перегляду, має право на виконання команд.
Після закінчення редагування конфігураційних файлів можна запустити програму:
/usr/local/etc/rc.d/nagios start
Система Nagios функціонує як фонова програма (демон). Для автоматичного запуску її при завантаженні операційної системи необхідно в конфігураційний файл /etc/rc.conf додати параметр nagios_enable="YES".
Використання шаблонів
У конфігураційному файлі templates.cfg описані шаблони об’єктів моніторингу. Використання шаблонів дозволяє створювати описи об’єктів з подібними властивостями та успадковувати властивості інших об’єктів.
Одразу після встановлення Nagios, в файлі присутні загальні шаблони контактів, хостів, принтерів, мережевих комутаторів, сервісів, а також шаблони для комп’ютерів з ОС FreeBSD, Windows та шаблон локального сервісу. При необхідності можливо створювати власні шаблони, які можуть успадковувати та змінювати властивості існуючих.
Наприклад, шаблон комп’ютера з ОС FreeBSD має наступний вигляд:
define host{ | |||
name | freebsd–server | ; Назва шаблону | |
use | generic–host | ; Шаблон, властивості якого успадковує даний шаблон | |
check_period | 24x7 | ; Період, протягом якого виконуються перевірки. Описаний у файлі timeperiods.cfg | |
check_interval | 5 | ; Інтервал у хвилинах між нормальними перевірками | |
retry_interval | 1 | ; Інтервал між повторними перевірками, якщо нормальна перевірка завершилася невдало | |
max_check_attempts | 10 | ; Максимальна кількість повторних перевірок | |
check_command | check–host–alive | ; Команда перевірки доступності комп’ютера. Описана у файлі commands.cfg | |
notification_period | workhours | ; Період часу, протягом якого, адміністратори можуть отримувати повідомлення | |
notification_interval | 120 | ; Інтервал, після якого буде відправлено повторне повідомлення якщо сервіс так і не відновився | |
notification_options | d,u,r | ; Перелік подій, при настанні яких будуть відправлені повідомлення | |
contact_groups | admins | ; Група, яка буде отримувати повідомлення. Описана у файлі contacts.cfg | |
register | 0 | ; Показник приналежності до реально існуючих об’єктів (1 – реальний об’єкт, 0 – шаблон | |
} |
Для хостів можливо відправляти повідомлення при настанні наступних станів:
d – не працює (DOWN);
u – недосяжний (UNREACHABLE);
r – працездатність відновлено (UP);
f – сервіс змінює свій стан занадто часто (FLAPPING);
n – не сповіщувати (NONE).
Для сервісів передбачені наступні ситуації:
w – застереження (WARNING);
u – невідомий (UNKNOWN);
c – критичний (CRITICAL);
r – працездатність відновлено (UP);
f – сервіс змінює свій стан занадто часто (FLAPPING);
s – запланована бездіяльність (SCHEDULED DOWNTIME);
n – не сповіщувати (NONE).
Моніторинг локального комп’ютера
Типовий конфігураційний файл, призначений для моніторингу комп’ютера на якому встановлений Nagios, називається localhost.cfg та розташовується, як і решта файлів об’єктів контролю, в директорії /usr/local/etc/nagios/objects.
У цьому файлі, після встановлення, вже описані ім’я та адреса комп’ютера:
define host{ | |||
use | freebsd-server | ; Шаблон комп'ютера | |
host_name | localhost | ; Ім’я комп’ютера | |
alias | localhost | ; Псевдонім | |
address | 127.0.0.1 | ; Адреса | |
} |
Група для цього комп’ютера:
define hostgroup{ | |||
hostgroup_name | freebsd-servers | ; Назва групи | |
alias | FreeBSD Servers | ; Псевдонім | |
members | localhost | ; Перелік комп’ютерів, які належать до цієї групи | |
} |
Перевірка доступності комп’ютера:
define service{ | |||
use | local-service | ; Шаблон сервісу | |
host_name | localhost | ; Перелік комп’ютерів, для яких здійснюється перевірка | |
service_description | PING | ; Опис сервісу | |
check_command | check_ping!100.0,20%!500.0,60% | ; Ім’я та параметри команди, що використовується для перевірки сервісу. Описана у файлі commands.cfg | |
} |
Перевірка дискового простору на кореневому розділі локальної машини:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Root Partition | |
check_command | check_local_disk!20%!10%! | |
} |
Перевірка кількості користувачів, які в цей час зареєстровані в системі:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Current Users | |
check_command | check_local_users!20!50 | |
} |
Перевірка кількості процесів, які в цей час виконуються на локальному комп’ютері:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Total Processes | |
check_command | check_local_procs!250!400!RSZDT | |
} |
Перевірка навантаження на локальну машину:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Current Load | |
check_command | check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 | |
} |
Перевірка використання віртуальної пам'яті (swap):
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Swap Usage | |
check_command | check_local_swap!20!10 | |
} |
Перевірка протоколу SSH:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | SSH | |
check_command | check_ssh | |
notifications_enabled | 0 | |
} |
Перевірка протоколу HTTP:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | HTTP | |
check_command | check_http | |
notifications_enabled | 0 | |
} |
Можливо, також, самостійно визначати об'єкти перевірки локального комп’ютера. Як приклад, далі розглянуто перевірку S.M.A.R.T. статусу жорсткого диску, стану системи резервного копіювання Bacula та проксі сервера Squid.
Для перевірки S.M.A.R.T. статусу жорсткого диску (S.M.A.R.T. – технологія оцінки стану жорсткого диска вбудованою апаратурою автодіагностики, а також механізм прогнозу часу виходу його з ладу) використовується модуль check_smartmon (http://www.nagiosexchange.org/cgi-bin/jump.cgi?ID=2169&view=File1;d=1). Після завантаження, його необхідно зберегти в директорії /usr/local/libexec/nagios та зробити виконуваним:
chmod +x usr/local/libexec/nagios/check_smartmon.
Для своєї роботи модуль check_smartmon потребує встановлений інтерпретатор мови Python, тому необхідно перевірити його наявність і за потреби встановити.
Далі, потрібно зібрати з порту утиліту smartmontools, яка зчитує дані про стан жорсткого диска:
cd /usr/ports/sysutils/smartmontools
make install clean
Також треба додати користувача nagios в групу operator, внісши відповідні зміни у файл /usr/group.
Опис сервісу перевірки S.M.A.R.T. статусу жорсткого диску додається в файл localhost.cfg:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | S.M.A.R.T. status disk 1 | |
check_command | check_smartmon!/dev/ad0 | |
} |
Команда check_smartmon додається в файл commands.cfg:
define command{ | ||
command_name | check_smartmon | |
command_line | $USER1$/check_smartmon -d $ARG1$ | |
} |
Тепер після перезапуску демона nagios (/usr/local/etc/rc.d/nagios restart) в переліку сервісів для локального комп’ютера з’явиться пункт S.M.A.R.T. status disk 1 з результатами перевірки.
Для перевірки стану системи резервного копіювання Bacula використовується модуль nagios-check_bacula, який збирається з колекції портів (/usr/local/ports/net-mgmt/nagios-check_bacula). Далі, у файлі commands.cfg необхідно додати команду, яка викликає встановлений модуль:
define command{ | |||
command_name | check_bacula | ||
command_line | $USER1$/check_bacula -H $HOSTADDRESS$ D $ARG1$ -M $ARG2$ -K $ARG3$ | ||
} |
Та додати в конфігураційний файл localhost.cfg опис сервісів для моніторингу демонів Bacula: Директора (dir), Зберігача (sd) та Клієнта (fd):
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Bacula Director | |
check_command | check_bacula!dir!monitor!'password' | |
} |
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Bacula Storage | |
check_command | check_bacula!sd!monitor!'password' | |
} |
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | Bacula Client | |
check_command | check_bacula!fd!monitor!'password' | |
} |
де monitor — ім’я монітора Bacula; password — пароль доступу до демона.
Для перевірки проксі сервера Squid використовується модуль check_squid.pl, який можна знайти на сайті http://www.nagiosexchange.org. Після завантаження, модуль потрібно зберегти в директорії /usr/local/libexec/nagios та зробити виконуваним. Модуль написаний мовою Perl, тому потребує встановленого інтерпретатора цієї мови. Також, необхідно у модулі check_squid.pl вказати вірний шлях до модулів Nagios (use lib "/usr/local/libexec/nagios").
У файлі commands.cfg необхідно створити команду, яка викликає встановлений модуль:
define command{ | ||
command_name | check_squid | |
command_line | $USER1$/check_squid.pl $ARG1$ $ARG2$ $ARG3$ $ARG4$ | |
} |
Опис сервіса для моніторингу Squid додається в конфігураційний файл localhost.cfg:
define service{ | ||
use | local-service | |
host_name | localhost | |
service_description | SQUID PROXY | |
check_command | check_squid!url!proxy.mydomain!3128!code | |
} |
Де url — повна адреса будь-якого сайту, наприклад http://www.google.com.ua; proxy.mydomain — адреса проксі серверу; code — код статусу HTTP, який поверне Squid: у разі заборони доступу до Інтернет з локального комп’ютера через проксі сервер код дорівнює 403; якщо доступ дозволений — то 200.
Моніторинг комп’ютерів з ОС Windows
Для моніторингу комп’ютерів з ОС Windows призначена програма NSClient++ (http://trac.nakednuns.org/nscp/). Ця програма функціонує в якості служби Windows, та дозволяє отримувати інформацію про використання оперативної пам’яті, завантаження процесору, використання дискового простору, стану служб Windows та прикладних програм. На час створення статті, останньою була версія програми 0.3.6-RC4.
Як приклад, розглянуто моніторинг двох робочих станцій. Необхідно стежити за їх доступністю, часом безперервної роботи, завантаженням процесору, використанням оперативної пам'яті та дискового простору, та станом клієнта системи архівування Bacula і противірусної програми Касперського. Для цього потрібно створити конфігураційний файл windows.cfg наступного змісту:
# Ім’я та адреса першого комп’ютера | ||
define host{ | ||
use | windows-servers | |
host_name | win1 | |
alias | Programmer | |
address | 192.168.1.21 | |
} |
# Ім’я та адреса другого комп’ютера | ||
define host{ | ||
use | windows-servers | |
host_name | win2 | |
alias | Manager | |
address | 192.168.1.22 | |
} |
# Група для комп’ютерів з ОС Windows | ||
define hostgroup{ | ||
hostgroup_name | windows-servers | |
alias | Windows | |
members | win1,win2 | |
} |
# Перевірка доступності локального комп’ютера | ||
define service{ | ||
use | generic-service | |
host_name | win1,win2 | |
service_description | PING | |
} | check_command | check_ping!100.0,20%!500.0,60% -4 |
# Перевірка часу безперервної роботи | ||
define service{ | ||
use | generic-service | |
host_name | win1,win2 | |
service_description | Uptime | |
check_command | check_nt!UPTIME | |
} |
# Перевірка завантаження процесору | ||
define service{ | ||
use | generic-service | |
host_name | win1,win2 | |
service_description | CPU Load | |
check_command | check_nt!CPULOAD!-l 5,80,90 | |
} |
# Перевірка використання оперативної пам’яті | ||
define service{ | ||
use | generic-service | |
host_name | win1,win2 | |
service_description | Memory Usage | |
check_command | check_nt!MEMUSE!-w 80 -c 90 | |
} |
# Перевірка використання дискового простору (диск С) | ||
define service{ | ||
use | generic-service | |
host_name | win1,win2 | |
service_description | Disc C: space | |
check_command | check_nt!USEDDISKSPACE!-l c -w 80 -c 90 ; | |
} |
# Перевірка стану клієнта системи архівування Bacula | ||
define service{ | ||
use | generic-service | |
host_name | programmer | |
service_description | Bacula Client | |
check_command | check_nt!SERVICESTATE!-d SHOWALL -l Bacula-fd | |
} |
# Перевірка стану противірусної програми Касперського | ||
define service{ | ||
use | generic-service | |
host_name | programmer | |
service_description | Kaspersky | |
check_command | check_nt!SERVICESTATE!-d SHOWALL -l AVP | |
} |
Для включення цього файлу, необхідно в основному конфігураційному файлі nagios.cfg прибрати коментар з рядка cfg_files=/usr/local/etc/nagios/objects/windows.cfg
Після встановлення NSClient++ (за замовчанням в каталозі C:\Program Files\NSClient++), необхідно змінити файл конфігурації NSC.ini, прибравши в секції [modules] коментарі з рядків CheckSystem.dll, CheckDisk.dll, NSClientListener.dll та в секції [Settings] коментар з рядка allowed_hosts=, вказавши адресу комп’ютера з Nagios, або порожнє поле, якщо доступ дозволений з будь-якого комп’ютера. Після цього потрібно перезапустити службу NSClientpp (Nagios).
Висновки
Використання системи моніторингу з відкритим початковим кодом Nagios дає змогу цілодобову контролювати роботу обладнання та програмного забезпечення як для окремого комп’ютера, так і для локальної мережі. Завдяки цьому, значно збільшується надійність системи та ефективність її використання.
Література
- Josephsen D. Building a Monitoring Infrastructure with Nagios. Prentice Hall, 2007. -264 p
- Barth W. Nagios: System and Network Monitoring. No Starch Press, 2008. -720 p
Recent comments
12 years 45 weeks ago
12 years 47 weeks ago
13 years 29 weeks ago
13 years 36 weeks ago
14 years 21 weeks ago
14 years 45 weeks ago
14 years 51 weeks ago
15 years 4 weeks ago
15 years 6 weeks ago
15 years 21 weeks ago