Cómo monitorear el rendimiento de Ubuntu usando Netdata


Netdata es una estadística gratuita y de ancho de banda, por mencionar algunas.

Además, Netdata también proporciona visualizaciones de métricas interactivas a las que se puede acceder en un navegador web junto con alarmas inteligentes que ayudan a solucionar fallas del sistema.

La tecnología de vanguardia y la popularidad de Netdata le han valido un lugar en la nube de Forbes 100 estrellas en ascenso en 2020, lo cual no es poca cosa. De hecho, al momento de escribir esta guía, ha recibido casi 50.000 estrellas Github.

Hay dos formas que puede utilizar para instalar Netdata. Puede ejecutar de inmediato un script automatizado en un shell BASH. Esto actualiza sus sistemas e inicia la instalación de Netdata. Alternativamente, puede clonar el repositorio Git de Netdata y luego ejecutar el script automatizado. El primer método es simple y directo y es en lo que nos centraremos en esta guía.

En este artículo, veremos cómo puede instalar Netdata en Ubuntu para monitorear en tiempo real, el rendimiento y el monitoreo del estado de los servidores y las aplicaciones.

Netdata admite las siguientes distribuciones de Ubuntu LTS:

  • Ubuntu 20.04
  • Ubuntu 18.04
  • Ubuntu 16.04

Cómo instalar Netdata en Ubuntu Linux

Para comenzar la instalación, ejecute el siguiente comando en su terminal bash para descargar y ejecutar el script.

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

Durante la ejecución del script, ocurre lo siguiente:

  • La secuencia de comandos descubre automáticamente su distribución de Linux, actualiza la lista de paquetes e instala todos los paquetes de software necesarios.
  • El árbol de origen de datos de red más reciente se descarga en la ruta /usr/src/netdata.git.
  • La secuencia de comandos instala netdata ejecutando la secuencia de comandos ./netdata-installer.sh desde el árbol de fuentes.
  • Se actualiza cron.daily para garantizar que netdata se actualice a diario.

A medida que se ejecuta el script, se le darán consejos sobre cómo acceder a Netdata en un navegador y cómo administrarlo como un servicio systemd.

La instalación lleva un tiempo, así que espere unos 10 minutos y vuelva. Finalmente, obtendrá el resultado a continuación cuando el script concluya la instalación.

Una vez instalado, inicie, habilite y verifique el estado de Netdata como se muestra.

$ sudo systemctl start netdata
$ sudo systemctl enable netdata
$ sudo systemctl status netdata

De forma predeterminada, Netdata escucha en el puerto 19999 y esto se puede confirmar usando el comando netstat como se muestra.

$ sudo netstat -pnltu | grep netdata

Si tiene UFW en ejecución, haga un esfuerzo para abrir el puerto 19999, ya que será necesario cuando acceda a Netdata en el navegador.

$ sudo ufw allow 19999/tcp
$ sudo ufw reload

Finalmente, para acceder a Netdata, cambie a su navegador y navegue por la siguiente URL

http://server-ip:19999/

Esto es lo que le da la bienvenida una vez que navega por la URL. De hecho, se dará cuenta de que no se le pedirá que inicie sesión. Todas las métricas del sistema se mostrarán como se muestra.

Puede hojear varios gráficos haciendo clic en sus métricas preferidas en la barra lateral derecha del tablero. Por ejemplo, para ver las estadísticas de la interfaz de red, haga clic en la opción "Interfaces de red".

Protección de Netdata con autenticación básica en Ubuntu

Hasta este momento, cualquiera puede acceder al panel de Netdata y echar un vistazo a las distintas métricas del sistema. Esto equivale a una brecha de seguridad y definitivamente queremos evitarlo.

Con esto en mente, configuraremos la autenticación HTTP básica. Necesitamos instalar el paquete apache2-utils que proporciona el programa htpasswd que se utilizará para configurar el nombre de usuario y la contraseña del usuario. Además, instalaremos el servidor web Nginx que actuará como proxy inverso.

Para instalar el servidor web Nginx y el paquete apache2-utils, ejecute el comando.

$ sudo apt install nginx apache2-utils

Con Nginx y apache2-utils instalados, crearemos un archivo de configuración dentro del directorio /etc/nginx/conf.d. Sin embargo, no dude en utilizar el directorio de sitios disponibles si utiliza Nginx para otros fines además de Netdata.

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

Dentro del archivo de configuración, primero le indicaremos a Nginx que haga proxy de las solicitudes entrantes para el panel de Netdata. A partir de entonces, agregaremos una solicitud de autenticación básica que solo otorga a los usuarios autorizados acceso al panel de Netdata mediante la autenticación de nombre de usuario/contraseña.

Aquí está la configuración completa. Tenga cuidado de reemplazar las directivas server_ip y example.com con su propia dirección IP y nombre de servidor.

upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

server {
    listen server_ip:80;
    server_name example.com;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Entendamos la configuración, sección por sección.

upstream netdata-backend {
    server 127.0.0.1:19999;
    keepalive 64;
}

Hemos especificado un módulo ascendente llamado netdata-backend que hace referencia al servidor web integrado de Netdata utilizando la dirección de loopback 127.0.0.1 y el puerto 19999, que es el puerto predeterminado en el que escucha Netdata. La directiva keepalive define el número máximo de conexiones inactivas que pueden permanecer abiertas.

server {
    listen server_ip:80;
    server_name example.com;

    auth_basic "Authentication Required";
    auth_basic_user_file netdata-access;

Esta es la sección principal del bloque del servidor Nginx. La primera línea especifica la dirección IP externa que Nginx debe escuchar cuando los clientes envían sus solicitudes. La directiva server_name especifica el nombre de dominio del servidor e indica a Nginx que ejecute el bloque del servidor cuando los clientes invocan el nombre de dominio en lugar de la dirección IP externa.

Las dos últimas líneas indican la autenticación HTTP simple que requiere que el usuario inicie sesión con un nombre de usuario y una contraseña. El módulo auth_basic activa la ventana emergente de nombre de usuario/contraseña en el navegador con "Se requiere autenticación" en el título, que luego puede personalizarse para adaptarse a sus preferencias.

El módulo auth_basic_user_file apunta al nombre del archivo que contendrá el nombre de usuario y la contraseña del usuario autorizado para acceder al panel de Netdata, en este caso netdata-access. Crearemos este archivo más adelante.

La última sección es el bloque de ubicación que se encuentra dentro del bloque del servidor. Esto maneja el proxy y el reenvío de solicitudes entrantes al servidor web Nginx.

location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://netdata-backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }

Para la autenticación, crearemos un nombre de usuario y contraseña para un usuario llamado tecmint usando la utilidad htpasswd y almacenaremos las credenciales dentro del archivo netdata-access.

$ sudo htpasswd -c /etc/nginx/netdata-access tecmint

Proporcione la contraseña y confírmela.

A continuación, reinicie el servidor web Nginx para que los cambios entren en vigor.

$ sudo systemctl restart nginx

Para probar si la configuración fue correcta, proceda y busque la dirección IP de su servidor

http://server-ip

Aparecerá una ventana emergente de autenticación como se muestra a continuación. Proporcione su nombre de usuario y contraseña y presione ENTER.

A partir de entonces, tendrá acceso al panel de Netdata.

Esto nos lleva al final de nuestro tema de hoy. Acaba de aprender cómo instalar la herramienta de monitoreo Netdata y la configuración de la autenticación HTTP básica en Ubuntu. No dude en consultar otros gráficos sobre diversas métricas del sistema.