>_Nagios – começando a monitorar [contacts/hosts/hostgroups/services]

Estrutura do Nagios.

Antes mais do que nunca precisamos instalar os plugins para então podermos entender os arquivos de configuração .cfg

Rumbora!

Plugins

Como mencionado, os plugins são os responsáveis por fazer a interface entre o Nagios e o recurso que será monitorado, desta forma o Nagios se torna impotente se não houver plugins instalados.

Instalando os plugins

[root@swu-monitoramento conf.d]# yum install nagios-plugins -y

Pronto plugins instalados!

Um pouco do blablabla…

Arquivos de configuração dos objetos

Arquivos de configuração de objetos, que historicamente são chamados de configuração de clientes, são utilizados para definir serviços, clientes, grupo de clientes, contatos, grupo de contatos, comandos e etc. É neste arquivo que são definidos os hosts que você quer monitorar, os serviços os contatos e grupos de contatos, período de tempos e etc.

Vejamos os objetos utilizados pelo Nagio:

* Serviços
* Clientes (hosts)
* Grupos de clientes
* Comandos
* Períodos de tempo
* Escalonamento de Serviços
* Dependências de cliente
* Escalonamento de grupos de clientes

Definição de Serviços (services.cfg)

Exemplo:

define service{
        use                             local-service
        host_name                       Beatles
        service_description             PING IP 192.168.1.1
        check_command                   check_ping!100.0,20%!500.0,60%
        }

Uma definição de serviço é usada para identificar um “serviço” que roda em um cliente. Ele pode ser um serviço que roda em um cliente (POP,SMTP,HTTP e etc.) ou outro tipo de métrica associada com o cliente (resposta a um ping, número de usuários logados, espaço livre em disco e etc.).

host_name: Esta diretiva é usada para especificar o nome obreviado do cliente (host) no qual o serviço “roda” ou ao qual está associado.

service_description: Esta diretiva é usada para definir uma descrição do serviço.

is_volatile: Esta diretiva é usada para dizer se um serviço é “volátil”. Serviços são em geral não voláteis.
Valor: 0 = o serviço não é volátil
Valor: 1 = o serviço é volátil

check_period: Esta diretiva é usada para especificar o nme abreviado do período de tempo no qual as chegagens ativas desse serviço poderão ser feitas.

max_check_attempts: Esta diretiva é usada para definir o número de vezes que o Nagios tentará checar novamente serviços que retornarem estados que não forem OK. Ao ajustar esta variável para 1 o Nagios produzirá alerta sem que novas checagens sejam feitas.

normal_check_interval: Esta diretiva é usada para definir o número de “unidades de tempo” para esperar antes de agendar a próxima checagem “regular” de serviço. Checagem “regular” é aquela que ocorre quando o serviço está em um estado OK ou quando o serviço está em um estado não-OK, mas que já tenha sido novamente verificado max_attempts vezes.

retry_check_interval: Esta diretiva é usada para definir o número de “unidade de tempo” para esperar antes de re-agendar uma checagem de serviço. Serviços são reagendados no período de novas chegagens quando ele mudar para um estado não-OK. Uma vez que o serviço tenha sido novamente checado max_attempts vezes sem que haja mudança no status, isso se reverte pelo valor em check_interval.

contact_name: Esta é uma lista de nomes abreviados dos grupos de contatos que serão notificados quando houver problemas. ( ou restabelecimento ) dos serviços.

notification_options: Esta diretiva é usada para determinar quando notificações para o serviço serão enviadas. As opções válidas são combinações de uma ou mais letras que se seguem:

w = enviar notificações em estado de alerta
u = enviar notificações em estado de desconhecido
c = enviar notificações em estado de crítico
r = enviar notificações em estado de restabelecido

notification_interval: Esta diretiva é usada para definir o número de “unidade de tempo” de espera antes de re-notificar o contato de que este serviço está ainda em um estado não OK.

notification_period: Esta diretiva é usada para especificar o nome abreviado do período de tempo durante o qual notificações de enventos para este serviço poderão ser enviadas para contatos. Nenhuma notificação de serviço será enviada durante os horários que não forem cobertos pelo período de tempo.

check_command: Este é o comando que o Nagios executará para checar o status do serviço. Pode ser usar três formatos de comandos:

1 -> Comando “puro” o nome do comando somente
2 -> Comando com Argumentos “opções do comando”
3 -> Linha de comando pura: Você pode opcionamento especificar uma linha de comando a ser executada

passive_checks_enabled: Esta diretiva é usada para determinar se checagens passivas deste serviço serão habilitadas. Valores:

0 -> Desabilitar checagens passivas do serviço
1 -> Habilitar checagens passivas do serviço

parallelize_check: Esta diretiva é usada para determinar se checagens do serviço poderão ser paralelizadas ou não. Por padrão, todoas as checagens de serviços são paralelizadas

check_freshness: Esta diretiva é usada para determinar se a verificação da atualizada da informação será verificada para este serviço ou não

0 -> Desabilita checagem da atualidade
1 -> Habilita a checagem da atualidade

freshness_threshold: Esta diretiva é usada para especificar a taxa de atualidade (em segundos) para este serviço. Se você colocar aqui o valor 0, o Nagios determinará automaticamente uma taxa de atualidade a ser usada

event_handler_enabled: Esta diretiva é usada para determinar se o tratador de evento para este serviço será habilitado ou não.

0 -> Desabilita tratador de evento de serviço
1 -> Habilita tratador de evento de serviço

low_flap_threshold: Esta diretiva é usada para especificar a taxa inferior de mudança de estado usada na deteccão de flap para o serviço

high_flap_threshold: Esta diretiva é usada para especificar a taxa superior de mudança de estado usada na deteccão de flap para esse cliente

flap_detection_enabled: Esta diretiva é usada para determinar se a detecção de flap para esse serviço estará habilitada ou não

0 -> Desabilita
1 -> Habilita

process_perf_data: Esta diretiva é usada para determinar se o processamento de dados de performance para esse serviço estará habilitado ou não

0 -> Desabilita
1 -> Habilita

retain_status_information: Esta diretiva é usada para determinar se informações relacionadas a status do cliente serão retidas durante reinicializações do programa ou não. Isto será útil se você tiver habilitado retenção de estado usando a diretiva retain_state_information.

0 -> Desabilita
1 -> Habilita

retain_nonstatus_information: Esta diretiva é usada para determinar se informações do serviço, que não forem de status, devem ou não ser retidas durante reinicializações do programa. Isto é importante se você tiver habililtado retenção de estado usando a diretiva retain_state_information

0 -> Desabilita
1 -> Habilita

notifications_enabled: Esta diretiva é usada para determinar se as notificações para este serviço estarão habilitadas ou não

0 -> Desabilta
1 -> Habilta

stalking_options: Esta diretiva determina para quais estados de serviço “stalking” estará habilitado. As opções válidas são uma combinação de uma ou mais letras que se seguem:

0 -> stalk em estados OK
w -> stalk em estado de alerta WARNIG
u -> stalk em estado desconhecido (UNKNOWN)
c -> stalk em estado crítico

Exemplo de um template para servidores GNU/Linux.

# TEMPLATE TUTORIAISGNULINUX.COM - SERVICE
define service{
        name                            gnulinux_temp1-service
        is_volatile                     0
        normal_check_interval           1                       ;checar o serviço a cada minuto mesmo em OK ou em não-OK
        max_check_attempts              2                       ;checar 2 vezes serviços não-OK
        notification_interval           15                      ;enviar notificação a cada 15 minutos
        notification_period             24x7
        obsess_over_service             1
        check_freshness                 1
        active_checks_enabled           1
        passive_checks_enabled          1
        parallelize_check               1
        freshness_threshold             0
        event_handler_enabled           1
        flap_detection_enabled          1
        failure_prediction_enabled      1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        contact_groups                  admins
        check_period                    24x7
        stalking_options                o,w,u,c
        register                        0
        }

Host.cfg

A definição de cliente (host) é usada para se definir qualquer ost ou dispositivo em sua rede.

Exemplo do arquivo host.cfg

# TEMPLATE TUTORIAISGNULINUX.COM - HOST
define host{
        name                            gnulinux_temp1-host
        alias                           Servidores GNU/Linux
        max_check_attempts              1
        retry_check_interval            1
        notification_interval           5
        notification_options            d,u,r
        event_handler_enabled           1
        flap_detection_enabled          1
        failure_prediction_enabled      1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        contact_groups                  admins
        notification_period             24x7
        check_period                    24x7
        check_command                   check-host-alive
        register                        0
        }

Brincando de monitorar…

Para podermos monitorar o nosso primeiro servidor, será preciso configurar alguns arquivos, são eles:

hostgroup.cfg
beatles.cfg
frame.cfg
nagios.cfg

Vamos criar o arquivo de hostgroup.cfg. Este arquivo será responsável por armazenar os grupos de servidores classifcados por S.O.

[root@swu-monitoramento /]# cd /etc/nagios/objects/

[root@swu-monitoramento objects]# vim hostgroup.cfg
# DEFININDO GRUPO DESERVIDORES GNU/LINUX
define hostgroup{
        hostgroup_name  linux-servers
        alias           Servidores GNU/Linux
        members         Beatles
        }

Com o arquivo hostgroup.cfg criado, vamos agora criar o arquivo do host Beatles(GNU/Linux).

[root@swu-monitoramento objects]# cd /etc/nagios/objects/
[root@swu-monitoramento objects]# vim beatles.cfg
# BEATLES - CLUSTER
define host{
        use             gnulinux_temp1-host             ; TEMPLATE QUE ESTA  EM USO
        host_name       Beatles                         ; HOSTNAME DO SERVER QUE SERA MONITORADO
        alias           Cluster Firewall                ; ALIAS
        address         192.168.1.1                     ; IP
        parents         SW-Telefonica,Speedy-corp       ; PARENTESCO
        }
# SERVIÇOS MONITORADOS
# PING DO IP 1.1
define service{
        use                             gnulinux_temp1-service
        host_name                       Beatles
        service_description             PING IP 192.168.1.1
        check_command                   check_ping!100.0,20%!500.0,60% -p 5
        }
#

Acima definimos um host chamado Beatles com 1 interface de rede sendo monitoradas.

use: Template que será usado
host_name: Nome do host
alias: Uma breve descrição
address: Endereço IP.

Agora vamos executar o comando abaixo

[root@swu-monitoramento objects]# chown nagios.nagios *

Verificando se existe algum tipo de erro antes de iniciar o serviço.

[root@swu-monitoramento objects]# nagios -v /etc/nagios/nagios.cfg
Total Warnings: 0
Total Errors:   0

Legal, sem erros!

Definindo o parentesco entre o Switch’s e Servidores

[root@swu-monitoramento objects]# vim beatles.cfg
# BEATLES - CLUSTER
define host{
        use             linux-server            ; TEMPLATE QUE ESTA  EM USO
        host_name       Beatles                 ; HOSTNAME DO SERVER QUE SERA MONITORADO
        alias           Cluster Firewall        ; ALIAS
        address         192.168.1.1             ; IP
        parents         SW-Telefonica           ; PARENTESCO
        }

Agora vamos criar o host do nosso Switch

[root@swu-monitoramento objects]# vim frame.cfg
# Define a host for the local machine
define host{
        use                     linux-server            ; Name of host template to use
                                                        ; in (or inherited by) the linux-server host template definition.
        host_name               SW-Telefonica
        alias                   Switch 3Com
        address                 65.54.323.12
        }

# Define a service to "ping" the local machine

define service{
        use                             local-service         ; Name of service template to use
        host_name                       SW-Telefonica
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

Pronto!
Agora precisamos adicionar as linhas abaixo no arquivo nagios.cfg

[root@swu-monitoramento etc]# cd /etc/nagios/

[root@swu-monitoramento nagios]# vim nagios
# SERVIDORES GNU/LINUX
cfg_file=/etc/nagios/objects/localhost.cfg
cfg_file=/etc/nagios/objects/beatles.cfg
# SW's
cfg_file=/etc/nagios/objects/telefonica.cfg
# GRUPOS
cfg_file=/etc/nagios/objects/hostgroup.cfg

Agora é só reler o arquivo de configuração e acessar a interface Web para visualizar os serviços que estão sendo monitorados.

[root@swu-monitoramento objects]# /etc/init.d/nagios reload
nagios (pid 3262) está em execução...
Recarregando o nagios:                                     [  OK  ]

Definindo usuários

Os usuários do Nagios servem para vários fins, eles podem desde adicionar comentários nos serviços monitorados pelo Nagios como também podem executar ações e receber notificações.

A configuração de um usuário no Nagios é compreedida da seguinte forma:

define contact{
       contact_name         nagiosadmin
       use                  generic-contact
       alias                Nagios admin
       email                nagios@localhost
       }

Explicando as opções:

contact_name: Nome do usuário
use: Template que será usado
alias: Nome completo do usuário, ou descrição
email: e-mail do contato

Agrupando usuários

A tarefa de agrupar usuários serve para facilitar a administração do sistema de um modo geral, desta forma a tarefa de envio de notificações será facilitada.

A configuração dos grupos de usuários é feita no arquivo contacts.cfg como o exemplo abaixo:

# ADICIONANDO CONTATOS
define contact{
        contact_name                    ecouto
        use                             generic-contact
        alias                           sysadmin
        email                           evandro@tutoriaisgnulinux.com
        }

# AGRUPANDO USUARIOS
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin,ecouto
        }

Explicando as opções da diretriz contatgroup

* contact_name: Nome do contato que será acionado
* alias: Define o nome completo do contato
* service_notification_period: Período de tempo durante o qual o contato poderá ser notificado
* host_notification_period: Período de tempo durante o contato poderá ser notiticado sobre problemas ou sobre reestabalecimento
* service_notification_options: Diretiva usada para definir os estados do serviço para o qual notificações podem ser enviadas para esse contato. As oções válidas são combinações de uma ou mais letras que se seguem:
w -> Notifica em estado de Warning
u -> Notifica em estado desconhecido Unknown
c -> Notifica em estado Crítico
r -> Notifica em estado OK

host_notification_options: Diretiva usada para definir os estados dos clientes para os quais notificações poderão ser enviadas para os contatos. As opções válidas são combinações de uma ou mais letras que se seguem:
d -> Down
u -> Unreachable
r -> Up

service_notification_commands: Diretiva usada para definir a lista de nomes abreviados dos comandos usados para notificar o contato sobre um problema ou reestabelecimento do serviço. Devem ser separados por vírgula.

host-notification_commands: Diretiva usada para definir uma lista de nomes abreviados dos comandos usados para notificar o contato sobre um problema ou um restabelecimento de um cliente. Devem ser separados por vírgula.

email: Diretiva usada para definir um endereço de e-mail para o contato.

Exemplo:

# CONTATOS
define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user

        email                           evandro@tutoriaisgnulinux.com       ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }

# ADICIONANDO CONTATOS
define contact{
        contact_name                    ecouto
        use                             generic-contact
        alias                           sysadmin
        email                           evandro@tutoriaisgnulinux.com
        }

# CONTATOS GROUPS
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin, ecouto
        }

Timeperiods.cfg

Período de tempo. Neste arquivo temos os horários durante vários dias nos quais será considerado “válido” fazer notificações e checagens de serviços. Não irei entrar em detalhe neste arquivo, pois sua configuração não é tão complicada.

define timeperiod{
        timeperiod_name 24x7
        alias           24 Hours A Day, 7 Days A Week
        sunday          00:00-24:00
        monday          00:00-24:00
        tuesday         00:00-24:00
        wednesday       00:00-24:00
        thursday        00:00-24:00
        friday          00:00-24:00
        saturday        00:00-24:00
        }

* timeperiod_name: Diretiva onde se insere o nome abreviado usado para identificar o período de tempo.
* alias: Diretiva usada para definir o nome completo ou descrição que identificará o período de tempo.

Fonte: Ambiente de REde Monitorado com Nagios e Cacti. – Felipe Costa.

Instalação de ícones customizados

Neste passo, vamos realizar o Download do conjuntos de ícones adicionais. Este download pode ser obtido no site abaixo:

http://www.nagiosexchange.org/

Após a realização do download, devemos seguir os passos abaixo:

1 – Extrair o arquivo dentro do diretório /usr/share/nagios/images/logos

2 – Instalar os pacotes abaixo

# yum install libgdata-devel.x86_64 gd-progs.x86_64

Para podermos utilizar uma imagem .png da internet, será preciso converter o formato para .gd2

exemplo:

pngtogd2 centos.png centos.gd2 0 1

Pronto convertida para o formato .gd2.

Agora vamos voltar na configuração do host.cfg e adicionar as linhas abaixo:

# vim beatles.cfg

define host{
        use             gnulinux_temp1-host             ; TEMPLATE QUE ESTA  EM USO
        host_name       BEATLES-CLUSTER_1.1             ; HOSTNAME DO SERVER QUE SERA MONITORADO
        alias           Cluster Firewall                ; ALIAS
        address         192.168.1.1                     ; IP
        parents         SW-FRAME,SPEEDY                 ; PARENTESCO
        statusmap_image redhat.gd2                      ; IMAGEM DO MAPA
        icon_image      redhat.png                      ;
        icon_image_alt  "Cluster Firewall"              ; DESCRIÇÃO DO HOST
        }

Explicando as opções:

icon_image: Um arquivo de imagem que será exibido quando informações específicas do host forem acessadas.

icon_image_alt: Um texto curto que será exibido na interface web

statusmap_image: Um arquivo de imagem em formato.gd2. Esse formato pouco usual é necessário para renderizar o status map de forma rápida.

vrml_image: Um arquivo de imagem que será exibido no 3-D status-Map.

notes_url: Um Url que será exibida na interface web, geralmente aponta para um local onde possam haver mais informações sobre o dispositivo monitorado.

Fonte: Ambiente de rede monitorado com Nagios e Cacti – Felipe Costa.

>_Nagios – começando a monitorar [contacts/hosts/hostgroups/services]
Tagged on:
%d blogueiros gostam disto: