Monitoramento · 24 min read · Nov 30, 2025

Como Instalar e Monitorar serviços usando a Ferramenta de Monitoramento Netdata no Rocky Linux 8

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. Integra-se com outras ferramentas de monitoramento, como Prometheus, Graphite, Kafka, Grafana e mais.

Neste tutorial, você aprenderá a instalar e monitorar vários serviços usando a Ferramenta Netdata em um servidor Rocky Linux 8. Usaremos o Netdata para rastrear as métricas de uma pilha LEMP e do motor Docker.

Pré-requisitos

  • Um servidor executando Rocky Linux 8.
  • 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 e espaço de trabalho do Slack para receber notificações.
  • Uma conta SMTP com um serviço de e-mail como Amazon SES ou Mailgun.
  • Desativar o SELinux.

Passo 1 - Configurar o Firewall

O primeiro passo é configurar o firewall. O Rocky Linux usa o Firewall Firewalld. Verifique o status do firewall.

$ sudo firewall-cmd --state
running

O firewall funciona com diferentes zonas, e a zona pública é a padrão que usaremos. Liste todos os serviços e portas ativos no firewall.

$ sudo firewall-cmd --permanent --list-services

Deve mostrar a seguinte saída.

cockpit dhcpv6-client ssh

Permita as portas HTTP e HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Verifique novamente o status do firewall.

$ sudo firewall-cmd --permanent --list-services

Você deve ver uma saída semelhante.

cockpit dhcpv6-client http https ssh

Recarregue o firewall para habilitar as alterações.

$ sudo firewall-cmd --reload

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 e executar o script de instalação.

$ bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Você será solicitado a inserir sua senha sudo para habilitar os privilégios sudo. Digite Y para confirmar a adição do repositório Netdata e instalá-lo em seu servidor.

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 (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2022-04-11 12:09:12 UTC; 13s ago
 Main PID: 19443 (netdata)
    Tasks: 32 (limit: 11412)
   Memory: 52.0M
   CGroup: /system.slice/netdata.service
           ??19443 /usr/sbin/netdata -P /var/run/netdata/netdata.pid -D
           ??19448 /usr/sbin/netdata --special-spawn-server
           ??19937 /usr/libexec/netdata/plugins.d/apps.plugin 1
           ??19944 /usr/libexec/netdata/plugins.d/go.d.plugin 1

Apr 11 12:09:12 netdata systemd[1]: Started Monitoramento de desempenho em tempo real.
.......

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

Você deve obter uma saída semelhante. O Netdata usa a porta 19999 para seu painel, 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                128                            127.0.0.1:8125                           0.0.0.0:*               users:(("netdata",pid=22496,fd=29))
LISTEN           0                128                              0.0.0.0:19999                          0.0.0.0:*               users:(("netdata",pid=22496,fd=6))
......
LISTEN           0                128                                [::1]:8125                              [::]:*               users:(("netdata",pid=22496,fd=28))
LISTEN           0                128                                 [::]:19999                             [::]:*               users:(("netdata",pid=22496,fd=7))

Passo 3 - Instalar SSL

Para instalar um certificado SSL usando o Let’s Encrypt, precisamos instalar a ferramenta Certbot.

Primeiro, você precisa baixar e instalar o repositório EPEL.

$ sudo dnf install epel-release

Execute os seguintes comandos para instalar o Certbot.

$ sudo dnf install certbot

Gere o certificado SSL.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netdata.example.com

O comando acima irá baixar 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 -out /etc/ssl/certs/dhparam.pem 2048

Crie um diretório raiz de desafio para a renovação automática do Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crie um Cron Job para renovar o SSL. Ele será executado todos os dias para verificar o certificado e renová-lo, se necessário. Para isso, primeiro crie o arquivo /etc/cron.daily/certbot-renew e abra-o para edição.

$ sudo nano /etc/cron.daily/certbot-renew

Cole o seguinte código.

#!/bin/sh
certbot renew --cert-name netdata.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Altere as permissões do arquivo da tarefa para torná-lo executável.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Passo 4 - Instalar e Configurar o Nginx

Instalaremos a versão mais recente do Nginx. Crie e abra o arquivo /etc/yum.repos.d/nginx.repo para edição.

$ sudo nano /etc/yum.repos.d/nginx.repo

Cole as seguintes linhas nele.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Instale o Nginx e as ferramentas HTTPD.

$ sudo dnf install nginx httpd-tools

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.20.2

Habilite e inicie o serviço Nginx.

$ sudo systemctl enable nginx --now

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
New password: 
Re-type new password: 
Adding password for user netadmin

Verifique a sintaxe do arquivo de configuração do Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie o serviço Nginx para habilitar a nova configuração.

$ sudo systemctl restart nginx

Passo 5 - 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

Marque a caixa Lembrar minha escolha e clique no botão Mais tarde, permanecer no painel do agente para dispensar o pop-up.

Você pode pausar, parar e iniciar o monitoramento 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. Clique no botão UTC e selecione o fuso horário correto para alterá-lo.

Mudança de Fuso Horário do Netdata

Passo 6 - Configurar o NetData

O Netdata armazena sua configuração principal no arquivo /etc/netdata/netdata.conf. Você pode visualizar essas configurações acessando 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], [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.

Toda vez que você dobra o tempo de retenção de dados do gráfico, a necessidade de RAM também dobra. Essas necessidades de RAM são baseadas 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]
..
        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. Toda vez que o daemon Netdata é iniciado ou parado, 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.

Felizmente, você pode optar por não participar disso. 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

Nós 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

Cole as seguintes linhas na seção [global].

[global]
...
    memory mode = dbengine
    page cache size = 32
    dbengine 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 o dbengine 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 descomentar esses valores e alterar um dos dois valores conforme sua preferência.

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 7 - 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 as Notificações do Slack.

Visite a página da API do Slack e clique no botão Criar Aplicativo para começar a criar um aplicativo.

Aplicativos da API do Slack

Clique no link Do Zero para criar o aplicativo.

Popup Criar Aplicativo do Slack

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

Popup Nome do Aplicativo 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 Aplicativo Netdata ao Espaço de Trabalho

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

URL do Webhook do Slack

Volte 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"

# 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 o 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 o Nano, salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Reinicie o Netdata para aplicar as alterações.

$ sudo systemctl restart netdata

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

Abra o arquivo /etc/netdata/health_alarm_notify.conf para edição.

$ sudo nano /etc/netdata/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 ele.
# 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

# múltiplos 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 sob o qual 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.

Passo 8 - Testar Canais de Notificação

Vamos testar se as notificações do Slack 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

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 do Netdata por E-mail

Passo 9 - Configurar Monitoramento do Sistema

Agora que configuramos e testamos as notificações, vamos configurar e testar notificações para o sistema, como uso de CPU.

Execute os seguintes comandos para criar e abrir o arquivo de configuração da CPU.

$ cd /etc/netdata
$ sudo ./edit-config health.d/cpu.conf

Altere os valores das opções warn e crit sob o 10min_cpu_usage como mostrado abaixo.

warn: $this > (($status >= $WARNING)  ? (60) : (70))
crit: $this > (($status == $CRITICAL) ? (75) : (85))

Salve o arquivo e saia do editor.

A configuração acima enviará um aviso se o uso da CPU ficar entre 60 e 70% e um aviso crítico quando o uso da CPU ficar entre 75 e 85%.

Reinicie o serviço Netdata.

$ sudo systemctl restart netdata

Vamos testar a configuração instalando o aplicativo Stress.

$ sudo dnf 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 de CPU. Assim que receber essas mensagens, volte 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 de CPU do Slack

Passo 10 - Configurar Monitoramento do Nginx

Uma das aplicações mais monitoradas 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.

$ 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: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

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 no 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 python.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ões 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 11 - Configurar Monitoramento do MySQL/MariaDB

Instalaremos o MariaDB para nosso tutorial. Os passos permanecem os mesmos se você estiver usando um servidor MySQL.

Adicione o repositório para o MariaDB 10.6.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Cole o seguinte código nele.

# Lista de repositórios do MariaDB 10.6 CentOS - criada em 2022-04-12 11:12 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://download.nus.edu.sg/mirror/mariadb/yum/10.6/centos8-amd64
module_hotfixes=1
gpgkey=https://download.nus.edu.sg/mirror/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Instale o MariaDB.

$ sudo dnf install MariaDB-server

Habilite o servidor MariaDB.

$ sudo systemctl enable mariadb

Inicie o script de instalação segura do MySQL. O nome do arquivo é diferente no caso do MariaDB.

$ sudo mariadb-secure-installation
....
Enter current password for root (enter for none): (Press Enter)
....
Switch to unix_socket authentication [Y/n] Y (Type Y and Press Enter)
....
Change the root password? [Y/n] Y (Type Y and Press Enter)
New password: 
Re-enter new password: 
Password updated successfully!
....
Remove anonymous users? [Y/n] Y (Type Y and Press Enter)
....
Disallow root login remotely? [Y/n] Y (Type Y and Press Enter)
....
Remove test database and access to it? [Y/n] Y (Type Y and Press Enter)
....
Reload privilege tables now? [Y/n] Y (Type Y and Press Enter)
....
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Abra o arquivo /etc/my.cnf.d/server.cnf para edição.

$ sudo nano /etc/my.cnf.d/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

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Inicie o servidor MariaDB.

$ sudo systemctl start 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 12 - 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.0 e, em seguida, habilitaremos seu monitoramento.

Instalaremos o PHP usando o repositório Remi. Já instalamos o repositório EPEL no passo 3. Instale o repositório Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Verifique os streams de PHP disponíveis.

$ dnf module list php -y
Last metadata expiration check: 0:00:12 ago on Fri 03 Dec 2021 09:39:32 AM UTC.
Rocky Linux 8 - AppStream
Name                Stream                 Profiles                                 Summary
php                 7.2 [d]                common [d], devel, minimal               PHP scripting language
php                 7.3                    common [d], devel, minimal               PHP scripting language
php                 7.4                    common [d], devel, minimal               PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name                Stream                 Profiles                                 Summary
php                 remi-7.2               common [d], devel, minimal               PHP scripting language
php                 remi-7.3               common [d], devel, minimal               PHP scripting language
php                 remi-7.4               common [d], devel, minimal               PHP scripting language
php                 remi-8.0               common [d], devel, minimal               PHP scripting language
php                 remi-8.1               common [d], devel, minimal               PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

A versão padrão é 7.2. Habilite o repositório PHP 8.0 do Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.0

Em seguida, instale o PHP e suas extensões necessárias para o Firefly III. O pacote php contém várias dependências que o Firefly III requer, então certifique-se de incluí-las.

$ sudo dnf install php php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-intl php-bcmath php-gd php-ldap php-cli

Verifique a instalação.

$ php --version
PHP 8.0.16 (cli) (built: Feb 15 2022 21:34:32) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.16, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.16, Copyright (c), by Zend Technologies

Configurar PHP

Abra o arquivo /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.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
; Nota: O usuário é obrigatório. Se o grupo não for definido, o grupo do usuário padrão
;       será usado.
; RPM: usuário do apache escolhido para fornecer acesso aos mesmos diretórios que httpd
user = nginx
; RPM: Mantenha um grupo permitido para escrever no diretório de log.
group = nginx
...

Role para baixo no arquivo até 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: @EXPANDED_DATADIR@/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 pode
;       conflitar 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.

Habilite e inicie o serviço PHP.

$ sudo systemctl enable php-fpm --now

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-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: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

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 13 - Configurar Monitoramento do Motor Docker e Contêineres

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 abordaremos isso neste tutorial.

Vamos instalar o Docker primeiro.

$ sudo dnf install yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install docker-ce docker-ce-cli containerd.io

Habilite e inicie o serviço Docker.

$ sudo systemctl enable docker --now

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.

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 Prometheus no seu painel porque a opção de métricas foi feita para o painel Prometheus.

Estatísticas do Contêiner Docker 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
938b2cf30927   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   80/tcp    pensive_lovelace

O nome do contêiner é tender_murdock, 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.

Estatísticas Individuais 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 Rocky Linux. 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.