Monitorando Sites, Domínios e Certificados SSL no Nagios Core
InfraestruturaO 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:
-
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.
-
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.
-
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
- Instalação do plugin check_domain:
- Criação dos comandos para monitoramento:
- check_https
- check_ssl
- check_domain
- 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.
Assim como os serviços que configuramos.
Você também pode gostar de:
