Monitoramento · 29 min read · Nov 22, 2025
Como Instalar e Monitorar Serviços usando a Ferramenta de Monitoramento Netdata no Debian 12

Netdata é um sistema de monitoramento de código aberto para sistemas operacionais baseados em Linux. Ele fornece desempenho e monitoramento em tempo real usando painéis bonitos e detalhados. Oferece centenas de ferramentas para monitorar servidores, CPU, uso de memória, processos do sistema, uso de disco, redes IPv4 e IPv6, firewall do sistema e aplicações como Nginx, MySQL, MongoDB, Redis, ElasticSearch, PostgreSQL, PHP-FPM, etc. Ele se integra com outras ferramentas de monitoramento, como Prometheus, Graphite, Kafka, Grafana e mais.
Este tutorial mostrará como instalar e monitorar vários serviços usando o Netdata em um servidor Debian 12. Você também o usará para rastrear as métricas de uma pilha LEMP e do motor Docker.
Pré-requisitos
- Um servidor executando Debian 12.
- Um usuário não-root com privilégios sudo.
- Um Nome de Domínio Totalmente Qualificado (FQDN) como
netdata.example.comapontando para seu servidor. - Uma conta SMTP com um serviço de e-mail como Amazon SES ou Mailgun.
- Certifique-se de que tudo esteja atualizado.
$ sudo apt update $ sudo apt upgrade - Alguns pacotes que seu sistema precisa.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -yAlguns desses pacotes podem já estar instalados em seu sistema.
Passo 1 - Configurar o Firewall
O primeiro passo é configurar o firewall. O Debian vem com o ufw (Uncomplicated Firewall) por padrão.
Verifique se o firewall está em execução.
$ sudo ufw status
Você obterá a seguinte saída.
Status: inactive
Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-lo.
$ sudo ufw allow OpenSSH
Permita também as portas HTTP e HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Ative o Firewall
$ sudo ufw enable
Comando pode interromper conexões ssh existentes. Prosseguir com a operação (y|n)? y
Firewall está ativo e habilitado na inicialização do sistema
Verifique o status do firewall novamente.
$ sudo ufw status
Você deve ver uma saída semelhante.
Status: active
Para Ação De
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Passo 2 - Instalar o NetData
O Netdata vem com um script de instalação que pode funcionar em qualquer distribuição Linux. Execute o seguinte comando para baixar o script de instalação.
$ wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh
Execute o script de instalação usando o seguinte comando.
$ sudo sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
A flag --stable-channel instala a versão estável do Netdata. A flag --disable-telemetry impede que o Netdata envie estatísticas anônimas de volta para seu servidor. Existem outras flags que você pode usar para personalizar seu instalador.
Digite Y para confirmar a adição do repositório do Netdata e instalá-lo em seu servidor. Você deve receber a seguinte saída em uma instalação bem-sucedida.
Instalação bem-sucedida do Agente Netdata.
A documentação oficial pode ser encontrada online em https://learn.netdata.cloud/docs/.
Procurando monitorar toda a sua infraestrutura com o Netdata? Confira o Netdata Cloud em https://app.netdata.cloud.
Junte-se à nossa comunidade e conecte-se conosco em:
- GitHub: https://github.com/netdata/netdata/discussions
- Discord: https://discord.gg/5ygS846fR6
- Nossos fóruns comunitários: https://community.netdata.cloud/
[/root]# rm -rf /tmp/netdata-kickstart-wH4pebXveT
OK
O instalador do Netdata habilita e inicia automaticamente o serviço. Verifique o status do serviço.
$ sudo systemctl status netdata
? netdata.service - Monitoramento de desempenho em tempo real
Loaded: loaded (/lib/systemd/system/netdata.service; enabled; preset: enabled)
Active: active (running) since Thu 2023-08-24 10:26:56 UTC; 42s ago
Main PID: 2811 (netdata)
Tasks: 82 (limit: 1107)
Memory: 108.2M
CPU: 4.271s
CGroup: /system.slice/netdata.service
??2811 /usr/sbin/netdata -D -P /var/run/netdata/netdata.pid
??2822 /usr/sbin/netdata --special-spawn-server
??3127 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
??3137 /usr/libexec/netdata/plugins.d/go.d.plugin 1
??3142 /usr/libexec/netdata/plugins.d/ebpf.plugin 1
??3145 /usr/libexec/netdata/plugins.d/nfacct.plugin 1
??3149 /usr/libexec/netdata/plugins.d/systemd-journal.plugin 1
??3155 /usr/libexec/netdata/plugins.d/debugfs.plugin 1
??3159 /usr/libexec/netdata/plugins.d/apps.plugin 1
Aug 24 10:26:58 netdata ebpf.plugin[3142]: set name of thread 3188 to EBPF SOFTIRQ
.......
Se seu serviço não estiver iniciado ou habilitado, você pode fazê-lo usando o seguinte comando.
$ sudo systemctl enable netdata --now
Execute o seguinte comando para verificar as portas abertas e o processo que as utiliza.
$ sudo ss -plnt | grep netdata
Você deve obter uma saída semelhante. O Netdata usa a porta 19999 para seu painel, como visto na saída abaixo. O Netdata usa a porta 8125 para receber estatísticas de outras aplicações.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 0.0.0.0:19999 0.0.0.0:* users:(("netdata",pid=2811,fd=8))
LISTEN 0 4096 127.0.0.1:8125 0.0.0.0:* users:(("netdata",pid=2811,fd=47))
LISTEN 0 4096 [::1]:8125 [::]:* users:(("netdata",pid=2811,fd=46))
LISTEN 0 4096 [::]:19999 [::]:* users:(("netdata",pid=2811,fd=9))
Passo 3 - Instalar o Nginx
O Debian 12 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.
Importe a chave de assinatura do Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Adicione o repositório para a versão estável do Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Atualize os repositórios do sistema.
$ sudo apt update
Instale o Nginx e as utilidades do Apache. O pacote de utilidades do Apache é necessário para a utilidade htpasswd.
$ sudo apt install nginx apache2-utils
Verifique a instalação. Em sistemas Debian, o seguinte comando só funcionará com sudo.
$ sudo nginx -v
nginx version: nginx/1.24.0
Inicie o servidor Nginx.
$ sudo systemctl start nginx
Verifique o status do serviço.
$ sudo systemctl status nginx
? nginx.service - nginx - servidor web de alto desempenho
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2023-08-24 11:36:34 UTC; 4s ago
Docs: https://nginx.org/en/docs/
Process: 3657 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 3658 (nginx)
Tasks: 2 (limit: 1107)
Memory: 1.8M
CPU: 12ms
CGroup: /system.slice/nginx.service
??3658 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??3659 "nginx: worker process"
Passo 4 - Instalar SSL
Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Debian ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.
O Debian 12 não vem com o Snapd instalado. Instale o pacote Snapd.
$ sudo apt install snapd
Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.
$ sudo snap install core && sudo snap refresh core
Instale o Certbot.
$ sudo snap install --classic certbot
Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verifique se o Certbot está funcionando corretamente.
$ certbot --version
certbot 2.6.0
Gere o certificado SSL.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netdata.example.com
O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/netdata.example.com em seu servidor.
Gere um certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Verifique o serviço do agendador de renovação do Certbot.
$ sudo systemctl list-timers
Você encontrará snap.certbot.renew.service como um dos serviços agendados para execução.
NEXT LEFT LAST PASSED UNIT ACTIVATES
.....
Thu 2023-08-24 13:40:00 UTC 1h 59min left - - snap.certbot.renew.timer snap.certbot.renew.service
Thu 2023-08-24 18:47:23 UTC 7h left Thu 2023-08-24 09:30:41 UTC 2h 9min ago apt-daily.timer apt-daily.service
Fri 2023-08-25 00:00:00 UTC 12h left - - dpkg-db-backup.timer dpkg-db-backup.service
Faça um teste do processo para verificar se a renovação do SSL está funcionando corretamente.
$ sudo certbot renew --dry-run
Se você não ver erros, está tudo pronto. Seu certificado será renovado automaticamente.
Passo 5 - Configurar o Nginx
Crie e abra o arquivo /etc/nginx/conf.d/netdata.conf para edição.
$ sudo nano /etc/nginx/conf.d/netdata.conf
Cole o seguinte código nele.
# Definir upstream do netdata
upstream netdata {
server 127.0.0.1:19999;
keepalive 64;
}
# Redirecionar todo o tráfego não criptografado para criptografado
server {
listen 80;
listen [::]:80;
server_name netdata.example.com;
return 301 https://netdata.example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name netdata.example.com;
ssl_certificate /etc/letsencrypt/live/netdata.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/netdata.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/netdata.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
resolver_timeout 2s;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
access_log /var/log/nginx/netdata.example.com.access.log main;
error_log /var/log/nginx/netdata.example.com.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_pass http://netdata;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
auth_basic "Área Privada do NetData";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
Uma vez terminado, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Abra o arquivo /etc/nginx/nginx.conf para edição.
$ sudo nano /etc/nginx/nginx.conf
Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Execute o seguinte comando para gerar um arquivo de senha para habilitar a autenticação HTTP.
$ sudo htpasswd -c /etc/nginx/.htpasswd netadmin
Nova senha:
Re-digite a nova senha:
Adicionando senha para o usuário netadmin
Verifique a sintaxe do arquivo de configuração do Nginx.
$ sudo nginx -t
nginx: o arquivo de configuração /etc/nginx/nginx.conf está ok
nginx: teste do arquivo de configuração /etc/nginx/nginx.conf foi bem-sucedido
Reinicie o serviço Nginx para habilitar a nova configuração.
$ sudo systemctl restart nginx
Passo 6 - Acessar e Usar o Painel do Netdata
Você deve ser capaz de acessar o Netdata através da URL https://netdata.example.com. Na primeira vez que você acessá-lo, será solicitado que você insira seus dados de autenticação HTTP.

Você verá o seguinte painel.

Você pode pausar, parar e iniciar a monitorização a qualquer momento usando o botão Play no painel.

Você pode acessar vários painéis clicando nas opções da barra lateral direita.
O Netdata, por padrão, pode rastrear seu fuso horário corretamente. Se não, clique no timer e selecione o fuso horário correto no pop-up para alterá-lo.

Passo 7 - Configurar o NetData
O Netdata armazena sua configuração principal no arquivo /etc/netdata/netdata.conf. Você pode visualizar essas configurações visitando a URL https://netdata.example.com/netdata.conf em seu navegador.

O arquivo é dividido em várias seções, como [global], [db], [web], [registry], e mais. A configuração padrão é suficiente para nos fazer começar. O Netdata coleta dados usando dois tipos de plugins:
- plugins internos são escritos em linguagem C e executados como threads dentro do daemon
netdata. - plugins externos são escritos em várias linguagens, incluindo Python, Go, etc., e são gerados como processos independentes de longa duração pelo daemon
netdata. Eles se comunicam com o daemon Netdata usandopipes.
Configurar o Uso de Memória do NetData
O uso de RAM do NetData é decidido com base no tempo que você deseja manter os dados do gráfico gravados antes que eles sejam perdidos.
- 3600 segundos ou 1 hora de retenção de dados do gráfico usa 15 MB de RAM.
- 7200 segundos ou 2 horas de retenção de dados do gráfico usa 30 MB de RAM.
- 14400 segundos ou 4 horas de retenção de dados do gráfico usa 60 MB de RAM.
Cada vez que você dobra o tempo de retenção dos dados do gráfico, o requisito de RAM também dobra. Esses requisitos de RAM são baseados no número de gráficos em uso pelo painel padrão. Adicionar mais gráficos e aplicações mudará essas estimativas.
Abra o arquivo de configuração do Netdata.
$ sudo nano /etc/netdata/netdata.conf
Digite a linha history = 14400 na seção [global].
[global]
run as user = netdata
# tamanho de armazenamento padrão - aumente para maior retenção de dados
page cache size = 32
dbengine multihost disk space = 256
history = 14400
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Desativar Telemetria
Por padrão, o Netdata coleta informações anônimas de uso usando uma plataforma de análise de produtos, Posthog. Sempre que o daemon Netdata é iniciado ou interrompido, o Netdata usa o script de estatísticas anônimas para coletar as seguintes informações do sistema e enviá-las para si mesmo.
- Versão do Netdata
- Nome do SO, versão, id, id_like
- Nome do kernel, versão, arquitetura
- Tecnologia de virtualização
- Tecnologia de containerização
- Informações adicionais sobre falhas do cliente Netdata.
Desativamos a Telemetria durante a instalação, mas se você não fez isso, pode fazê-lo agora. Crie um arquivo vazio chamado .opt-out-from-anonymous-statistics no diretório do Netdata.
$ sudo touch /etc/netdata/.opt-out-from-anonymous-statistics
Reinicie o Netdata para habilitar a alteração.
$ sudo systemctl restart netdata
Armazenamento a Longo Prazo
O Netdata usa a RAM e o disco do seu sistema para armazenar dados históricos por padrão. O processo padrão do Netdata coleta cerca de 2000 métricas por segundo, o que significa que a configuração padrão armazenará cerca de dois dias de métricas na RAM e no disco.
Para armazenar mais métricas, você tem as seguintes duas opções:
- Configurar o Netdata para usar mais RAM e espaço em disco
- Arquivar as métricas em um banco de dados externo
Discutiremos apenas a primeira opção neste tutorial. Para a segunda opção, você deve consultar a documentação oficial do Netdata.
Configurar o Netdata para usar mais RAM e espaço em disco
Abra o arquivo /etc/netdata/netdata.conf para edição.
$ sudo nano /etc/netdata/netdata.conf
Configure as seguintes linhas na seção [global].
[global]
...
page cache size = 32
dbengine multihost disk space = 256
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
O tamanho do cache da página determina a quantidade de RAM usada, e a variável dbengine multihost disk space determina o uso do disco. Por padrão, o Netdata usa 32 MB de RAM e 256 MB de espaço em disco. Você pode alterar um dos dois valores conforme desejar.
Você pode usar a calculadora de Métricas de Armazenamento do Netdata para decidir quanto de RAM e espaço em disco você precisa.
Reduzir a Frequência de Coleta
Você pode otimizar o desempenho do Netdata aumentando o tempo entre a coleta de métricas. Por padrão, o Netdata coleta métricas a cada segundo.
Para mudar isso, abra o arquivo de configuração do Netdata para edição.
$ sudo nano /etc/netdata/netdata.conf
Digite a seguinte linha na seção [global]. Isso aumenta a frequência para 5 segundos.
[global]
...
update every = 5
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Passo 8 - Configurar Notificações do Slack
O primeiro passo é criar um aplicativo Slack e conectá-lo a um canal específico em seu espaço de trabalho para configurar Notificações do Slack.
Visite a página da API do Slack e clique no botão Criar App para começar a criar um aplicativo.

Clique no link From Scratch para criar o app.

Selecione um nome para seu app e escolha o espaço de trabalho onde deseja que seu App apareça. Se você não quiser associar seu app ao espaço de trabalho existente, pode criar outro e voltar a este passo.

Abra a página Incoming Webhook selecionando a opção no menu Features na barra lateral esquerda e, em seguida, ative o webhook.

Clique no botão Adicionar Novo Webhook ao Espaço de Trabalho na parte inferior da página e selecione seu espaço de trabalho e o canal de destino para notificações.

Clique no botão Permitir para prosseguir. Retorne à página Incoming Webhooks e copie a URL do Webhook.

Retorne ao terminal e mude para o diretório /etc/netdata.
$ cd /etc/netdata
O Netdata fornece um script edit-config para editar e criar arquivos de configuração do Netdata. Execute o seguinte arquivo para criar e abrir o arquivo health_alarm_notify.conf usando o editor padrão do seu sistema.
$ sudo ./edit-config health_alarm_notify.conf
Role para baixo até a seguinte seção.
# Habilitar notificação do slack
SEND_SLACK="YES"
# Selecionar o webhook do slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx/xxxxxx/xxxxxxxxxxxxx"
# Canal padrão para notificação
DEFAULT_RECIPIENT_SLACK="notifications"
Certifique-se de que a variável SEND_SLACK esteja definida como sim. Cole a URL do webhook copiada na variável SLACK_WEBHOOK_URL. Digite o nome do seu canal para a variável DEFAULT_RECIPIENT_SLACK.
Se seu editor for Vim, pressione a tecla Escape para sair da edição, digite :x e pressione a tecla Enter para salvar o arquivo e sair do editor.
Se seu editor for Nano, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Reinicie o Netdata para aplicar as alterações.
$ sudo systemctl restart netdata
Passo 9 - Configurar Notificações por E-mail
O Netdata usa sendmail por padrão para enviar notificações por e-mail, mas gerenciar um servidor de e-mail não é uma tarefa fácil. O Netdata não suporta SMTP, mas você pode instalar um pacote chamado cliente msmtp. Ele permite que você envie e-mails para um servidor SMTP.
Instale o msmtp.
$ sudo apt install msmtp
Crie e abra o arquivo de configuração para o msmtp.
$ sudo nano /etc/msmtprc
Cole o seguinte código nele.
# Defina valores padrão para todas as contas seguintes.
defaults
# Use a porta de envio de e-mail 587 em vez da porta SMTP 25.
port 587
# Sempre use TLS.
tls on
# O servidor SMTP do seu ISP
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user
password
# Defina a conta padrão para isp
account default: ses
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
O Netdata fornece um script edit-config para editar e criar arquivos de configuração do Netdata. Execute o seguinte arquivo para criar e abrir o arquivo health_alarm_notify.conf usando o editor padrão do seu sistema.
$ sudo /etc/netdata/edit-config health_alarm_notify.conf
Role para baixo até a seguinte seção e insira o caminho para o msmtp.
# comandos externos
# O caminho completo para o comando sendmail.
# Se vazio, o sistema $PATH será pesquisado para encontrá-lo.
# Se não encontrado, as notificações por e-mail serão desativadas (silenciosamente).
sendmail="/usr/bin/msmtp"
Localize a seguinte seção e insira os detalhes do remetente e do destinatário e certifique-se de que o envio de e-mails esteja habilitado.
# opções globais de notificação por e-mail
# vários destinatários podem ser dados assim:
# "[email protected] [email protected] ..."
# o endereço de e-mail que envia notificações por e-mail
# o padrão é o usuário do sistema que o netdata é executado (geralmente: netdata)
# Os seguintes formatos são suportados:
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Admin do Servidor <[email protected]>"
# habilitar/desabilitar o envio de e-mails
SEND_EMAIL="YES"
# se um destinatário de função não estiver configurado, um e-mail será enviado para:
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# para receber apenas alarmes críticos, defina como "root|critical"
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Reinicie o Netdata para aplicar as alterações.
$ sudo systemctl restart netdata
Passo 10 - Testar Canais de Notificação
Vamos testar se as notificações por e-mail funcionam. Faça login como o usuário do sistema netdata criado durante a instalação.
$ sudo su -s /bin/bash netdata
Execute o script de notificação de Alarme para enviar uma notificação de teste.
$ /usr/libexec/netdata/plugins.d/alarm-notify.sh test
Você receberá a seguinte saída.
# ENVIANDO ALARME DE AVISO DE TESTE PARA A FUNÇÃO: sysadmin
2023-08-24 12:56:00: alarm-notify.sh: INFO: enviou notificação por e-mail para: netdata test.chart.test_alarm é WARNING para '[email protected]'
# OK
# ENVIANDO ALARME CRÍTICO DE TESTE PARA A FUNÇÃO: sysadmin
2023-08-24 12:56:03: alarm-notify.sh: INFO: enviou notificação por e-mail para: netdata test.chart.test_alarm é CRITICAL para '[email protected]'
# OK
# ENVIANDO ALARME CLARO DE TESTE PARA A FUNÇÃO: sysadmin
2023-08-24 12:56:06: alarm-notify.sh: INFO: enviou notificação por e-mail para: netdata test.chart.test_alarm é CLEAR para '[email protected]'
# OK
Saia do usuário.
$ exit.
Abra seu aplicativo Slack e você deve ter recebido os seguintes alertas.

Você também deve receber três e-mails sobre os avisos de teste.

Passo 11 - Configurar Monitoramento do Sistema
Agora que configuramos e testamos as notificações, vamos configurar e testar as notificações para o sistema, como uso da CPU.
Execute os seguintes comandos para criar e abrir o arquivo de configuração da CPU.
$ sudo /etc/netdata/edit-config health.d/cpu.conf
Altere os valores das opções warn e crit sob 10min_cpu_usage como mostrado abaixo.
warn: $this > (($status >= $WARNING) ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))
Altere a linha to:silent para to:sysadmin como mostrado.
template: 10min_cpu_usage
on: system.cpu
class: Utilization
type: System
component: CPU
os: linux
hosts: *
lookup: average -10m unaligned of user,system,softirq,irq,guest
units: %
every: 1m
warn: $this > (($status >= $WARNING) ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))
delay: down 15m multiplier 1.5 max 1h
info: average CPU utilization over the last 10 minutes (excluding iowait, nice and steal)
to: sysadmin
Salve o arquivo e saia do editor.
A configuração to:silent silencia as notificações e, portanto, para receber as notificações, você precisa alterar o valor do monitor para to:sysadmin para esses monitores.
A configuração acima enviará um aviso se o uso da CPU cair entre 60 e 70% e um aviso crítico quando o uso da CPU cair entre 75 e 85%.
Reinicie o serviço Netdata.
$ sudo systemctl restart netdata
Vamos testar a configuração instalando o aplicativo Stress.
$ sudo apt install stress
Execute o seguinte comando para aumentar o uso da CPU do seu servidor.
$ stress --cpu 2
Deixe o comando em execução por 5-10 minutos e você receberá mensagens de alto uso da CPU. Assim que receber essas mensagens, retorne ao terminal e saia do comando pressionando Ctrl + Z.
Após parar o serviço, você receberá uma notificação de recuperação da CPU no Slack.

Você receberá as seguintes mensagens de e-mail para o mesmo.

Passo 12 - Configurar Monitoramento do Nginx
Um dos aplicativos mais comumente monitorados usando o Netdata é o servidor e os pacotes SQL. Vamos monitorar o servidor Nginx usando o Netdata.
Para habilitar o monitoramento do servidor Nginx, precisamos usar o ngx_http_stub_status_module. Ele geralmente vem pré-instalado com o Nginx. Você pode verificar se o módulo está presente. O sudo é necessário no comando no sistema Debian.
$ sudo nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module
Se você não obtiver resposta, significa que sua instalação do Nginx não suporta o recurso. Você precisará compilar o Nginx nesse caso.
Abra o arquivo de configuração padrão do Nginx /etc/nginx/conf.d/default.conf para edição. A localização do arquivo é diferente porque instalamos o Nginx a partir de seu repositório oficial. Se você estiver instalando o Nginx a partir do repositório do SO, então a localização do arquivo será /etc/nginx/nginx.conf.
$ sudo nano /etc/nginx/conf.d/default.conf
Digite o seguinte código dentro do bloco do servidor antes da última chave de fechamento.
# Habilitar módulo stub_status
location /stub_status {
stub_status;
allow 127.0.0.1; # apenas permitir solicitações do localhost
deny all; # negar todos os outros hosts
}
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Verifique a configuração do Nginx.
$ sudo nginx -t
nginx: o arquivo de configuração /etc/nginx/nginx.conf está ok
nginx: teste do arquivo de configuração /etc/nginx/nginx.conf foi bem-sucedido
Reinicie o servidor Nginx.
$ sudo systemctl restart nginx
Reinicie o serviço Netdata.
$ sudo systemctl restart netdata
Você deve ver os detalhes da conexão do Nginx em seu painel do Netdata.

Monitorar Logs do Nginx
O Netdata também pode monitorar logs de acesso do Nginx. Para fazer isso, mude para o diretório do Netdata.
$ cd /etc/netdata
Execute o seguinte comando para gerar um arquivo de configuração para monitorar os Logs de Acesso.
$ sudo ./edit-config go.d/web_log.conf
Role até o final do arquivo e encontre a seguinte seção.
# -------------------------------------------
# log do nginx em várias distros
# debian, arch
nginx_log:
name: 'nginx'
path: '/var/log/nginx/access.log'
# gentoo
nginx_log2:
name: 'nginx_site'
path: '/var/log/nginx/localhost.access_log'
Altere o caminho para monitorar os respectivos arquivos de log. Você pode adicionar quantas seções quiser para monitorar quantos hosts e seus arquivos de log de acesso. Nosso arquivo de configuração fica assim:
# -------------------------------------------
# log do nginx em várias distros
# debian, arch
nginx_log:
name: 'nginx'
path: '/var/log/nginx/access.log'
nginx_log2:
name: 'nginx_site1'
path: '/var/log/nginx/site1.access_log'
nginx_log3:
name: 'nginx_site2'
path: '/var/log/nginx/site2.access_log'
nginx_log4:
name: 'nginx_site3'
path: '/var/log/nginx/site3.access_log'
Salve e saia do editor.
Para acessar os arquivos de log, o Netdata precisa de permissão para acessar o diretório. Por padrão, o grupo de sistema adm tem permissão para acessar os arquivos de log. Para dar acesso ao Netdata, precisamos adicionar o usuário netdata ao grupo adm.
$ sudo usermod -aG adm netdata
Reinicie o Nginx e o serviço Netdata.
$ sudo systemctl restart nginx netdata
Recarregue o painel do Netdata para visualizar os dados do seu arquivo de log.

Passo 13 - Configurar Monitoramento do MySQL/MariaDB
Instalaremos o MariaDB para nosso tutorial. Usaremos o repositório do MariaDB para esse propósito.
Importe a chave GPG do MariaDB.
$ sudo curl -o /usr/share/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
Crie e abra o arquivo do repositório do MariaDB.
$ sudo nano /etc/apt/sources.list.d/mariadb.sources
Cole o seguinte código nele.
# Lista de repositórios do MariaDB 10.11 - criada em 2023-09-05 11:18 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org é um espelho dinâmico se seu espelho preferido ficar offline. Veja https://mariadb.org/mirrorbits/ para detalhes.
# URIs: https://deb.mariadb.org/10.11/debian
URIs: https://mirrors.aliyun.com/mariadb/repo/10.11/debian
Suites: bookworm
Components: main
Signed-By: /usr/share/keyrings/mariadb-keyring.pgp
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Atualize a lista de repositórios do sistema.
$ sudo apt update
Instale o servidor MariaDB.
$ sudo apt install mariadb-server
O MariaDB está habilitado e em execução. Verifique o status do serviço.
$ sudo systemctl status mariadb
? mariadb.service - Servidor de banco de dados MariaDB 10.11.5
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/mariadb.service.d
??migrated-from-my.cnf-settings.conf
Active: active (running) since Tue 2023-09-05 11:44:17 UTC; 20s ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Process: 9396 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 9397 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9399 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR >
Process: 9440 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 9442 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 9428 (mariadbd)
Status: "Agora aceitando suas solicitações SQL..."
Tasks: 13 (limit: 1107)
Memory: 111.8M
CPU: 663ms
CGroup: /system.slice/mariadb.service
??9428 /usr/sbin/mariadbd
Inicie o script de instalação segura do MySQL. O nome do arquivo é diferente no caso do MariaDB.
$ sudo mariadb-secure-installation
....
Digite a senha atual para root (pressione Enter para nenhum): (Pressione Enter)
....
Mudar para autenticação unix_socket [Y/n] Y (Digite Y e pressione Enter)
....
Alterar a senha do root? [Y/n] Y (Digite Y e pressione Enter)
Nova senha:
Re-digite a nova senha:
Senha atualizada com sucesso!
....
Remover usuários anônimos? [Y/n] Y (Digite Y e pressione Enter)
....
Proibir login remoto do root? [Y/n] Y (Digite Y e pressione Enter)
....
Remover banco de dados de teste e acesso a ele? [Y/n] Y (Digite Y e pressione Enter)
....
Recarregar tabelas de privilégios agora? [Y/n] Y (Digite Y e pressione Enter)
....
Tudo pronto! Se você completou todos os passos acima, sua instalação do MariaDB deve agora estar segura.
Obrigado por usar o MariaDB!
Abra o arquivo /etc/mysql/mariadb.conf.d/50-server.cnf para edição.
$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Encontre a seção [mariadb] no arquivo e cole a seguinte linha como mostrado abaixo para habilitar o plugin Userstats. Essa configuração funciona apenas no MariaDB e não no servidor MySQL.
[mariadb]
userstat = 1
Faça login no shell do MySQL.
$ sudo mysql
Execute os seguintes comandos para criar um usuário SQL do Netdata e conceder privilégios para rastrear estatísticas do MySQL.
MariaDB> create user 'netdata'@'localhost';
MariaDB> GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> exit
Crie o arquivo de configuração do MySQL para o Netdata.
$ sudo /etc/netdata/edit-config go.d/mysql.conf
Um arquivo será aberto mostrando todas as opções possíveis. Se você estiver satisfeito, salve e feche o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Reinicie o servidor MariaDB.
$ sudo systemctl restart mariadb
Reinicie o serviço Netdata.
$ sudo systemctl restart netdata
O painel do MariaDB/MySQL deve começar a aparecer no painel do Netdata.

Passo 14 - Configurar Monitoramento do PHP-FPM
Você pode monitorar uma ou mais instâncias do PHP-FPM usando o Netdata. Para nosso tutorial, instalaremos o PHP 8.2 e, em seguida, habilitaremos seu monitoramento.
O Debian 12 vem com o PHP 8.2 por padrão. Mas para sempre ficar na versão mais recente do PHP, usaremos o repositório PHP do Ondrej.
Primeiro, importe a chave GPG do repositório Sury.
$ sudo curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg
Adicione o repositório PHP do Ondrej Sury.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
Atualize a lista de repositórios do sistema.
$ sudo apt update
Agora, você pode instalar qualquer versão do PHP.
$ sudo apt install php8.2-fpm php8.2-cli php8.2-mbstring
Verifique a instalação.
$ php --version
PHP 8.2.10 (cli) (built: Sep 4 2023 08:12:29) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies
Configurar o PHP
Abra o arquivo /etc/php/8.2/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf
Precisamos definir o usuário/grupo Unix dos processos PHP como nginx. Encontre as linhas user=www-data e group=www-data no arquivo e altere-as para nginx.
....
; Usuário/grupo Unix dos processos filhos. Isso só pode ser usado se o usuário do processo mestre em execução for root. Ele é definido após o processo filho ser criado.
; O usuário e o grupo podem ser especificados pelo nome ou pelos IDs numéricos.
; Nota: Se o usuário for root, o executável precisa ser iniciado com
; --allow-to-run-as-root para funcionar.
; Valores Padrão: O usuário é definido como o usuário do processo mestre em execução por padrão.
; Se o grupo não for definido, o grupo do usuário é usado.
user = nginx
group = nginx
....
Além disso, encontre as linhas listen.owner=www-data e listen.group=www-data no arquivo e altere-as para nginx.
listen.owner = nginx
listen.group = nginx
Role para baixo no arquivo para localizar a opção ;pm.status_path = /status. Descomente a linha removendo o ponto e vírgula na frente dela, como mostrado abaixo.
....
; Nota: Há uma página de monitoramento de status FPM em tempo real disponível
; Está disponível em: /usr/share/php/8.2/fpm/status.html
;
; Nota: O valor deve começar com uma barra inicial (/). O valor pode ser
; qualquer coisa, mas pode não ser uma boa ideia usar a extensão .php ou isso
; pode entrar em conflito com um arquivo PHP real.
; Valor Padrão: não definido
pm.status_path = /status
....
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Reinicie o processo PHP-fpm.
$ sudo systemctl restart php8.2-fpm
Adicionar Configurações do PHP ao Nginx
Abra o arquivo de configuração padrão do Nginx /etc/nginx/conf.d/default.conf para edição.
$ sudo nano /etc/nginx/conf.d/default.conf
Digite o seguinte código dentro do bloco do servidor antes da última chave de fechamento.
# definir monitoramento do PHP-FPM
location ~ ^/(status|ping)$ {
allow 127.0.0.1;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; # Depende da Versão do PHP e da Distro do SO
}
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Verifique a configuração do Nginx.
$ sudo nginx -t
nginx: o arquivo de configuração /etc/nginx/nginx.conf está ok
nginx: teste do arquivo de configuração /etc/nginx/nginx.conf foi bem-sucedido
Reinicie o servidor Nginx.
$ sudo systemctl restart nginx
Reinicie o serviço Netdata.
$ sudo systemctl restart netdata
Recarregue o painel do Netdata e você deve ver as estatísticas do PHP-FPM.

Passo 15 - Configurar Monitoramento do Motor e Contêiner Docker
O Netdata pode monitorar tanto o motor Docker quanto os contêineres Docker. Ele também pode monitorar aplicativos em execução dentro desses contêineres, mas não cobriremos isso neste tutorial.
Vamos instalar o Docker primeiro.
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
$ sudo usermod -aG docker ${USER}
$ su - ${USER}
O serviço Docker está habilitado e iniciado. Você pode verificar o status do serviço.
$ sudo systemctl status docker
Para monitorar o motor Docker, você precisa habilitar o recurso de métricas do Docker.
Crie e abra o arquivo /etc/docker/daemon.json para edição.
$ sudo nano /etc/docker/daemon.json
Cole o seguinte código nele.
{
"metrics-addr" : "127.0.0.1:9323",
"experimental" : true
}
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado. Esta URL é usada pelo Prometheus para rastrear estatísticas do motor Docker.
Crie um arquivo de configuração para o coletor Docker.
$ sudo /etc/netdata/edit-config go.d/docker.conf
Crie outro arquivo de configuração para o motor Docker para o Prometheus.
$ sudo /etc/netdata/edit-config go.d/docker_engine.conf
Reinicie os serviços Netdata e Docker.
$ sudo systemctl restart docker netdata
Carregue novamente o painel do Netdata e você pode ver as estatísticas do Docker.

Você verá outra entrada chamada Métricas do Prometheus em seu painel porque a opção de métricas foi feita para o painel do Prometheus.

O próximo passo é monitorar o contêiner Docker. O Netdata usa grupos de controle, referidos como cgroups, para monitorar contêineres Docker. Grupos de controle são um recurso do Linux que limita e rastreia o uso de recursos de um conjunto de processos, neste caso, contêineres. Se você tiver contêineres Docker em execução quando instalar o Netdata, eles serão rastreados automaticamente. No entanto, se você executar um contêiner após instalar o Netdata, precisará reiniciá-lo.
Execute um contêiner de teste.
$ docker container run -d nginx
Verifique o status do contêiner.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d6cde479224 nginx "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 80/tcp zealous_knuth
O nome do contêiner é zealous_knuth, como mostrado. Como o contêiner foi iniciado após a instalação do Netdata, reinicie o serviço.
$ sudo systemctl restart netdata
Carregue o Painel e você deve ser capaz de ver as estatísticas do Contêiner. Você pode ver o ID do contêiner nas estatísticas.

Conclusão
Isso conclui nosso tutorial sobre como instalar e usar o sistema de monitoramento Netdata para monitorar vários aplicativos como Nginx, MySQL, PHP-FPM e Docker em um servidor Debian 12. Se você tiver alguma dúvida, poste nos comentários abaixo.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.