четверг, 19 июня 2014 г.

Установка и настройка Nagios 4

Цель: установить и настроить на базе Nagios мониторинг для четырёх серверов: monitor (localhost), главный сервер (server, main-server) и 2 DNS сервера (DNS1, DNS2).
На всех четырёх машинах Debian 7.

Устанавливается версия Nagios Core 4.0.7, Nagios Plugins 2.0.2, Nagios NRPE 2.15.

Обратите внимание на hostname, чтобы не запутаться.
monitor - сервер мониторинга, на котором будет производиться 90% всех настроек;
server - сервер, который будет подключать к мониторингу;
dns1, dns2 - DNS сервера, которые будем подключать к мониторингу.

Установка необходимых зависимостей:
monitor ~ # apt-get install apache2 libapache2-mod-php5 build-essential libgd2-xpm-dev libssl-dev heirloom-mailx wget curl daemon apt-file libnet-snmp-perl libperl5.14 libpq5 libradius1 libsensors4 libsnmp-base libsnmp15 libtalloc2 libtdb1 libwbclient0 samba-common samba-common-bin smbclient snmp whois libmysqlclient15-dev checkinstall dnsutils

Настройка пользователя nagios:
monitor ~ # groupadd -g 3000 nagios
monitor ~ # groupadd -g 3001 nagcmd
monitor ~ # useradd -u 3000 -g nagios -G nagcmd -d /usr/local/nagios -c 'Nagios Admin' nagios
monitor ~ # adduser www-data nagcmd

Загрузка Nagios Core 4.0.7 и создание необходимых каталогов:
monitor ~ # mkdir -p /usr/local/src/nagios4
monitor ~ # cd /usr/local/src/nagios4
monitor ~ # wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.7.tar.gz
monitor ~ # tar xf nagios-4.0.7.tar.gz
monitor ~ # cd nagios-4.0.7
monitor ~ # mkdir -p /usr/local/nagios/share/{stylesheets,images,bin}

Компиляция и установка Nagios Core:
monitor ~ # ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd
monitor ~ # make all
monitor ~ # make install
monitor ~ # make install-init
monitor ~ # make install-config
monitor ~ # make install-commandmode
monitor ~ # make install-webconf

Загрузка и установка Nagios Plugins 2.0.2:
monitor ~ # mkdir -p /usr/local/src/nagios-plugins
monitor ~ # cd /usr/local/src/nagios-plugins
monitor ~ # wget http://nagios-plugins.org/download/nagios-plugins-2.0.2.tar.gz
monitor ~ # tar -xf nagios-plugins-2.0.2.tar.gz
monitor ~ # cd nagios-plugins-2.0.2
monitor ~ # ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl=/usr/bin/openssl --enable-perl-modules --enable-libtap
monitor ~ # make
monitor ~ # make install

Установка NRPE 2.15:
monitor ~ # mkdir -p /usr/local/src/nrpe
monitor ~ # cd /usr/local/src/nrpe
monitor ~ # wget http://kent.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
monitor ~ # tar -xf nrpe-2.15.tar.gz
monitor ~ # cd nrpe-2.15
monitor ~ # ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
monitor ~ # make all
monitor ~ # make install

Создаём пользователя nagiosadmin, который будет временным администратором nagios:
monitor ~ # htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin 
monitor ~ # chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users
monitor ~ # mkdir -p /var/www/nagios4/
monitor ~ # chown www-data:www-data /var/www/nagios4

Сертификат для SSL:
monitor ~ # mkdir /etc/apache2/ssl
monitor ~ # cd /etc/apache2/ssl
monitor ~ # a2enmod ssl
monitor ~ # openssl req -x509 -nodes -days 365 -newkey rsa:4096 -out nagios.pem -keyout nagios.key

Настройка apache2 для Nagios:
monitor ~ # vim /etc/apache2/sites-available/nagios
<VirtualHost *:443>
   ServerAdmin [email protected]
   ServerName site.ru
   DocumentRoot /var/www/
   <Directory />
      Options FollowSymLinks
      AllowOverride None
   </Directory>
   <Directory /var/www/>
      Options -Indexes FollowSymLinks MultiViews
      AllowOverride All
      Order allow,deny
      allow from all
   </Directory>
   SSLEngine On
   SSLCertificateFile /etc/apache2/ssl/nagios.pem
   SSLCertificateKeyFile /etc/apache2/ssl/nagios.key
</VirtualHost>

monitor ~ # vim /etc/apache2/ports.conf
NameVirtualHost 127.0.0.1:80
Listen 127.0.0.1:80

monitor ~ # a2dissite default
monitor ~ # a2ensite nagios
monitor ~ # service apache2 restart

Проверка:
https://monitor-ip/nagios/

user: nagiosadmin
password: который_задавали_ранее
По умолчанию можно уже наблюдать за localhost.

Если будет проблема с отображением php кода вместо содержимого сайта, то нужно подправить один файл:
monitor ~ # vim /etc/apache2/mods-available/php5.conf
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
   SetHandler application/x-httpd-php
</FilesMatch>

Удобно хранить конфиги Nagios в /etc/nagios4/conf.d:
monitor ~ # ln -s /usr/local/nagios/etc/ /etc/nagios4
monitor ~ # mkdir /etc/nagios4/conf.d

Указываем каталог, в котором будут лежать конфиги:
monitor ~ # vim /etc/nagios4/nagios.cfg
cfg_dir=/etc/nagios4/conf.d/

Создаём каталоги, которые пригодятся нам позже и перезагружаем сервис:
monitor ~ # mkdir -p /etc/nagios4/conf.d/{hosts,services,timeperiods,templates,hostgroups,servicegroups,contacts}
monitor ~ # service nagios restart

Администратор Nagios у нас по умолчанию nagiosadmin, это не безопасно, поэтому будет разумно создать админа с другим именем, а может быть и несколько:
monitor ~ # vim /etc/nagios4/cgi.cfg
#authorized_for_system_information=nagiosadmin
authorized_for_system_information=amet13
authorized_for_system_information=user1

#authorized_for_configuration_information=nagiosadmin
authorized_for_configuration_information=amet13
authorized_for_configuration_information=user1

#authorized_for_system_commands=nagiosadmin
authorized_for_system_commands=amet13
authorized_for_system_commands=user1

#authorized_for_all_services=nagiosadmin
#authorized_for_all_hosts=nagiosadmin
authorized_for_all_services=amet13
authorized_for_all_services=user1
authorized_for_all_hosts=amet13
authorized_for_all_hosts=user1

#authorized_for_all_service_commands=nagiosadmin
#authorized_for_all_host_commands=nagiosadmin
authorized_for_all_service_commands=amet13
authorized_for_all_service_commands=user1
authorized_for_all_host_commands=amet13
authorized_for_all_host_commands=user1

Создадим пароли для админов:
monitor ~ # htpasswd -n amet13 >> /etc/nagios4/htpasswd.users
monitor ~ # htpasswd -n user1 >> /etc/nagios4/htpasswd.users

Настройка контактов. Будет отправлено письмо, в случае обнаружения ошибки:
monitor ~ # vim /etc/nagios4/objects/contacts.cfg
define contact{
   contact_name   amet13
   use            generic-contact
   alias          Nagios Admin
   email          [email protected]
}
define contactgroup{
   contactgroup_name   admins
   alias               Nagios Administrators
   members             amet13
}

monitor ~ # service nagios restart

Теперь можно подключать другие машины.

Настройка Nagios на клиентах:
server ~ # apt-get update
server ~ # apt-get install nagios-nrpe-server

Указываем ip-адрес сервера мониторинга:
server ~ # vim /etc/nagios/nrpe.cfg 
allowed_host=monitor-ip

server ~ # service nagios-nrpe-server restart

Переходим опять к монитору, настраиваем конфиг для server:
monitor ~ # cp /etc/nagios4/objects/localhost.cfg /etc/nagios4/conf.d/hosts/server.cfg
monitor ~ # vim /etc/nagios4/conf.d/hosts/server.cfg
define host{
   use         linux-server
   host_name   main-server
   alias       Main Server
   address     185.9.146.233
}
# PING
define service{
   use                   generic-service
   host_name             main-server
   service_description   PING
   check_command         check_ping!100.0,20%!500.0,60%
}
# Root
define service{
   use                   generic-service
   host_name             main-server
   service_description   Root Partition
   check_command         check_local_disk!20%!10%!/
}
# Текущие пользователи
define service{
   use                   generic-service
   host_name             main-server
   service_description   Current Users
   check_command         check_local_users!20!50
}
# Число процессов
define service{
   use                   generic-service
   host_name             main-server
   service_description   Total Processes
   check_command         check_local_procs!250!400!RSZDT
}
# Текущая нагрузка
define service{
   use                   generic-service
   host_name             main-server
   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                   generic-service
   host_name             main-server
   service_description   Swap Usage
   check_command                      check_local_swap!20!10
}
# SSH
define service{
   use                   generic-service
   host_name             main-server
   service_description   SSH
   check_command                      check_ssh
}
# HTTP
define service{
   use                   generic-service
   host_name             main-server
   service_description   HTTP
   check_command         check_http
}
# DNS
define service {
   use                   generic-service
   host_name             main-server
   service_description   DNS
   check_command         check_dns
}

Осталось подключить только 2 DNS сервера.
Подключаем их аналогично main-server.
Для DNS я оставил только два сервиса (DNS, Current Load, PING), так как остальные пока не нужны.
Конфиги для DNS1 и DNS2, к примеру:
monitor ~ # vim /etc/nagios4/conf.d/hosts/dns1.cfg
monitor ~ # vim /etc/nagios4/conf.d/hosts/dns2.cfg

Теперь можно добавить наши хосты в одну группу, допустим linux-servers:
monitor ~ # vim /etc/nagios4/objects/localhost.cfg
define hostgroup{
   hostgroup_name   linux-servers
   alias            Linux Servers
   members          localhost,main-server,dns1,dns2
}

На этом базовая настройка окончена. Далее можно без особых проблем добавлять новые хосты и сервисы, а также писать свои плагины.

Немного скриншотов:


Мануал по плагинам: http://nagios-plugins.org/doc/man/index.html

2 комментария:

Анонимный комментирует...

Добрый день! Подскажите, что означают параметры после названия проверок, например, такие как:

check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
или
check_command check_local_procs!250!400!RSZDT

?

Amet13 комментирует...

Значения, при которых будет срабатывать алерт, warning и critical соответственно.