Monitoreo · 25 min read · Nov 30, 2025

Cómo instalar y monitorear servicios usando la herramienta de monitoreo Netdata en Rocky Linux 8

Netdata es un sistema de monitoreo de código abierto para sistemas operativos basados en Linux. Proporciona rendimiento y monitoreo en tiempo real utilizando paneles hermosos y detallados. Ofrece cientos de herramientas para monitorear servidores, CPU, uso de memoria, procesos del sistema, uso de disco, redes IPv4 e IPv6, firewall del sistema y aplicaciones como Nginx, MySQL, MongoDB, Redis, ElasticSearch, PostgreSQL, PHP-FPM, etc. Se integra con otras herramientas de monitoreo como Prometheus, Graphite, Kafka, Grafana y más.

En este tutorial, aprenderás a instalar y monitorear varios servicios usando la herramienta Netdata en un servidor Rocky Linux 8. Usaremos Netdata para rastrear las métricas de un stack LEMP y el motor Docker.

Prerrequisitos

  • Un servidor que ejecute Rocky Linux 8.
  • Un usuario no root con privilegios de sudo.
  • Un Nombre de Dominio Totalmente Calificado (FQDN) como netdata.example.com apuntando a tu servidor.
  • Una cuenta y espacio de trabajo de Slack para recibir notificaciones.
  • Una cuenta SMTP con un servicio de correo electrónico como Amazon SES o Mailgun.
  • Desactivar SELinux.

Paso 1 - Configurar el Firewall

El primer paso es configurar el firewall. Rocky Linux utiliza Firewalld Firewall. Verifica el estado del firewall.

$ sudo firewall-cmd --state
running

El firewall trabaja con diferentes zonas, y la zona pública es la predeterminada que usaremos. Lista todos los servicios y puertos activos en el firewall.

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

Debería mostrar la siguiente salida.

cockpit dhcpv6-client ssh

Permite los puertos HTTP y HTTPS.

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

Verifica nuevamente el estado del firewall.

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

Deberías ver una salida similar.

cockpit dhcpv6-client http https ssh

Recarga el firewall para habilitar los cambios.

$ sudo firewall-cmd --reload

Paso 2 - Instalar NetData

Netdata viene con un script de instalación que puede funcionar en cualquier distribución de Linux. Ejecuta el siguiente comando para descargar y ejecutar el script de instalación.

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

Se te pedirá tu contraseña de sudo para habilitar los privilegios de sudo. Ingresa Y para confirmar la adición del repositorio de Netdata y su instalación en tu servidor.

El instalador de Netdata habilita y comienza automáticamente el servicio. Verifica el estado del servicio.

$ sudo systemctl status netdata
? netdata.service - Monitoreo de rendimiento en tiempo 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 Monitoreo de rendimiento en tiempo real.
.......

Si tu servicio no está iniciado o habilitado, puedes hacerlo usando el siguiente comando.

$ sudo systemctl enable netdata --now

Ejecuta el siguiente comando para verificar los puertos abiertos y el proceso que los usa.

$ sudo ss -plnt

Deberías obtener una salida similar. Netdata utiliza el puerto 19999 para su panel, visto en la salida a continuación. Netdata utiliza el puerto 8125 para recibir estadísticas de otras aplicaciones.

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

Paso 3 - Instalar SSL

Para instalar un certificado SSL usando Let’s Encrypt, necesitamos instalar la herramienta Certbot.

Primero, necesitas descargar e instalar el repositorio EPEL.

$ sudo dnf install epel-release

Ejecuta los siguientes comandos para instalar Certbot.

$ sudo dnf install certbot

Genera el certificado SSL.

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

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/netdata.example.com en tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Crea un directorio raíz de desafío web para la renovación automática de Let’s Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crea un trabajo de Cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew y ábrelo para editar.

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

Pega el siguiente código.

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

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Cambia los permisos en el archivo de tarea para hacerlo ejecutable.

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

Paso 4 - Instalar y Configurar Nginx

Instalaremos la última versión de Nginx. Crea y abre el archivo /etc/yum.repos.d/nginx.repo para editar.

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

Pega las siguientes líneas en él.

[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

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Instala Nginx y herramientas HTTPD.

$ sudo dnf install nginx httpd-tools

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.20.2

Habilita y comienza el servicio de Nginx.

$ sudo systemctl enable nginx --now

Crea y abre el archivo /etc/nginx/conf.d/netdata.conf para editar.

$ sudo nano /etc/nginx/conf.d/netdata.conf

Pega el siguiente código en él.

# Definir upstream de netdata
upstream netdata {
    server 127.0.0.1:19999;
    keepalive 64;
}

# Redirigir todo lo no encriptado a encriptado
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 de NetData";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}

Una vez terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Abre el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agrega la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Ejecuta el siguiente comando para generar un archivo de contraseña para habilitar la autenticación HTTP.

$ sudo htpasswd -c /etc/nginx/.htpasswd netadmin
New password: 
Re-type new password: 
Adding password for user netadmin

Verifica la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf tiene una sintaxis correcta
nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa

Reinicia el servicio de Nginx para habilitar la nueva configuración.

$ sudo systemctl restart nginx

Paso 5 - Acceder y Usar el Panel de Control de Netdata

Deberías poder acceder a Netdata a través de la URL https://netdata.example.com. La primera vez que accedas, se te pedirá tus detalles de autenticación HTTP.

Autenticación HTTP de Netdata

Obtendrás el siguiente panel de control.

Panel de Control de Netdata por Primera Vez

Marca la casilla Recordar mi elección y haz clic en el botón Más tarde, permanecer en el panel del agente para descartar el popup.

Puedes pausar, detener y comenzar el monitoreo en cualquier momento usando el botón Reproducir en el panel de control.

Botón Reproducir/Pausar de Netdata

Puedes acceder a varios paneles haciendo clic en las opciones de la barra lateral derecha. Haz clic en el botón UTC y selecciona la zona horaria correcta para cambiarla.

Cambio de Zona Horaria de Netdata

Paso 6 - Configurar NetData

Netdata almacena su configuración principal en el archivo /etc/netdata/netdata.conf. Puedes ver estas configuraciones visitando la URL https://netdata.example.com/netdata.conf en tu navegador.

Archivo de Configuración de Netdata en el Navegador

El archivo está dividido en varias secciones, como [global], [web], [registry], y más. La configuración predeterminada es suficiente para comenzar. Netdata recopila datos utilizando dos tipos de plugins:

  1. plugins internos están escritos en lenguaje C y se ejecutan como hilos dentro del demonio netdata.
  2. plugins externos están escritos en varios lenguajes, incluyendo Python, Go, etc. y se generan como procesos independientes de larga duración por el demonio netdata. Se comunican con el demonio de Netdata usando pipes.

Configurar el Uso de Memoria de NetData

El uso de RAM de NetData se decide en función del tiempo que deseas mantener los datos de gráficos grabados antes de que se pierdan.

  • 3600 segundos o 1 hora de retención de datos de gráficos utiliza 15 MB de RAM.
  • 7200 segundos o 2 horas de retención de datos de gráficos utiliza 30 MB de RAM.
  • 14400 segundos o 4 horas de retención de datos de gráficos utiliza 60 MB de RAM.

Cada vez que duplicas el tiempo de retención de datos de gráficos, el requisito de RAM también se duplica. Estos requisitos de RAM se basan en el número de gráficos en uso por el panel de control predeterminado. Agregar más gráficos y aplicaciones cambiará estas estimaciones.

Abre el archivo de configuración de Netdata.

$ sudo nano /etc/netdata/netdata.conf

Ingresa la línea history = 14400 bajo la sección [global].

[global]
..
        history = 14400
..

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Desactivar la Telemetría

Por defecto, Netdata recopila información anónima de uso utilizando una plataforma de análisis de productos, Posthog. Cada vez que se inicia o detiene el demonio de Netdata, Netdata utiliza el script de estadísticas anónimas para recopilar la siguiente información del sistema y enviarla a sí mismo.

  • Versión de Netdata
  • Nombre del SO, versión, id, id_like
  • Nombre del kernel, versión, arquitectura
  • Tecnología de virtualización
  • Tecnología de contenedorización
  • Información adicional sobre fallos del cliente de Netdata.

Afortunadamente, puedes optar por no participar en esto. Crea un archivo vacío llamado .opt-out-from-anonymous-statistics en el directorio de Netdata.

$ sudo touch /etc/netdata/.opt-out-from-anonymous-statistics

Reinicia Netdata para habilitar el cambio.

$ sudo systemctl restart netdata

Almacenamiento a Largo Plazo

Netdata utiliza la RAM y el disco de tu sistema para almacenar datos históricos por defecto. El proceso predeterminado de Netdata recopila alrededor de 2000 métricas por segundo, lo que significa que la configuración predeterminada almacenará aproximadamente dos días de métricas en la RAM y el disco.

Para almacenar más métricas, tienes las siguientes dos opciones:

  1. Configurar Netdata para usar más RAM y espacio en disco
  2. Archivar las métricas en una base de datos externa

Solo discutiremos la primera opción en este tutorial. Para la segunda opción, debes consultar la documentación oficial de Netdata.

Configurar Netdata para usar más RAM y espacio en disco

Abre el archivo /etc/netdata/netdata.conf para editar.

$ sudo nano /etc/netdata/netdata.conf

Pega las siguientes líneas bajo la sección [global].

[global]
...
    memory mode = dbengine
    page cache size = 32
    dbengine disk space = 256

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

El tamaño de la caché de página determina la cantidad de RAM utilizada, y el dbengine disk space determina el uso del disco. Por defecto, Netdata utiliza 32 MB de RAM y 256 MB de espacio en disco. Puedes descomentar estos valores y cambiar cualquiera de los dos valores a tu gusto.

Puedes usar la calculadora de Métricas de Almacenamiento de Netdata para decidir cuánta RAM y espacio en disco necesitas.

Reducir la Frecuencia de Recopilación

Puedes optimizar el rendimiento de Netdata aumentando el tiempo entre la recopilación de métricas. Por defecto, Netdata recopila métricas cada segundo.

Para cambiar eso, abre el archivo de configuración de Netdata para editar.

$ sudo nano /etc/netdata/netdata.conf

Ingresa la siguiente línea bajo la sección [global]. Esto aumenta la frecuencia a 5 segundos.

[global]
...
    update every = 5

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Paso 7 - Configurar Notificaciones de Slack

El primer paso es crear una aplicación de Slack y conectarla a un canal específico en tu espacio de trabajo para configurar las Notificaciones de Slack.

Visita la página de API de Slack y haz clic en el botón Crear App para comenzar a crear una aplicación.

Aplicaciones API de Slack

Haz clic en el enlace Desde Cero para crear la app.

Popup Crear App de Slack

Selecciona un nombre para tu app y elige el espacio de trabajo donde deseas que aparezca tu App. Si no deseas asociar tu app con el espacio de trabajo existente, puedes crear otro y volver a este paso.

Popup Nombre de App de Slack

Abre la página de Webhook Entrante seleccionando la opción en el menú Características de la barra lateral izquierda, y luego activa el webhook.

Webhooks Entrantes de Aplicaciones de Slack

Haz clic en el botón Agregar Nuevo Webhook al Espacio de Trabajo en la parte inferior de la página y selecciona tu espacio de trabajo y el canal objetivo para las notificaciones.

Agregar App de Netdata a WorkSpace de Slack

Haz clic en el botón Permitir para continuar. Regresa a la página de Webhooks Entrantes y copia la URL del Webhook.

URL del Webhook de Slack

Regresa a la terminal y cambia al directorio /etc/netdata.

$ cd /etc/netdata

Netdata proporciona un script edit-config para editar y crear archivos de configuración de Netdata. Ejecuta el siguiente archivo para crear y abrir el archivo health_alarm_notify.conf usando el editor predeterminado de tu sistema.

$ sudo ./edit-config health_alarm_notify.conf

Desplázate hacia abajo hasta la siguiente sección.

# Habilitar notificación de slack
SEND_SLACK="YES"

# Seleccionar el webhook de slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/xxxxxxx"

# Canal predeterminado para notificaciones
DEFAULT_RECIPIENT_SLACK="notifications"

Asegúrate de que la variable SEND_SLACK esté configurada en sí. Pega la URL del webhook copiada en la variable SLACK_WEBHOOK_URL. Ingresa el nombre de tu canal para la variable DEFAULT_RECIPIENT_SLACK.

Si tu editor es Vim, presiona la tecla Escape para salir de la edición, escribe :x y presiona la tecla Enter para guardar el archivo y salir del editor.

Si tu editor es Nano, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Reinicia Netdata para aplicar los cambios.

$ sudo systemctl restart netdata

Configurar Notificaciones por Correo Electrónico

Netdata utiliza sendmail por defecto para enviar notificaciones por correo electrónico, pero gestionar un servidor de correo electrónico no es una tarea fácil. Netdata no soporta SMTP, pero puedes instalar un paquete llamado cliente msmtp. Te permite enviar correo a un servidor SMTP.

Instala msmtp.

$ sudo dnf install msmtp

Crea y abre el archivo de configuración para msmtp.

$ sudo nano /etc/msmtprc

Pega el siguiente código en él.

# Establecer valores predeterminados para todas las cuentas siguientes.
defaults

# Usar el puerto de envío de correo 587 en lugar del puerto SMTP 25.
port 587

# Siempre usar TLS.
tls on

# El servidor SMTP de tu ISP
account ses
host email-smtp..amazonaws.com
from [email protected]
auth on
user 
password 

# Establecer cuenta predeterminada a isp
account default: ses

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Abre el archivo /etc/netdata/health_alarm_notify.conf para editar.

$ sudo nano /etc/netdata/health_alarm_notify.conf

Desplázate hacia abajo hasta la siguiente sección e ingresa la ruta a msmtp.

# comandos externos

# La ruta completa al comando sendmail.
# Si está vacío, se buscará en el sistema $PATH.
# Si no se encuentra, las notificaciones por correo electrónico se deshabilitarán (silenciosamente).
sendmail="/usr/bin/msmtp"

Ubica la siguiente sección e ingresa los detalles del remitente y receptor y asegúrate de que el envío de correos electrónicos esté habilitado.

# opciones globales de notificación por correo electrónico

# se pueden dar múltiples destinatarios así:
#              "[email protected] [email protected] ..."

# la dirección de correo electrónico que envía notificaciones por correo electrónico
# el predeterminado es el usuario del sistema como el que se ejecuta netdata (usualmente: netdata)
# Los siguientes formatos son compatibles:
# EMAIL_SENDER="user@domain"
# EMAIL_SENDER="User Name "
# EMAIL_SENDER="'User Name' "
# EMAIL_SENDER="\"User Name\" "
EMAIL_SENDER="Servidor Admin <[email protected]>"

# habilitar/deshabilitar el envío de correos electrónicos
SEND_EMAIL="YES"

# si no se configura un destinatario de rol, se enviará un correo electrónico a:
DEFAULT_RECIPIENT_EMAIL="[email protected]"
# para recibir solo alarmas críticas, configúralo en "root|critical"

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Paso 8 - Probar Canales de Notificación

Probemos si las notificaciones de Slack funcionan.

Inicia sesión como el usuario del sistema netdata creado durante la instalación.

$ sudo su -s /bin/bash netdata

Ejecuta el script de notificación de alarma para enviar una notificación de prueba.

$ /usr/libexec/netdata/plugins.d/alarm-notify.sh test

Sal del usuario.

$ exit.

Abre tu aplicación de Slack, y deberías haber recibido las siguientes alertas.

Notificaciones de Prueba de Slack de Netdata

También deberías recibir tres correos electrónicos sobre las advertencias de prueba.

Notificaciones de Prueba por Correo Electrónico de Netdata

Paso 9 - Configurar Monitoreo del Sistema

Ahora que hemos configurado y probado las notificaciones, configuremos y probemos las notificaciones para el sistema, como el uso de CPU.

Ejecuta los siguientes comandos para crear y abrir el archivo de configuración de CPU.

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

Cambia los valores de las opciones warn y crit bajo 10min_cpu_usage como se muestra a continuación.

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

Guarda el archivo y sal del editor.

La configuración anterior enviará una advertencia si el uso de CPU cae entre el 60 y el 70% y una advertencia crítica cuando el uso de CPU cae entre el 75 y el 85%.

Reinicia el servicio de Netdata.

$ sudo systemctl restart netdata

Probemos la configuración instalando la aplicación Stress.

$ sudo dnf install stress

Ejecuta el siguiente comando para aumentar el uso de CPU de tu servidor.

$ stress --cpu 2

Deja el comando en ejecución durante 5-10 minutos, y recibirás mensajes de alto uso de CPU. Una vez que recibas esos mensajes, regresa a la terminal y sal del comando presionando Ctrl + Z.

Después de detener el servicio, recibirás una notificación de recuperación de CPU en Slack.

Notificaciones de Uso de CPU de Slack

Paso 10 - Configurar Monitoreo de Nginx

Una de las aplicaciones más comúnmente monitoreadas usando Netdata es el servidor y los paquetes SQL. Vamos a monitorear el servidor Nginx usando Netdata.

Para habilitar el monitoreo del servidor Nginx, necesitamos usar el ngx_http_stub_status_module. Generalmente viene preinstalado con Nginx. Puedes verificar si el módulo está presente.

$ nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

Si no obtienes respuesta, significa que tu instalación de Nginx no soporta la función. En ese caso, necesitarás compilar Nginx.

Abre el archivo de configuración predeterminado de Nginx /etc/nginx/conf.d/default.conf para editar. La ubicación del archivo es diferente porque instalamos Nginx desde su repositorio oficial. Si estás instalando Nginx desde el repositorio del SO, entonces la ubicación del archivo será /etc/nginx/nginx.conf.

$ sudo nano /etc/nginx/conf.d/default.conf

Ingresa el siguiente código dentro del bloque del servidor antes del último corchete de cierre.

# Habilitar módulo stub_status
location /stub_status {
    stub_status;
    allow 127.0.0.1;        #solo permitir solicitudes desde localhost
    deny all;               #denegar todos los demás hosts
}

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Verifica la configuración de Nginx.

$ sudo nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf tiene una sintaxis correcta
nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa

Reinicia el servidor Nginx.

$ sudo systemctl restart nginx

Reinicia el servicio de Netdata.

$ sudo systemctl restart netdata

Deberías ver los detalles de conexión de Nginx en tu panel de control de Netdata.

Detalles de Conexión de Nginx de Netdata

Monitorear Registros de Nginx

Netdata también puede monitorear los registros de acceso de Nginx. Para hacer eso, cambia al directorio de Netdata.

$ cd /etc/netdata

Ejecuta el siguiente comando para generar un archivo de configuración para monitorear los Registros de Acceso.

$ sudo ./edit-config python.d/web_log.conf

Desplázate hasta la parte inferior del archivo y encuentra la siguiente sección.

# -------------------------------------------
# registro de nginx en varias distribuciones

# 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'

Cambia la ruta para monitorear los archivos de registro respectivos. Puedes agregar tantas secciones como desees para monitorear tantos hosts y sus archivos de registro de acceso. Nuestro archivo de configuración se ve como el siguiente.

# -------------------------------------------
# registro de nginx en varias distribuciones

# 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'

Guarda y sal del editor.

Para acceder a los archivos de registro, Netdata necesita permisos para acceder al directorio. Por defecto, el grupo del sistema adm tiene permiso para acceder a los archivos de registro. Para darle acceso a Netdata, necesitamos agregar al usuario netdata al grupo adm.

$ sudo usermod -aG adm netdata

Reinicia Nginx y el servicio de Netdata.

$ sudo systemctl restart nginx netdata

Recarga el panel de control de Netdata para ver los datos de tu archivo de registro.

Panel de Control de Registros de Acceso de Netdata

Paso 11 - Configurar Monitoreo de MySQL/MariaDB

Instalaremos MariaDB para nuestro tutorial. Los pasos permanecen iguales si estás usando un servidor MySQL.

Agrega el repositorio para MariaDB 10.6.

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

Pega el siguiente código en él.

# Lista de repositorios de MariaDB 10.6 CentOS - creada 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

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Instala MariaDB.

$ sudo dnf install MariaDB-server

Habilita el servidor MariaDB.

$ sudo systemctl enable mariadb

Inicia el script de instalación segura de MySQL. El nombre del archivo es diferente en el caso de MariaDB.

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

Thanks for using MariaDB!

Abre el archivo /etc/my.cnf.d/server.cnf para editar.

$ sudo nano /etc/my.cnf.d/server.cnf

Encuentra la sección [mariadb] en el archivo y pega la siguiente línea como se muestra a continuación para habilitar el plugin Userstats. Esta configuración solo funciona en MariaDB y no en el servidor MySQL.

[mariadb]
userstat = 1

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Inicia el servidor MariaDB.

$ sudo systemctl start mariadb

Reinicia el servicio de Netdata.

$ sudo systemctl restart netdata

El panel de MySQL/MariaDB debería comenzar a aparecer en el panel de control de Netdata.

Panel de Control de MySQL/MariaDB de NetData

Paso 12 - Configurar Monitoreo de PHP-FPM

Puedes monitorear una o más instancias de PHP-FPM usando Netdata. Para nuestro tutorial, instalaremos PHP 8.0 y luego habilitaremos su monitoreo.

Instalaremos PHP usando el repositorio Remi. Ya instalamos el repositorio EPEL en el paso 3. Instala el repositorio Remi.

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

Verifica los flujos de PHP disponibles.

$ dnf module list php -y
Última verificación de expiración de metadatos: 0:00:12 hace el Vie 03 Dic 2021 09:39:32 AM UTC.
Rocky Linux 8 - AppStream
Name                Stream                 Profiles                                 Summary
php                 7.2 [d]                common [d], devel, minimal               Lenguaje de script PHP
php                 7.3                    common [d], devel, minimal               Lenguaje de script PHP
php                 7.4                    common [d], devel, minimal               Lenguaje de script PHP

Repositorio Modular de Remi para Enterprise Linux 8 - x86_64
Name                Stream                 Profiles                                 Summary
php                 remi-7.2               common [d], devel, minimal               Lenguaje de script PHP
php                 remi-7.3               common [d], devel, minimal               Lenguaje de script PHP
php                 remi-7.4               common [d], devel, minimal               Lenguaje de script PHP
php                 remi-8.0               common [d], devel, minimal               Lenguaje de script PHP
php                 remi-8.1               common [d], devel, minimal               Lenguaje de script PHP

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

La versión predeterminada es 7.2. Habilita el repositorio PHP 8.0 de Remi.

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

A continuación, instala PHP y sus extensiones requeridas por Firefly III. El paquete php contiene varias dependencias que Firefly III requiere, así que asegúrate de incluirlas.

$ 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

Verifica la instalación.

$ 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

Abre el archivo /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Necesitamos establecer el usuario/grupo Unix de los procesos PHP en nginx. Encuentra las líneas user=www-data y group=www-data en el archivo y cámbialas a nginx.

...
; Usuario/grupo Unix de procesos
; Nota: El usuario es obligatorio. Si no se establece el grupo, se utilizará el grupo del usuario predeterminado
;       se utilizará.
; RPM: usuario de apache elegido para proporcionar acceso a los mismos directorios que httpd
user = nginx
; RPM: Mantener un grupo permitido para escribir en el directorio de registro.
group = nginx
...

Desplázate hacia abajo en el archivo para localizar la opción ;pm.status_path = /status. Descomenta la línea eliminando el punto y coma frente a ella, como se muestra a continuación.

; Nota: Hay una página web de monitoreo de estado FPM en tiempo real disponible
;       Está disponible en: @EXPANDED_DATADIR@/fpm/status.html
;
; Nota: El valor debe comenzar con una barra inclinada (/). El valor puede ser
;       cualquier cosa, pero puede no ser una buena idea usar la extensión .php o puede
;       entrar en conflicto con un archivo PHP real.
; Valor predeterminado: no establecido
pm.status_path = /status

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Habilita y comienza el servicio PHP.

$ sudo systemctl enable php-fpm --now

Agregar Configuraciones de PHP a Nginx

Abre el archivo de configuración predeterminado de Nginx /etc/nginx/conf.d/default.conf para editar.

$ sudo nano /etc/nginx/conf.d/default.conf

Ingresa el siguiente código dentro del bloque del servidor antes del último corchete de cierre.

# definir monitoreo de 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 de la versión de PHP y la distribución del SO
}

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Verifica la configuración de Nginx.

$ sudo nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf tiene una sintaxis correcta
nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa

Reinicia el servidor Nginx.

$ sudo systemctl restart nginx

Reinicia el servicio de Netdata.

$ sudo systemctl restart netdata

Recarga el panel de control de Netdata, y deberías ver las estadísticas de PHP-FPM.

Estadísticas de PHP-FPM de NetData

Paso 13 - Configurar Monitoreo del Motor Docker y Contenedores

Netdata puede monitorear tanto el motor Docker como los contenedores Docker. También puede monitorear aplicaciones que se ejecutan dentro de estos contenedores, pero no cubriremos eso en este tutorial.

Primero, instalemos Docker.

$ 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

Habilita y comienza el servicio Docker.

$ sudo systemctl enable docker --now

Para monitorear el motor Docker, necesitas habilitar la función de métricas de Docker.

Crea y abre el archivo /etc/docker/daemon.json para editar.

$ sudo nano /etc/docker/daemon.json

Pega el siguiente código en él.

{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Reinicia los servicios de Netdata y Docker.

$ sudo systemctl restart docker netdata

Carga nuevamente el panel de control de Netdata, y podrás ver las estadísticas de Docker.

Estadísticas de Contenedor Docker de NetData

Verás otra entrada llamada Métricas de Prometheus en tu panel porque la opción de métricas fue creada para el panel de Prometheus.

Estadísticas de Contenedor Docker de Prometheus de NetData

El siguiente paso es monitorear el contenedor Docker. Netdata utiliza grupos de control, referidos como cgroups para monitorear los contenedores Docker. Los grupos de control son una característica de Linux que limita y rastrea el uso de recursos de un conjunto de procesos, en este caso, contenedores. Si tienes contenedores Docker en ejecución cuando instalas Netdata, se rastrean automáticamente. Sin embargo, si ejecutas un contenedor después de instalar Netdata, necesitas reiniciarlo.

Ejecuta un contenedor de prueba.

$ docker container run -d nginx

Verifica el estado del contenedor.

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
938b2cf30927   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 2 seconds   80/tcp    pensive_lovelace

El nombre del contenedor es tender_murdock como se muestra. Dado que el contenedor se ha iniciado después de instalar Netdata, reinicia el servicio.

$ sudo systemctl restart netdata

Carga el Panel de Control, y deberías poder ver las estadísticas del Contenedor.

Estadísticas Individuales del Contenedor Docker de NetData

Conclusión

Esto concluye nuestro tutorial sobre la instalación y uso del sistema de monitoreo Netdata para monitorear varias aplicaciones como Nginx, MySQL, PHP-FPM y Docker en un servidor Rocky Linux. Si tienes alguna pregunta, publícalas en los comentarios a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.