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.com apontando 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 -y Alguns 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.

Autenticação HTTP do Netdata

Você verá o seguinte painel.

Painel do Netdata pela Primeira Vez

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

Botão Play/Pause do Netdata

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.

Mudança de Fuso Horário do Netdata

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.

Arquivo de Configuração do Netdata no 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:

  1. plugins internos são escritos em linguagem C e executados como threads dentro do daemon netdata.
  2. 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 usando pipes.

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:

  1. Configurar o Netdata para usar mais RAM e espaço em disco
  2. 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.

Aplicativos da API do Slack

Clique no link From Scratch para criar o app.

Popup Criar App do Slack

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.

Popup Nome do App do Slack

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

WebHooks de Entrada do Slack

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.

Adicionar App do Slack ao Espaço de Trabalho

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

URL do Webhook do Slack

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.

Notificações de Teste do Slack do Netdata

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

Notificações de Teste por E-mail do Netdata

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.

Notificações de Uso da CPU do Slack

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

Notificações de E-mail de Uso da CPU do Netdata

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.

Detalhes da Conexão do Nginx no 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.

Painel de Logs de Acesso do Netdata

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.

Painel do MySQL/MariaDB no 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.

Estatísticas do PHP-FPM no NetData

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.

Estatísticas do Contêiner Docker no NetData

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.

Estatísticas do Contêiner Docker do Prometheus no NetData

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.

Estatísticas do Contêiner Docker no NetData

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.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.