В компаниях где работают важные информационные системы, IT-специалистам требуется следить за работоспособностью таких систем. Бизнес процессы компании не должны прерываться ни при каких условиях. Бывает что сервер падает или зависает служба, и в это время например клиенты компании не смогут купить определенный товар. Такая не очень красивая ситуация может отразиться на минусовой прибыли, а также на репутации. Представьте себя на месте покупателя, вам не понравится ждать пока заработает бухгалтерская программа на упавшем сервере (учетная система 1С).
Чтобы отследить такие случаи и оперативно исправить проблему, нужно сперва чтобы IT-специалист узнал где у него возникла поломка. Вот тут-то и выходят службы мониторинга систем и сетей на сцену. Данные системы призваны предупреждать системного администратора о случившемся сбое, уведомляя его об этом путем отправки СМС сообщения на его мобильный, электронного почтового письма или пейджинговой строчки.
Так вот в этой короткой записке, будет описан процесс установки Nagios, программы мониторинга систем и сетей на CentOS 6 x32
Краткое содержание:
1. Задача по мониторингу
2. Установка Nagios
3. Настройка агента на клиентских машинах
4. Настройка сервера мониторинга, добавление клиентов
Сперва создадим себе задачу, чтобы потом решать ее с помощью системы мониторинга, начнем нашу установку с описания задачи.
1. Задача по мониторингу
Допустим у нас имеется малый офис с пятью серверами:
1. Программный шлюз который дает доступ в Интернет сотрудникам офиса.
Здесь мы будем проверять ping, http, dns и ssh сервисы.
ping - по ping мы будем знать работает ли хост.
dns - у меня этот хост также является DNS первичным сервером, поэтому хочу знать состояние DNS службы.
http - по протоколу http у меня работает демон Apache, через который управляется шлюз, поэтому мне важно иметь рабочий веб доступ к серверу.
ssh - тут всем все понятно, удаленный доступ.
2. Почтовый сервер на Postfix'е
Здесь мы мониторим доступность хоста и основных служб SMTP и POP/IMAP
3. Сервер виртуализации на базе KVM
Этот сервер будем мониторить по его доступности, а также нам интересен доступ по ssh.
На этом сервер также у нас крутится две машины:
- Доменный контроллер Windows Server STD 2003
- Сервер с учетной системой 1С:Предприятие 8.2 + MS SQL 2008
Мониторить эти две машины будет агент, Nagios агент позволит узнать о этих машина следующею информацию: дисковое место, свободная ОЗУ, загрузка CPU и т.д.
А теперь напишем IP адреса все серверов которые буду участвовать:
10.168.50.2 - это IP адрес управляемого программного Интернет шлюза (Linux)
10.168.50.3 - это IP адрес почтового сервера (Linux)
10.168.50.5 - это сервер 1С на Windows Server 2003
10.168.50.6 - это сервер виртуализации на KVM
10.168.50.8 - это доменный контролер
Сам Nagios Server будет у нас установлен на Интернет шлюз который раздает Интернет
Все задачи ясны, приступим к реализации. Установим Nagios.
2. Установка Nagios
Подключим репозитроий "Epel":
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
Устанавливаем зависимости и сам Nagios:
# yum install nagios nagios-plugins-all nagios-plugins-nrpe nrpe php httpd -y
После установки, Nagios расположится в каталоге - /etc/nagios/. Основной конфигурационый файл находится в нем, его имя nagios.cfg.
В этом каталоге есть подкаталог с именем - /etc/nagios/conf.d/. Здесь будут лежать наши конфигурационные файлы.
Сразу же ставим службы в автозагрузку и запускаем их:
# chkconfig nagios on
# chkconfig httpd on
# service httpd start
# service nagios start
Сразу же зададим пароль для администраторской учетной записи Nagios под именем "nagiosadmin":
# htpasswd -c /etc/nagios/passwd nagiosadmin
Учетная запись с именем "nagiosadmin" создается автоматически при установке Nagios.
Теперь мы можем войти на веб страничку:
http://your IP/nagios/
3. Настройка агента на Windows клиентских машинах
На Windows сервере устанавливаем агента, с помощью этого агента будем узнавать о Windows хосте.
Скачайте Microsoft Visual C++ 2005 SP1 x32
http://www.microsoft.com/en-us/download/confirmation.aspx?id=5638
или x64 - http://www.microsoft.com/en-us/download/details.aspx?id=18471
Установите скачанный файл. Скачайте агента Nagios по следующей ссылке:
x64
http://files.nsclient.org/0.3.x/NSClient%2B%2B-0.3.5-x64.msi
x32
http://files.nsclient.org/0.3.x/NSClient++-0.3.5-Win32.msi
Инсталируйте его, после чего потребуется его настройка.
Сперва включим Nagios Clinet Tray, откроем файл C:\Program Files\NSClient++\NSC.ini
В секции [modules] расскоментируем SysTray.dll
-
[modules]
-
FileLogger.dll
-
CheckSystem.dll
-
CheckDisk.dll
-
NSClientListener.dll
-
NRPEListener.dll
-
SysTray.dll
-
CheckEventLog.dll
-
CheckHelpers.dll
-
CheckWMI.dll
Ставим пароль:
-
;# PASSWORD
-
; This is the password (-s) that is required to access NSClient remotely.
-
; If you leave this blank everyone will be able to access the daemon remotly.
-
password=123456
Ставим IP адрес сервера Nagios
-
;# ALLOWED HOST ADDRESSES
-
; This is a comma-delimited list of IP address of hosts that are allowed to talk to the all daemons.
-
; If leave this blank anyone can access the deamon remotly (NSClient still requires a valid password).
-
; The syntax is host or ip/mask so 192.168.0.0/24 will allow anyone on that subnet access
-
allowed_hosts=10.168.50.2/255.255.255.0
-
[NSClient]
-
;# ALLOWED HOST ADDRESSES
-
; This is a comma-delimited list of IP address of hosts that are allowed to talk to NSClient deamon.
-
; If you leave this blank the global version will be used instead.
-
allowed_hosts=10.168.50.2
Ставим пароль еще раз
-
;# ENCRYPTION PASSWORD
-
; This is the password/passphrase that should be used to encrypt
-
; the sent packets.
-
password=123456
Сохраняем файлик
Нажимаем меню ПУСК -> Выполнить -> service.msc
Находим службу NSClinetpp, нажимаем свойства -> Галка Вход в систему: С системной учетной записью и Разрешить взаимодействие с рабочим столом
У Nagios имеются конфигурационные файлы в следующих каталогах:
1. /etc/nagios/ - содержит главные конфигурационные файлы, там находится головной файлик nagios.cfg, который нужен демону Nagios. Редактировать файл не нужно.
2. /etc/nagios/conf.d/ - дополнительные конфигурационные файлы, вот там-то и будут наши настройки, мы создадим там необходимые нам файлы для например оглашения хостов с которых будем собирать данные
3. /etc/nagios/objects/ - содержит конфигурационные файлы для выполнения команд, которые и будут собирать статистику. А также каталог содержит example примеры, в которых описано как можно мониторить. Вот с этих файлов можно взять настройки себе в /etc/nagios/conf.d/ и сидеть тихо :)
Теперь настраиваем Nagios, чтобы мониторить Windows компьютеры, подправим последовательно файлы:
1. /etc/nagios/objects/commands.cfg
2. /etc/nagios/nagios.cfg
Редактируем /etc/nagios/objects/commands.cfg
# vi /etc/nagios/objects/commands.cfg
Находим следующее и добавляем пароль -s 123456
-
# 'check_nt' command definition
-
define command{
-
command_name check_nt
-
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 123456 -v $ARG1$ $ARG2$
-
}
Это требуется чтобы включить мониторинг Windows хостов.
Теперь создадим файл /etc/nagios/conf.d/mywinhosts.cfg, где будет наш Windows сервер
-
# WINDOWS SERVERS
-
define host{
-
host_name windows-server
-
alias WINDOWS-SERVER
-
address 10.168.50.10
-
use generic-host
-
#name generic-host ; The name of this host template
-
notifications_enabled 1 ; Host notifications are enabled
-
event_handler_enabled 1 ; Host event handler is enabled
-
flap_detection_enabled 1 ; Flap detection is enabled
-
failure_prediction_enabled 1 ; Failure prediction is enabled
-
process_perf_data 1 ; Process performance data
-
retain_status_information 1 ; Retain status information across program restarts
-
retain_nonstatus_information 1 ; Retain non-status information across program restarts
-
check_command check-host-alive
-
max_check_attempts 10
-
notification_interval 0
-
notification_period 24x7
-
notification_options d,u,r
-
contact_groups admins
-
}
-
# WINDOWS SERVERS
-
define hostgroup {
-
hostgroup_name windows-servers
-
alias WINDOWS SERVERS
-
members windows-server
-
}
Создадим файл /etc/nagios/conf.d/services_windows.cfg для мониторинга пинга, CPU, памяти, место на диске.
-
# NSCLIENT
-
define service {
-
hostgroup_name windows-servers
-
service_description NSClient++ Version
-
check_command check_nt!CLIENTVERSION
-
use generic-service
-
}
-
# PING
-
define service {
-
hostgroup_name windows-servers
-
service_description PING
-
check_command check_ping!100.0,20%!500.0,60%
-
use generic-service
-
}
-
# CPU
-
define service {
-
hostgroup_name windows-servers
-
service_description CPU Load
-
check_command check_nt!CPULOAD!-l 5,80,90
-
use generic-service
-
}
-
# MEMORY
-
define service {
-
hostgroup_name windows-servers
-
service_description Memory Usage
-
check_command check_nt!MEMUSE!-w 80 -c 90
-
use generic-service
-
}
-
# DISK SPACE
-
define service {
-
hostgroup_name windows-servers
-
service_description C: Drive Space
-
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
-
use generic-service
-
}
Если у вас проблемы с конфиг файлами nagios, запускайте debug режим, в котором показано где ошибка:
# nagios -v /etc/nagios/nagios.cfg
или
# nagios /etc/nagios/nagios.cfg
Обычно когда все хорошо, выводится вот такие строчки:
Total Warnings: 0
Total Errors: 0
Перезапускаем демон:
# service nagios restart
Заходим на страничку http://you ip/nagios
Вводим логин и пароль nagiosadmin / 123456
А вот скрин на котором видно как мониторится Windows Server и сервер на котром установлен Nagios (Localhost)
Если в колонке Status стоит PENDING, значить хост еще не опрошен.Через минуты две будут появляться зеленные квадратики с надписью ОК как на картинке на верху.
Мониторинг Linux хоста по внешним сервисам
Создадим описание Linux хоста, файл /etc/nagios/cond.d/centoshost.cfg
А также группу Linux хостов - /etc/nagios/conf.d/centosgroup.cfg
Создадим описание сервисов - /etc/nagios/conf.d/services_centos.cfg
# vi /etc/nagios/conf.d/centoshost.cfg
-
# CENTOS SERVERS
-
define host{
-
host_name centos-server
-
alias CENTOS-SERVER
-
address 10.168.50.3
-
use generic-host
-
#name generic-host ; The name of this host template
-
notifications_enabled 1 ; Host notifications are enabled
-
event_handler_enabled 1 ; Host event handler is enabled
-
flap_detection_enabled 1 ; Flap detection is enabled
-
failure_prediction_enabled 1 ; Failure prediction is enabled
-
process_perf_data 1 ; Process performance data
-
retain_status_information 1 ; Retain status information across program restarts
-
retain_nonstatus_information 1 ; Retain non-status information across program restarts
-
check_command check-host-alive
-
max_check_attempts 10
-
notification_interval 0
-
notification_period 24x7
-
notification_options d,u,r
-
contact_groups admins
-
}
# vi /etc/nagios/conf.d/centosgroup.cfg
-
# CENTOS SERVERS
-
define hostgroup {
-
hostgroup_name centos-servers
-
alias CENTOS SERVERS
-
members centos-server
-
}
Создадим файл с описанием проверов CentOS хостов/хоста - /etc/nagios/conf.d/services_centos.cfg
-
# PING
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description PING
-
check_command check_ping!100.0,20%!500.0,60%
-
}
-
# SSH
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description SSH
-
check_command check_ssh
-
notifications_enabled 0
-
}
-
# HTTP
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description HTTP
-
check_command check_http
-
notifications_enabled 0
-
}
-
-
# SMTP
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description SMTP
-
check_command check_smtp
-
notifications_enabled 0
-
}
-
-
# IMAP
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description IMAP
-
check_command check_imap
-
notifications_enabled 0
-
}
-
# POP
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description POP
-
check_command check_pop
-
notifications_enabled 0
-
}
-
# DNS
-
define service{
-
hostgroup_name centos-servers
-
use generic-service
-
host_name centos-server
-
service_description dns service
-
check_command check_dns
-
notifications_enabled 0
-
}
-
# 'check_dns' command definition
-
define command{
-
command_name check_dns
-
command_line /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$'
-
}
Проверим конфиг файл на ошибки:
# nagios -v /etc/nagios/nagios.cfg
Перечитаем конфиг файл:
# service nagios reload
Проверяем, зайдем на http://you IP/nagios
--
Итого: Как видим, мониторятся три хоста: Localhost (Internet GateWay Server), Mail и Windows сервер.
Включайте свои Windows и Linux сервера в группы, чтобы увидеть их в мониторинге.