Configurando o Nágios – Básico
Vamos neste post mostrar a configuração de um servidor Nágios.
Nagios é uma popular aplicação de monitoração de rede de código aberto distribuída sob a licença GPL. Ele pode monitorar tanto hosts quanto serviços, alertando-o quando ocorrerem problemas e também quando os problemas forem resolvidos.
O Nagios foi originalmente criado sob o nome de Netsaint, foi escrito e é atualmente mantido por Ethan Galstad, junto com um exército de desenvolvedores que ativamente mantém plugins oficiais e não-oficiais.
Nagios primeiramente foi escrito para o sistema operacional Linux, mas pode rodar em outros Unixes também. (fonte Wikipedia).
Partindo direto para as configurações:
Foi criado uma pasta para conter os nossos arquivos cfg´s e definido em /etc/nagios/nagios.cfg.
cfg_dir=/etc/nagios/meus/
Arquivos contidos na pasta:
- commands.cfg – comandos que serão usados para controlar os serviços.
- contacts.cfg – usuários que serão avisados dos problemas.
- contactgroup.cfg – grupos de contatos, facilita ao comunicar falhas.
- hosts.cfg – servidores, impressoras, switchs que serão monitorados.
- hostgroup.cfg – agrupamento de hosts, assim como o contactgroup.
- services.cfg – serviços que serão monitorados, exemplo: PING.
- hostextinfo.cfg – informações adicionais como coordenadas para serem mostradas no mapa, imagem para definição do serviço/servidor monitorado.
Sempre que alterar algum arquivo
primeiro teste as novas configurações:
# nagios -v /etc/nagios/nagios.cfg
Depois(se estiver tudo certo) atualize as regras:
# service nagios reload
Vamos agora conferir o que cada arquivo contém.
- commands.cfg
- contacts.cfg
- contactgroup.cfg
- hosts.cfg
- hostgroup.cfg
- services.cfg
- hostextinfo.cfg
define command {
command_name check_oracle ;nome do comando, quando for usá-lo será usado este nome
command_line $USER1$/check_oracle --tns $HOSTADDRESS$ $ARG1$ ;caminho do plugin e o parámetros que serão aceitos
}
define contact {
use generic-contact ;template que já possui algumas características
contact_name luiz
alias Luiz Taborda Bukowski
service_notification_period 24x7 ; esses períodos são configurados em /etc/nagios/objects/timeperiods.cfg
host_notification_period 24x7
service_notification_commands notify-service-by-email ;notificações em /etc/nagios/objects/commands.cfg
service_notification_options w,u,c,r
host_notification_commands notify-host-by-email
host_notification_options d,u,r
email email@meudominio.com.br
}
service_notification_options
w = WARNING
u = UNKNOWN
c = CRITICAL
r = RECOVER (OK)
f = when the service starts and stops flapping
n = NONE – nenhuma notificação
host_notification_options
d = DOWN
u = UNREACHABLE
r = RECOVER (UP)
f = when the host starts and stops flapping
s = SEND notifications when host or service scheduled downtime starts and ends.
n = NONE – nenhuma notificação
define contactgroup {
contactgroup_name http-admin
alias Administradores de Web Server
members luiz ;membros do grupo definidos em contacts.cfg
}
define host {
use generic-host
host_name firewall
alias Firewall
address 192.168.1.1
check_command check-host-alive
max_check_attempts 5
contact_groups fire-admin ;grupo definido em contactgroup.cfg
}
define host {
use generic-host ; template
host_name webserver
alias Web Server #1
address 192.168.1.2
check_command check-host-alive
max_check_attempts 5
notification_interval 1
notification_period 24x7
notification_options d,u,r ; down, unreachable, recover(UP)
contact_groups http-admin
parents firewall ;no mapa o webserver estará ligado no firewall
}
define hostgroup {
hostgroup_name http-server
alias Web Servers
members webserver
}
define service {
use generic-service
host_name webserver ; nome do servidor
service_description PING ; descrição
is_volatile 0
check_period 24x7
max_check_attempts 5
normal_check_interval 1
retry_check_interval 1
contact_groups http-admin ; grupo de contatos à ser notificado
notification_interval 2
notification_period 24x7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60% ; nesse caso WARNING é quando tiver 20% de perca em 100 pacotes; CRITICAL 60% de perca em 500 pacotes
}
define hostextinfo {
name linux-template ;isso é um template
icon_image linux.png
icon_image_alt Linux Server
vrml_image linux.png
statusmap_image linux.gd2
register 0
}
define hostextinfo {
use linux-template ; usa o template definido
host_name mclaren
2d_coords 100,250 ; não necessário
3d_coords 100.0,50.0,75.0 ; não necessário
}
Este é um tutorial básico e como o Nágios possui muitas possibilidades de configurações resolvi escrever não apenas um, mas vários posts.
Nos próximos dias estarei postando configurações mais específicas. Aguardem…
1) commands.cfg
define command {
command_name check_oracle ;nome do comando, quando for usá-lo será usado este nome
command_line $USER1$/check_oracle –tns $HOSTADDRESS$ $ARG1$ ;caminho do plugin e o parámetros que serão aceitos
}
2) contacts.cfg
define contact {
use generic-contact ;template que já possui algumas características
contact_name cadan
alias Daniel Cadan
service_notification_period 24×7 ; esses períodos são configurados em /etc/nagios/objects/timeperiods.cfg
host_notification_period 24×7
service_notification_commands notify-service-by-email ;notificações em /etc/nagios/objects/commands.cfg
service_notification_options w,u,c,r
host_notification_commands notify-host-by-email
host_notification_options d,u,r
email danielcadan@morenarosa.com.br
}
service_notification_options
w = WARNING
u = UNKNOWN
c = CRITICAL
r = RECOVER (OK)
f = when the service starts and stops flapping
n = NONE – nenhuma notificação
host_notification_options
d = DOWN
u = UNREACHABLE
r = RECOVER (UP)
f = when the host starts and stops flapping
s = SEND notifications when host or service scheduled downtime starts and ends.
n = NONE – nenhuma notificação
3) contactgroup.cfg
define contactgroup {
contactgroup_name banco-admin
alias Administradores do Banco de Dados
members cadan,silvio ;membros do grupo definidos em contacts.cfg
}
4) hosts.cfg
define host {
use generic-host
host_name costura
alias BRMA Server 1
address costura.grupomorenarosa.intranet
check_command check-host-alive
max_check_attempts 5
contact_groups brma-admin ;grupo definido em contactgroup.cfg
}
define host {
use generic-host ; template
host_name mclaren
alias Web Server #1
address mclaren.grupomorenarosa.intranet
check_command check-host-alive
max_check_attempts 5
notification_interval 1
notification_period 24×7
notification_options d,u,r ; down, unreachable, recover(UP)
contact_groups http-admin
parents costura ;no mapa o mclaren estará ligado no costura
}
5) hostgroup.cfg
define hostgroup {
hostgroup_name http-server
alias Web Servers
members mclaren
}
6, 7, 8, 9) definição dos serviços monitorados:
define service {
use generic-service
host_name mclaren ; nome do servidor
service_description PING ; descrição
is_volatile 0
check_period 24×7
max_check_attempts 5
normal_check_interval 1
retry_check_interval 1
contact_groups http-admin ; grupo de contatos à ser notificado
notification_interval 2
notification_period 24×7
notification_options c,r
check_command check_ping!100.0,20%!500.0,60% ; nesse caso WARNING é quando tiver 20% de perca em 100 pacotes; CRITICAL 60% de perca em 500 pacotes
}
10) hostextinfo.cfg
define hostextinfo {
name linux-template ;isso é um template
icon_image linux.png
icon_image_alt Linux Server
vrml_image linux.png
statusmap_image linux.gd2
register 0
}
define hostextinfo {
use linux-template ; usa o template definido
host_name mclaren
2d_coords 100,250 ; não necessário
3d_coords 100.0,50.0,75.0 ; não necessário
}
A API do #twitter é muito maleável(graças a utilização do #json) o que permite que os dados sejam lidos de forma muito fácil independentemente da linguagem que se esteja usando.
