Как стать автором
Обновить

Установка и настройка Nagios. Мониторинг Windows-хостов и Cisco. Настройка уведомлений по email

image

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


Требования

Установка и настройка Nagios 3 в Ubuntu Server 11.04. Мониторинг Windows и Cisco.
ОС: Ubuntu Server 11.04
Система мониторинга: Nagios 3
Требуется мониторить: Windows-сервера, Cisco 2960, Cisco 3750
Установка


Заходим в консоль с правами root:

#sudo su

Вводим свой пароль. Далее скачиваем необходимые нам пакеты:

#apt-get install apache2 php5 nagios3

Во время установки он задаст несколько вопросов в зависимости от вашей конфигурации сервера и попросит ввести пароль для учетной записи nagiosadmin.Теперь после окончания установки вы можете зайти на веб-интерфейс вашего Nagios. Для примера наш IP 192.168.0.1:

http://192.168.0.1/nagios3/

Настройка Nagios для мониторинга Windows-хостов

Все необходимые конфигурационные файлы лежат в папке /etc/nagios3/conf.d/. А глобальный конфигурационный файл nagios и файл команд лежат здесь /etc/nagios3/ и называется nagios.cfg и commands.cfg соответственно.
Чтобы мониторить windows-хосты нам необходимо подключить к nagios плагин check_nt, добавить необходимые компьютеры, которые мы хотим мониторить, в конфигурационные файлы и настроить на этих же компьютерах NSClient++.

Для начала настроим NSClient++.



Скачать его можно отсюда www.nsclient.org/nscp/downloads. Есть как 32-разрядная, так и 64-разрядная версии. Скачиваем и запускаем установку. Далее мы со всем соглашаемся и в окошке, где необходимо вписать информацию вводим ip нашего nagios-сервера, пароль и ставим везде галочки, кроме WMI.

image

Нажимаем Next и заканчиваем установку.

Идём в папку C:\Program Files\NSClient++ и открываем для редактирования файл NSC.ini. Здесь нам нужно изменить некоторые строчки:

— вводим наш пароль:

;# 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=12345


— вводим хост:

;# 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=192.168.0.1/255.255.255.0


— и здесь:

;# USE THIS FILE
; Use the INI file as opposed to the registry if this is 0 and the use_reg in the registry is set to 1
; the registry will be used instead.
use_file=1
allowed_hosts=192.168.0.1
password=12345


Далее идём в службы, открываем NSClient++ и ставим галочку напротив «Разрешить взаимодействие с рабочим столом» на вкладке «Вход в систему».

image

Теперь нам нужно запустить клиент. Из командной строки:

nsclient++ /start

Идем в диспетчер задач и проверяем запущен ли клиент.

image

На этом настройка NSClient++ закончена.

Теперь нам необходимо настроить Nagios.

Идем в файл /etc/nagios3/commands.cfg и добавляем следующие строчки:

# check_nt command definition
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s 12345 -v $ARG1$ $ARG2$
}


Этой строкой мы включаем плагин check_nt. Не забываем указать наш пароль, который мы вводили при настройке NSClient++ (12345).
После этого добавим необходимый нам хост. Для этого создадим файлик myhosts.cfg в папке
/etc/nagios3/conf.d/. Дадим ему необходимые права для пользователя nagiosadmin. Запишем в нем следющее:

# WINDOWS SERVERS
define host{
host_name windows-server
alias WINDOWS-SERVER
address 192.168.0.2
use generic-host
}


Так как хост у нас предполагается быть не один, то создадим группу для всех windows-хостов. Сделаем это в файле /etc/nagios3/conf.d/hostgroups_nagios2.cfg

# WINDOWS SERVERS
define hostgroup {
hostgroup_name windows-servers
alias WINDOWS SERVERS
members windows-server, windows-server2
}


Теперь нам необходимо добавить сервисы, которые будут мониториться. Делается это в файле /etc/nagios3/conf.d/services_nagios2.cfg

— проверка NSClient++:

# 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:

# /etc/init.d/nagios3 restart

Заходим в веб-интерфейс nagios и по нашему хосту видим следующую инфу:

image

Настройка Nagios для мониторинга CISCO (2960 и 3750)


Для начала нам нужно настроить SNMP на самой CISCO. Заходим в консоль и прописываем следующее:

#snmp-server community RO-COMMUNITY RO
#snmp-server trap-source Vlan1
#snmp-server source-interface informs Vlan1
#snmp-server location LOCATION
#snmp-server contact admin@admin.com
#snmp-server host 192.168.0.1 RO-COMMUNITY
#exit


Теперь проверим работает ли snmp следующей командой с хоста, где стоит Nagios:

# snmpwalk –v2c –c RO-COMMUNITY 192.168.0.4

192.168.0.4 – ip нашей Cisco 2960.

После этой команды должно пойти огромное количество записей по вашей Cisco. Если ругается, то скорее всего не установлен пакет snmpd и snmp-utils. Или следует проверять конфиг Cisco.

Итак, мы убедились, что все работает. Идём подключать плагин check_snmp. Лезем в файлик commands.cfg в /etc/nagios3/ и вбиваем следующее:

# check_snmp command definition
define command{
command_name check_snmp
command_line usr/lib/nagios/plugins/check_snmp -H $HOSTADRESS$ $ARG1$
}


Добавляем нужные нам хосты в тот же файлик myhosts.cfg

define host{
host_name CISCO 2960
alias CISCO 2960
address 192.168.0.4
use generic-host
}


Можно также создать группу, если свитчей много.

Описываем необходимые нам сервисы:

— пинг:

# CISCO 2960
# PING
define service {
host_name cisco 2960
service_description PING
check_command check_ping!100.0,20%!500.0,60%
use generic-service
}


— аптайм:

# UPTIME
define service {
host_name cisco 2960
service_description UPTIME
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o .1.3.6.1.2.1.1.3.0 -l "Uptime is"
use generic-service
}


— порты FastEthernet с 1 по 6:

# PORT STATUS for SWITCHES-24
define service {
host_name cisco 2960
service_description FastEthernet Port 1-6 Link Status
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o ifOperStatus.10001 -r 1 -m RFC1213-MIB, -o ifOperStatus.10002 -r 1 -m RFC1213-MIB, -o ifOperStatus.10003 -r 1 -m RFC1213-MIB, -o ifOperStatus.10004 -r 1 -m RFC1213-MIB, -o ifOperStatus.10005 -r 1 -m RFC1213-MIB, -o ifOperStatus.10006 -r 1 -m RFC1213-MIB
use generic-service
}


Прошу обратить внимание, что на гигабитных свитчах номер портов указывается, как 10001, 10002. А гигабитные порты — 10101, 10102.

— порты GigabitEthernet отдельно:

define service {
host_name cisco 2960
service_description GigabitEthernet Port 1 Link Status
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o ifOperStatus.10101 -r 1 -m RFC1213-MIB
use generic-service
}
define service {
host_name cisco 2960
service_description GigabitEthernet Port 2 Link Status
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o ifOperStatus.10102 -r 1 -m RFC1213-MIB
use generic-service
}


— FAN:

define service {
host_name cisco 2960
service_description FAN Status
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o .1.3.6.1.4.1.9.9.13.1.4.1.2.1004 -l "Fan Status"
use generic-service
}


— питание:

define service {
host_name cisco 2960
service_description Power Supply Status
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o .1.3.6.1.4.1.9.9.13.1.5.1.2.1003 -l "Power Supply Status"
use generic-service
}


— температура:

define service {
host_name cisco 2960
service_description Temperature Status
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o .1.3.6.1.4.1.9.5.1.2.13.0 -l "Temp Status"
use generic-service
}


— процессор:

define service {
host_name cisco 2960
service_description CPU Load
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o .1.3.6.1.4.1.9.9.109.1.1.1.1.5.1 -w 90 -c 95 -u % -l "CPU Load"
use generic-service
}


— использование памяти:

define service {
host_name cisco 2960
service_description Memory Usage
check_command check_snmp! -H 192.168.0.4 -C RO-COMMUNITY -o .1.3.6.1.4.1.9.9.48.1.1.1.5.1 -l "Mem Used"
use generic-service
}


Теперь перезапускаем Nagios и видим примерную картину по нашей железке. Для себя я добавил еще промежутки портов.

image

В промежутке портов он сообщает состояние CRITICAL, даже если один из портов находится в состоянии «down».
В вышеуказанных сервисах прописаны oid’ы для Cisco 2960, которые мне в итоге подошли и для 3750. Необходимые вам oid’s можно найти на сайте Cisco или с помощью, например, MIB Browser.

Настройка уведомлений по email

Для начала нужно поставить следующие пакеты:

#apt-get install libio-socket-ssl-perl libnet-ssleay-perl perl
#apt-get install sendemail


Создадим для nagios почтовый ящик, например на gmail.

Теперь в файле commands.cfg пропишем следующее:

# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -f username@gmail.com -t yourmail@gmail.com -u "NAGIOS WARNING" -s smtp.gmail.com -o tls=yes -xu username -xp password -m
}
# 'notify-host-by-emailz' command definition
define command{
command_name notify-host-by-emailz
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -f username@gmail.com -t yourmail@gmail.com -u "NAGIOS WARNING" -s smtp.gmail.com -o tls=yes -xu username -xp password -m
}


username@gmail.com – созданный почтовый ящик
yourmail@gmail.com – ящик, куда будут приходить оповещения.
username – логин от созданного почтового ящика
password – пароль от созданного почтового ящика

Теперь создадим нужный нам контакт в файле /etc/nagios3/conf.d/contacts_nagios2.cfg

define contact{
contact_name user
alias Root
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email username@gmail.com
}


Перезапускаем Nagios. Настройка закончена.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.