Pull to refresh

Установка и настройка 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. Настройка закончена.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.