Цель: установить и настроить на базе 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=myuser
authorized_for_system_information=user1
#authorized_for_configuration_information=nagiosadmin
authorized_for_configuration_information=myuser
authorized_for_configuration_information=user1
#authorized_for_system_commands=nagiosadmin
authorized_for_system_commands=myuser
authorized_for_system_commands=user1
#authorized_for_all_services=nagiosadmin
#authorized_for_all_hosts=nagiosadmin
authorized_for_all_services=myuser
authorized_for_all_services=user1
authorized_for_all_hosts=myuser
authorized_for_all_hosts=user1
#authorized_for_all_service_commands=nagiosadmin
#authorized_for_all_host_commands=nagiosadmin
authorized_for_all_service_commands=myuser
authorized_for_all_service_commands=user1
authorized_for_all_host_commands=myuser
authorized_for_all_host_commands=user1
Создадим пароли для админов:
monitor ~ # htpasswd -n myuser >> /etc/nagios4/htpasswd.users
monitor ~ # htpasswd -n user1 >> /etc/nagios4/htpasswd.users
Настройка контактов. Будет отправлено письмо, в случае обнаружения ошибки:
monitor ~ # vim /etc/nagios4/objects/contacts.cfg
define contact{
contact_name myuser
use generic-contact
alias Nagios Admin
email [email protected]
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members myuser
}
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
}
На этом базовая настройка окончена. Далее можно без особых проблем добавлять новые хосты и сервисы, а также писать свои плагины.
Немного скриншотов:
На всех четырёх машинах 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=myuser
authorized_for_system_information=user1
#authorized_for_configuration_information=nagiosadmin
authorized_for_configuration_information=myuser
authorized_for_configuration_information=user1
#authorized_for_system_commands=nagiosadmin
authorized_for_system_commands=myuser
authorized_for_system_commands=user1
#authorized_for_all_services=nagiosadmin
#authorized_for_all_hosts=nagiosadmin
authorized_for_all_services=myuser
authorized_for_all_services=user1
authorized_for_all_hosts=myuser
authorized_for_all_hosts=user1
#authorized_for_all_service_commands=nagiosadmin
#authorized_for_all_host_commands=nagiosadmin
authorized_for_all_service_commands=myuser
authorized_for_all_service_commands=user1
authorized_for_all_host_commands=myuser
authorized_for_all_host_commands=user1
Создадим пароли для админов:
monitor ~ # htpasswd -n myuser >> /etc/nagios4/htpasswd.users
monitor ~ # htpasswd -n user1 >> /etc/nagios4/htpasswd.users
Настройка контактов. Будет отправлено письмо, в случае обнаружения ошибки:
monitor ~ # vim /etc/nagios4/objects/contacts.cfg
define contact{
contact_name myuser
use generic-contact
alias Nagios Admin
email [email protected]
}
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members myuser
}
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
?
Значения, при которых будет срабатывать алерт, warning и critical соответственно.
Отправить комментарий