InfraestruturaLinuxmonitoramentonagios

Monitorando Sites, Domínios e Certificados SSL no Nagios Core

O Nagios Core é uma ferramenta poderosa de monitoramento, capaz de supervisionar não apenas recursos internos, como serviços e hosts locais, mas também elementos externos da infraestrutura, como domínios e certificados SSL de sites. Neste artigo, vamos configurar o Nagios para:

  • Detectar a expiração de domínios e certificados SSL;
  • Verificar se um site está corretamente acessível via HTTPS;
  • Emitir alertas com antecedência programada.

Caso de uso: Monitoramento de domínio, certificado SSL e HTTPS com Nagios

Neste exemplo, vamos aprender a monitorar um site e seu domínio com Nagios. Serão verificados os seguintes aspectos:

  1. Expiração do domínio:
    • Verificar o tempo restante para expiração do domínio.
    • Exibir status WARNING quando restarem 45 dias ou menos.
    • Exibir status CRITICAL quando restarem 30 dias ou menos.
  2. Expiração do certificado SSL:
    • Monitorar o tempo restante para expiração do certificado digital SSL.
    • Exibir status WARNING a partir de 45 dias para o vencimento.
    • Exibir status CRITICAL a partir de 30 dias.
  3. Validação do HTTPS:
    • Verificar se o site está acessível via HTTPS corretamente.
    • Exibir status CRITICAL caso o acesso seguro falhe ou haja erro no certificado.

Usaremos o site www.google.com como exemplo para a configuração dos testes.

 

Etapas do procedimento

  1. Instalação do plugin check_domain:
  2. Criação dos comandos para monitoramento:
    • check_https
    • check_ssl
    • check_domain
  3. Inclusão do site/domínio como objeto a ser monitorado no Nagios.

 Iniciando o tutorial

Instalação do plugin check_domain.sh

O plugin check_domain.sh é necessário para monitorar quanto tempo falta para um domínio expirar. Antes de instalar o plugin, é necessário instalar no Linux o pacote whois

sudo apt update
sudo apt install whoisCode language: Bash (bash)

Acesse o diretório de plugins do Nagios

cd /usr/local/nagios/libexecCode language: Bash (bash)

Faça o download do plugin

 sudo wget https://github.com/glensc/monitoring-plugin-check_domain/blob/master/check_domain.shCode language: Bash (bash)

Torne o script executável

chmod +x check_domain.shCode language: Bash (bash)

Teste o plugin com o seguinte comando:

sudo /usr/local/nagios/libexec/check_domain.sh -d google.comTeste o plugin com o seguinte comando:Code language: Bash (bash)

Se funcionar, irá retornar algo parecido com:

OK - Domain google.com will expire in 1195 days (2028-09-14). | domain_days_until_expiry=1195;30;7Code language: Bash (bash)


Criando os comandos necessários no Nagios

Abra o arquivo /usr/local/nagios/etc/objects/commands.cfg e adicione as seguintes linhas no final do arquivo:

# Comando que verifica se o site responde via HTTPS
define command {
        command_name    check_https
        command_line    $USER1$/check_http -H $HOSTADDRESS$ -S
}

# CHECK SSL EXPIRY
define command {
    command_name    check_ssl_expiry
    command_line    $USER1$/check_http -H $HOSTADDRESS$ --sni -S -C 30,15s
}

# CHECK DOMAIN EXPIRY
define command {
        command_name    check_domain
        command_line    /usr/local/nagios/libexec/check_domain.sh -w 30 -c 10 -d $ARG1$
}Code language: Bash (bash)

Salve as alterações e feche o arquivo.

Criando o arquivo de configuração do site que vamos monitorar

Acesse o diretório /usr/local/nagios/etc/objects/

cd /usr/local/nagios/etc/objects/Code language: Bash (bash)

Crie o arquivo www.google.com.cfg. Atenção para a extensão .cfg.

sudo touch www.google.com.cfgCode language: Bash (bash)

Abra o arquivo, adicione o conteúdo abaixo e salve as alterações. 

define host {
        host_name               www.google.com
        alias                   www.google.com
        check_command           check-host-alive
        check_period            24x7
        check_interval          5
        retry_interval          3
        max_check_attempts      3
        notification_interval   60
        notification_period     24x7
        contacts                nagiosadmin
}

#####################################
# CHECK HTTPS
#####################################
define service {
        use                     generic-service
        host_name               www.google.com
        service_description     Check HTTPS
        check_command           check_https
}

#####################################
# CHECK CERT SSL EXPIRY
#####################################
define service {
        use                     generic-service
        host_name               www.google.com
        service_description     SSL Expiry
        check_command           check_ssl_expiry
}


#####################################
# CHECK DNS DOMAIN EXPIRY
#####################################
define service {
        use                     generic-service
        host_name               www.google.com
        service_description     Domain Expiry
        notification_interval   1440
        check_command           check_domain!google.com
}Code language: Bash (bash)


Informando ao Nagios a criação do novo host

Abra o arquivo /usr/local/nagios/etc/nagios.cfg e adicione ao final do arquivo a seguinte linha:

cfg_file=/usr/local/nagios/etc/objects/www.google.com.cfgCode language: Bash (bash)

Salve as alterações e feche o arquivo.

Validando as configurações adicionadas e reiniciando o serviço

Verifique se as configurações adicionadas estão corretas:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfgCode language: Bash (bash)

Se estiver tudo ok, a saída será parecido como:

Nagios Core 4.5.9
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2024-12-19
License: GPL

Website: https://www.nagios.org
Reading configuration data...
   Read main config file okay...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
        Checked 15 services.
        Checked 5 hosts.
        Checked 1 host groups.
        Checked 0 service groups.
        Checked 1 contacts.
        Checked 1 contact groups.
        Checked 27 commands.
        Checked 5 time periods.
        Checked 0 host escalations.
        Checked 0 service escalations.
Checking for circular paths...
        Checked 5 hosts
        Checked 0 service dependencies
        Checked 0 host dependencies
        Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight checkCode language: Bash (bash)

Se tudo estiver certo (Total Errors: 0) reinicie o nagios

sudo service nagios restartCode language: Bash (bash)

Confira se o serviço está sendo executado corretamente através do comando:

sudo service nagios statusCode language: Bash (bash)

Se o serviço estiver executando de forma correta, a saída do comando será algo parecido com:

● nagios.service - Nagios Core 4.5.9
     Loaded: loaded (/lib/systemd/system/nagios.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-06-06 20:06:34 -03; 6s ago
       Docs: https://www.nagios.org/documentation
    Process: 1197 ExecStartPre=/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg (code=exited, status=0/SUCCESS)
    Process: 1198 ExecStart=/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg (code=exited, status=0/SUCCESS)
   Main PID: 1199 (nagios)
      Tasks: 6 (limit: 4653)
     Memory: 4.3M
        CPU: 20ms
     CGroup: /system.slice/nagios.service
             ├─1199 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
             ├─1200 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
             ├─1201 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
             ├─1202 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
             ├─1203 /usr/local/nagios/bin/nagios --worker /usr/local/nagios/var/rw/nagios.qh
             └─1205 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

jun 06 20:06:34 nagios nagios[1199]: qh: Socket '/usr/local/nagios/var/rw/nagios.qh' successfully initialized
jun 06 20:06:34 nagios nagios[1199]: qh: core query handler registered
jun 06 20:06:34 nagios nagios[1199]: qh: echo service query handler registered
jun 06 20:06:34 nagios nagios[1199]: qh: help for the query handler registered
jun 06 20:06:34 nagios nagios[1199]: wproc: Successfully registered manager as @wproc with query handler
jun 06 20:06:34 nagios nagios[1199]: wproc: Registry request: name=Core Worker 1200;pid=1200
jun 06 20:06:34 nagios nagios[1199]: wproc: Registry request: name=Core Worker 1202;pid=1202
jun 06 20:06:34 nagios nagios[1199]: wproc: Registry request: name=Core Worker 1201;pid=1201
jun 06 20:06:34 nagios nagios[1199]: wproc: Registry request: name=Core Worker 1203;pid=1203
jun 06 20:06:34 nagios nagios[1199]: Successfully launched command file worker with pid 1205Code language: Bash (bash)

Em seguida o host estará disponível na tela de hosts do Nagios.

Assim como os serviços que configuramos.

Deixe um comentário

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