Netdata, es una herramienta Open Source de visualizacion y monitoreo de metricas en tiempo real, permite realizar un analisis muy detallado de todo el sistema mostrando informacion como uso de Carga del Sistema, CPU, Disco, Red, Puertos, Servicios, Entre otros.. logrando inspeccionar lo que ucurre y ocurrio sobre el host.

Esta herramienta pretende ser extensible y modular gracias al echo de que se distribuye libremente su codigo.
es posible instalarla en diversos sistemas operativos modernos basados en la arquitectura Linux.

Alpine
Arch Linux
CentOS
Debian
Fedora
Gentoo
openSUSE
PLD Linux
RedHat Enterprise Linux
SUSE
Ubuntu

A continuacion damos una visulacizacion de su arquitectura a modo de alto nivel, mostrando todas las librerias usadas y soportadas para crear la herramienta.
netdata-arquitectura

Caracteristicas de la aplicacion.

En las mas actuales, presentan una interactividad con el usuario por medio de las interfaces tactiles y los llamados DashBoards.
netdatagif1

Carga del Sistema
Una vision general de la carga de todo el sistema.
netdatagif2

Disco.
analisis de Disco I/O, Operaciones, Utilizacion, Espacio, software RAID (md).
netdatagif3

Interfaces de Red.
Analisis de Interfaces de Red, Ancho de Banda, Paquetes, erorres de paquetes, drops
netdatagif4

Latencia Fping
Muestra latencia, pequetes y paquetes perdidos
netdatagif5

Qos de la RED.
netdatagif6

Aplicaciones
Reporta el uso de CPU, Memoria, Lectura de disco, hilos, tuberias, de cada aplicacion del sistema.
netdatagif7

Herramientas a utilizar.

Para realizar esta laboratorio, necesitaremos algunas herramientas conocidas, si no es posible tener la VPS con ubuntu, se puede realizar la instalacion sobre un PC de escritorio o en su defecto una maquina virtualizada.

  • VPS Ubuntu 18.04
  • Computador de Escritorio con Cliente SSH.

Creando la Maquina Virtual.

Nosotros, instalaremos una maquina virtual sobre un servicio de VPS de bajo costo, conocido como Vultr, esta maquina virtual tendra acceso con usuario root para la instalacion, es posible realizar la instalacion sobre cualquier maquina virtual.

Omitiremos el proceso de creacion de la maquina virtual.

Instalando Nginx

Para correr Netdata, vamos a realizar un servidor web, en este caso Nginx.
se instalara sobre el servidor con el comando.

apt-get update

actualizamos el sistema

apt-get install nginx

instalamos el servidor Web.

netdata8

validamos que el servidor quedo al aire filtrando la lista de puertos que se encuentra a la escucha con netstat o accediendo a la ip por medio del navegador

netstat -pnta | grep -i listen

netdata9
netdata10
https://nginx.org/en/

Habilitamos sobre el servidor las reglas del Firewall basadas en UFW para acceder al servidor Nginx via web.

ufw status

Vemos el estatus del Firewall

ufw enable

lo habilitamos

sudo ufw app list

listamos las apps automaticas a las cuales podriamos filtrarle los puertos

sudo ufw allow 'Nginx Full'

Habilitamos las reglas correspondientes al Servidor Nginx

ufw status numbered

vemos el status actual del servicio y las reglas habilitadas.
netdata11

Instalando NetData

Sobre la guia del Desarrollador se encuentra documentado con detalle el proceso de instalacion para las diferentes versiones de los sistemas operativos.
En este caso, como estamos utilizando una version de GUN-Linux moderna como Ubuntu 18.04 vamos a realizar la instalacion con el script que nos brinda el desarrollador.

Esta instalacion sera full y instalara los todos los plugins disponibles.

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

netdatainstalacion

Para acceder al puerto desde internet, es necesario realizar la configuracion sobre las configuraciones del servidor Nginx.

Configurando Nginx

Creamos el archivo del host virtual para el servidor Nginx que apuntara al puerto local donde estara escuchando Netdata puerto "19999"

nano /etc/nginx/sites-available/netdata

Editamos el archivo y anexamos el siguiente codigo dentro del archivo creado.

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

server {
    # nginx listens to this
    listen 8080;

    # the virtual host name of this
    server_name netdata.example.com;

    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://backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Para esta configuracion, el host local esta a la escucha sobre el puerto 19999 mientras el servidor Nginx estara escuchando la interfaz de ethernet por el puerto 8080.

ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/netdata

creamos un enlace simbolico del archivo sobre el direcotrio de los sitios habilitados.

ls -la /etc/nginx/sites-enabled/

listamos los archivos sobre el directorio y confirmamos que el enlace fue correcto.
netdata12

ufw allow 8080

Subimos sobre el firewall el puerto de escucha 8080

ufw status numbered
validamos que el servicio habilita las peticiones por el puerto.

![netdata13](/content/images/2018/05/netdata13.png)


```bash
restart nginx.service

Reiniciamos el servidor

netstat -pnta | grep -i listen

Validamos que el puerto esta a la escucha

Accedemos por medio de la ip publica del servidor al puerto que acabamos de configurar para NetData y deberiamos de obtener la aplicacion.
netdatarunning

Esto es todo, hasta aqui hemos instalado la aplicacion, si desean revisar mas a fondo el funcionamiento del software, no olviden visitar la pagina del desarrollador.
https://github.com/firehol/netdata