Criando o
contacts.cfg:
# vi contacts.cfg
#'dstec' contact definition
define contact{
contact_name dstec ;(nome do membro)
alias DSTEC ;(Informações úteis de descrição)
service_notification_period 24x7;(período de alerta, será definido no arquivo "timeperiods")
host_notification_period 24x7;(período de alerta, será definido no arquivo "timeperiods"
service_notification_options w,c,r;(notificar serviços se w=warning, c=critical, r=recovery)
host_notification_options d,u,r ;(notificar hosts se d=down, u=ureachebla, r=recovery)
service_notification_commands notify-by-email ;(tipo de notificação, neste caso via e-mail)
host_notification_commands host-notify-by-email;( tipo de notificação, neste caso via e-mail)
email dstec@dominio.gov.br ;(aqui se define o endereço de envio da notificação)
}
:wq
Criando o
contactgroups.cfg:
# vi contactgroups.cfg
# Definindo grupo
define contactgroup {
contactgroup_name dstec-admins ;(nome do grupo)
alias Administradores ;(alias de informação)
members dstec ;(membros definidos no contacts.cfg)
}
Criando o
dependencies.cfg:
# touch dependencies.cfg
Criando o
hosts.cfg:
# vi hosts.cfg
Aqui é um pouco mais difícil. Neste arquivo, primeiro você criará uma definição (template) de host, logo em seguida você criará uma sub-definição (sub-template) de host e a partir de então você aplicará essas definições aos hosts existentes na rede e que serão monitorados.
Exemplo:
# vi hosts.cfg
Criando a definição primária de hosts.
Nota: Os arquivos abaixo seguem com os comentários em inglês devido a falta de documentação à respeito, desculpem.
#Definindo uma template
define host{
name generic-host ; (The name of this host template)
notifications_enabled 1 ; (Host notifications are enabled)
event_handler_enabled 1 ; (Host event handler is enabled)
flap_detection_enabled 1 ; (Flap detection is enabled)
process_perf_data 1 ; (Process performance data)
retain_status_information 1 ; (Retain status informationacross program restarts)
retain_nonstatus_information 1 ; (Retain non-status information) across program
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT #A REAL HOST, JUST A TEMPLATE!
contact_groups dstec-admins
}
;Criando uma sub-definição de hosts:
define host{
use generic-host ;(Definição primária que será utilizada)
name generic-switch-borda ;(define qual nome esta sub-definição terá)
check_command check-host-alive ;(tipo de verificação que será utilizada)
max_check_attempts 10 ;(quantidade de checagens até o envio da notificação)
notification_interval 60 ;(intervalo de cada notificação, neste caso a cada 60 minutos)
notification_period 24x7 ;(período de alerta, será definido no arquivo “timeperiods”)
notification_options d,u,r ;(notificar somente em caso de d=down u=unreachable r= recovery)
register 0
}
;Agora sim vamos editar as linhas referentes a um verdadeiro host existente em sua rede (vou utilizar como exemplo um switch, já que criamos uma sub-definição para um switch.)
define host{
use generic-switch-borda ;(define qual sub-definição será utilizada)
host_name switch-sede-terreo ;(nome dado para este host, Obs: não usar espaços)
alias Sw4 sede terreo sala 01 R-06 ;(informações úteis para caracterização do host)
#parents intermediario05 ;(host pai, ou seja, onde este host se conecta)
address 10.10.40.93 ;(endereço ip deste host, altere este endereço para um ip de sua rede)
}
Obs: Neste exemplo teríamos que definir previamente o host chamado "intermediario05", senão ocorreria um erro na inicialização do serviço.
Agora é só preencher os hosts que serão monitorados, aí vai uma dica: para os demais hosts podemos criar sub-definições diferentes como por exemplo /"servidores", "rede interna", "access point", "roteadores" e outros. Assim não só os arquivos como a monitoração da rede ficará mais organizada.
:wq
Criando o
hostgroups.cfg:
# vi hostgroups.cfg
Neste arquivo podemos criar vários grupos, isto serve para facilitar na distinção de hosts (quando se tem uma rede muito complexa).
define hostgroup{
hostgroup_name switchs ;(nome do grupo)
alias Switchs de Borda ;(informação útil sobre o grupo)
members switch-sede-terreo ;(nome dos membros deste grupo, não devemos por espaço e os mesmos devem ser separados por vírgula da seguinte forma: switch-sede- terreo, switch-sede-terreo-01)
}
:wq
Criando o
hostextinfo.cfg:
# vi hostextinfo.cfg
define hostextinfo{
host_name switch-sede-terreo ;(É aqui onde a criação de grupos é útil pois podemos tanto adicionar hosts isolados ou grupos de hosts o que poupa tempo)
hostgroup_name switchs ;(nome do grupo)
name switchs-borda ;(nome dado ao hostextinfo criado)
icon_image forecp90.png ;(imagem que aparecerá como ícone)
icon_image_alt forecp90.png ;(imagem que aparecerá como ícone em mudança de estado)
statusmap_image forecp90.png ;(imagem que aparecerá no status map)
2d_coords 100,100 ;(coordenadas para a exibição no status map)
3d_coords 100.0,50.0,75.0 ;(coordenadas para a exibição no 3D map)
}
Obs: Nas coordenadas não é necessário alterar os valores para cada hostextinfo criado. Também é provável que as figuras citadas "forecp90.png" não existam em seu servidor.
As imagens ficam em "/usr/local/nagios/share/images", você pode conseguir mais imagens em
http://www.nagiosexchange.org.
Criando o
services.cfg:
# vi services.cfg
Aqui iremos proceder da mesma forma do host.cfg, iremos criar os arquivos de forma hierárquica.
;Criando uma definição de serviços:
define service{
name generic-service
active_checks_enabled 1
passive_checks_enabled 1
parallelize_check 1
obsess_over_service 1
check_freshness 0
notifications_enabled 1
event_handler_enabled 1
flap_detection_enabled 1
process_perf_data 1
retain_status_information 1
retain_nonstatus_information 1
passive_checks_enabled 1
register 0
}
;Criando a sub-definição de serviços:
define service{
use generic-service
name is-alive ;(nome da sub-definição do serviço)
service_description Tempo de Resposta ;(Descrição das características do serviço)
check_period 24x7 ;(Período de checagem, será definido no arquivo "timeperiods")
max_check_attempts 3
normal_check_interval 3
retry_check_interval 1
contact_groups dstec-admins ;(grupo definido no contactsgroup para envios de notificações)
notification_interval 30
notification_period 24x7 ;(Período de envio de notificações, será definido no arquivo "timeperiods")
notification_options c,r ;(Opções de notificação c=critical, r=recovery)
check_command check_ping!30,10%!100,40% ;(tempo para checagem de ping)
register 0
notifications_enabled 1
}
;Definindo formas de checagem de serviços para os hosts:
define service{
use is-alive ;(sub-definição a ser utilizada)
hostgroup_name (Host ou grupo de hosts que serão checados por este serviço)
host_name switch-sede-terreo
service_description Tempo de resposta
}
;Também poderá ser acrescentado a linha abaixo (Exemplo):
check_command check_oracle_listener!bdjur06 ;(Comando para ser utilizado em conjunto com o plugin, lembre-se que no nosso caso já definimos isso como sendo ping. )
:wq
Criando o
servicesgroups.cfg:
# vi servicesgroups.cfg
define servicegroup{
servicegroup_name monit-switchs ;(nome do grupo criado, não use espaços)
alias Serviços de Monitoramento de Swtich ;(Alias de informação)
members switch-sede-terreo ;(Nome do membro que foi definido no arquivo hosts.cfg)
}
:wq
Criando o
timeperiods.cfg:
Aqui iremos definir os períodos e monitoração e envios de alertas e notificações.
Nota: Observe que em vários arquivos definimos o valor "24x7", isto ocorreu apenas para ficar mais intuitivo (24 horas e 7 dias por semana). Assim você poderia colocar qualquer outro nome, desde que crie o mesmo no arquivo "timeperiods".
# vi timeperiods.cfg
define timeperiod{
timeperiod_name 24x7 ;(nome do timeperiod)
alias Horário de funcionamento da minha rede ;(alias de informação)
monday 00:00-24:00 ;(monitora na segunda-feira das 0 às 24)
tuesday 00:00-24:00 ;(monitora na terça-feira das 0 às 24)
wednesday 00:00-24:00 ;(monitora na quarta-feira das 0 às 24)
thursday 00:00-24:00 ;(monitora na quinta-feira das 0 às 24)
friday 00:00-24:00 ;(monitora na sexta-feira das 0 às 24 )
}
Caso você possua uma parte da rede a qual não quer que seja monitorada num determinado horário, dia ou uma combinação dos dois, este é o arquivo onde se configura isto, basta adicionar outro período de monitoramento.