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

Infraestrutura
Mauro Jr 3 Min de leitura

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

Debian, Ubuntu e derivados (como Linux Mint, Pop!_os)

 
sudo apt update
sudo apt install whois

Acesse o diretório de plugins do Nagios

cd /usr/local/nagios/libexec

Faça o download do plugin

 sudo wget https://github.com/glensc/monitoring-plugin-check_domain/blob/master/check_domain.sh
 
 

Torne o script executável

chmod +x check_domain.sh
Teste o plugin com o seguinte comando:
sudo /usr/local/nagios/libexec/check_domain.sh -d google.com

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;7
 

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$
}

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/

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

sudo touch www.google.com.cfg
 

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
}
 

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.cfg

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.cfg
 

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 check
 

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

sudo service nagios restart

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

sudo service nagios status

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 1205
 

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

 

host google pending

site google up

Assim como os serviços que configuramos.

host google services

site google services ok


Você também pode gostar de:

...
Nagios TV - Interface de monitoramento para o Nagios
Aprenda como instalar e configurar o NagiosTV, uma interface moderna para o Nagios 4, que melhora a visualização do monitoramento de servidores e redes. Leia mais