Nagios Core: Monitorando Serviços Públicos – Parte 11

Até aqui monitoramos os hosts. Mas e os serviços dentro do host? Memória ram, HDs, carga do processador, quantidade de processos(programas) abertos? como faço para monitorar essas coisas?

Bom, essas coisas são os serviços(services). No artigo parte 03 falamos sobre serviços públicos e privados:

  • public service ou serviço público: Um host(servidor, impressora, central de alarme…) pode disponibilizar serviços que podem ser acessados pelo público sem precisar de credenciais, como senha. É só acessar e pronto.
  • private service ou serviço privado: Um host(servidor, impressora, central de alarme…) pode possuir serviços com acesso apenas interno, ou seja, para ter acesso externo é necessário instalação de um programa intermediário, a esse programa chamamos de plugin, add-on ou extensão. Podemos citar como exemplos de plugins o NRPE e o NCPA.

 

O termo serviço é bem genérico, ele pode significar tanto realmente um serviço de dentro de um host(HTTP, FTP, SSH, POP etc,) ou algum tipo de quantidade, consumo, medida associado com um host ou outra métrica qualquer; podemos citar como métrica a resposta de um ping, quantidade de usuários acessados, quantidade de espaço livre em disco, consumo de memória ram…).

Alguns desses serviços são públicos e podemos alcançá-los, isto é, ver se estão acessíveis ou não. Geralmente usamos o ping ou um teste de acesso via ftp, ssh para vermos métricas, quantidades e consumo. É interessante notar que não precisamos acessar com senha um desses serviços para vermos se está acessível ou não. Se o serviço pediu usuário e senha para já é o bastante para sabermos que está acessível. Não é necessário acessar(logar) já que o intuito é apenas monitorar se está ligado ou em off.

 

Monitorando Public Services

 

O host que testaremos os serviços a serem monitorados será o server02. Ele possui endereço IP 192.168.0.41 e é representado pelo arquivo server02.cfg no Nagios.

Lembrando que as configurações são feitas em nosso server01. Como monitoraremos por enquanto somente públicos não há necessidade de acessar o server02.

Serviços a Serem Monitorados no host server02

  • ping
  • ssh
  • apache servidor web

 

Bom, vamos ao passo a passo:

 

PING

 

Nos posts anteriores criamos uma pasta chamada meusHosts e dentro dela colocamos os arquivos .cfg

No server01, onde o Nagios está instalado, abra o arquivo server02.cfg

sudo vim /usr/local/nagios/etc/meusHosts/server02.cfg

Acrescente o conteúdo abaixo ao final:

define service {
	host_name		server02
	service_description	Ping
	check_command		check_ping!200.0,40%!400.0,80% 
	max_check_attempts	5
	check_interval		5
	retry_interval		3
	check_period		24x7
}

 

Para entendermos o serviço acima precisamos evidenciar algumas coisas:

  1. O host_name no serviço deve ser o mesmo do host que ele monitora
  2. O check_command monitora o endereço ip(192.168.0.41) do host. Por isso a importância do host_name do serviço ser o mesmo do host_name do host.
  3. Separados por uma exclamação(!), o  200.0,40%  faz referência ao status de alerta e  400.0,80% ao estado(status) de crítico. .  Explicando melhor, se o ping de demorar mais que 200 milissegundos e tiver mais que 40% de perda de pacotes então Na interface web do Nagios ficará um amarelo simbolizando alerta. Por outro lado, se o ping demorar mais que 400 milissegundos e tiver mais que 80% de perda ficará vermelho na interface web do Nagios simbolizando estado crítico do serviço.

 

HTTP

No server01, onde o Nagios está instalado, abra o arquivo server02.cfg

sudo vim /usr/local/nagios/etc/meusHosts/server02.cfg

Acrescente o conteúdo abaixo ao final:

define service {
	host_name		server02
	service_description	HTTP Servidor Web
	check_command		check_http
	max_check_attempts	5
	check_interval		5
	retry_interval		3
	check_period		24x7
}

Note novamente as diretivas alaranjadas acima.  Como host_name aponta para server02 o endereço IP de server02 é pego automaticamente.

Poderíamos usar um número sem segundos para alerta e estado crítico “check_http!5!10″, assim, se o site demorar mais que 5 segundos iremos receber um alerta, se passar de 10 segundos iremos receber um estado crítico.

 

SSH

No server01, onde o Nagios está instalado, abra o arquivo server02.cfg

sudo vim /usr/local/nagios/etc/meusHosts/server02.cfg

Acrescente o conteúdo abaixo ao final:

define service {
	host_name		server02
	service_description	SSH
	check_command		check_ssh
	max_check_attempts	5
	check_interval		5
	retry_interval		3
	check_period		24x7
}

Se por acaso use uma porta diferente da 22 para se conectar usando ssh, então poderá  variar o comando acima para “check_ssh!-p8080” se a porta for 8080, por exemplo.

Vendo se Não Há Erros e Reiniciando o Nagios

Após as alterações acima é bom verificarmos se não digitamos nada errado ou se inserimos corretamente os valores das diretivas.

Validando

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Reiniciando o Nagios

 sudo systemctl restart nagios.service

 

Visualizando as Mudanças Acima na Interface Gráfica

 

Acesse o navegador de internet e acesse a interface gráfica do Nagios. No meu caso o endereço para acessar o Nagios no navegador é:  http:192.168.0.40/nagios

 

Observações Extras

Quando usamos a diretiva  check_command que digitamos dentro de “define service{…}” na verdade estamos  chamando um modelo de comando pronto que está dentro de /usr/local/nagios/etc/objects/commands.cfg

Por exemplo, Quando executo “check_command   check_ping” estou chamado o texto abaixo que está dentro de commands.cfg.

cat  /usr/local/nagios/etc/objects/commands.cfg 
.......
define command {

    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
.......

Acima:

  • $USER1$/check_ping: Esse é o programa executado. Lembre-se que esses programas ficam dentro de  “/usr/local/nagios/libexec/”
  • -H $HOSTADDRESS$: é substituído automaticamente pelo endereço ip do host(nesse caso server02)
  • -w $ARG1$: o  -w vem de warn(alerta). é substituído por 200.0,40%, que é o valor que colocamos  para nosso check_ping no início desse post.
  • -c $ARG2$: aqui o -c vem de crítico e é substituído por 400.0,80% que colocamos lá em cima desse post.
  • -p 5: aqui é o número de pacotes a ser enviado, nesse cado 5 pacotes ICMP serão enviados. ICMP é o protocolo que a ferramenta ping usa.

 

Como visto na parte 04 dessa série de artigos sobre Nagios, os programas(plugins), que são usados para monitorar serviços, ficam dentro de /usr/local/nagios/libexec/. Aí dentro estão os que usamos acima: check_ping, check_http e check_ssh:

ls /usr/local/nagios/libexec/
check_apt       check_dummy         check_ircd      check_nntp      check_pop           check_ssmtp   remove_perfdata
check_breeze    check_file_age      check_jabber    check_nntps     check_procs         check_swap    urlize
check_by_ssh    check_flexlm        check_ldap      check_nt        check_real          check_tcp     utils.pm
check_clamd     check_ftp           check_ldaps     check_ntp       check_rpc           check_time    utils.sh
check_cluster   check_http          check_load      check_ntp_peer  check_sensors       check_udp
check_dhcp      check_icmp          check_log       check_ntp_time  check_simap         check_ups
check_dig       check_ide_smart     check_mailq     check_nwstat    check_smtp          check_uptime
check_disk      check_ifoperstatus  check_mrtg      check_oracle    check_spop          check_users
check_disk_smb  check_ifstatus      check_mrtgtraf  check_overcr    check_ssh           check_wave
check_dns       check_imap          check_nagios    check_ping      check_ssl_validity  negate
elder@server01:~$ 

Além dos que usamos há muitos outros.

Aproveite para testar esses executáveis. Uma ótima dica é usar eles com o comando -h para obter ajuda. Por exemplo, o comando abaixo mostrará ajuda sobre o check_ping:

/usr/local/nagios/libexec/check_ping -h

 

Conclusão

Nesse post aprendemos a criar serviços para nossos hosts. Por enquanto usamos serviços públicos. No próximo artigo iremos monitorar serviços privados e para isso instalaremos NRPE  e o NCPA.

Teremos um outro artigo falando sobre uso de Macros no Nagios. Macros possibilita fazer

Abaixo está um exemplo de “define service{….}” com mais diretivas

define service{
host_name host_name
hostgroup_name hostgroup_name
service_description service_description
display_name display_name
servicegroups servicegroup_names
is_volatile [0/1]
check_command command_name
initial_state [o,w,u,c]
max_check_attempts #
check_interval #
retry_interval #
active_checks_enabled [0/1]
passive_checks_enabled [0/1]
check_period timeperiod_name
obsess_over_service [0/1]
check_freshness [0/1]
freshness_threshold #
event_handler command_name
event_handler_enabled [0/1]
low_flap_threshold #
high_flap_threshold #
flap_detection_enabled [0/1]
flap_detection_options [o,w,c,u]
process_perf_data [0/1]
retain_status_information [0/1]
retain_nonstatus_information [0/1]
notification_interval #
first_notification_delay #
notification_period timeperiod_name
notification_options [w,u,c,r,f,s]
notifications_enabled [0/1]
contacts contacts
contact_groups contact_groups
stalking_options [o,w,u,c]
notes note_string
notes_url url
action_url url
icon_image image_file
icon_image_alt alt_string
}

 

Fontes: nagios, nagios02

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *