Gráficas en Linux con Grafana

Hoy vamos hablar de la suite, open source, de generación de gráficas y métricas, llamada Grafana. Se trata de una herramienta muy utilizada en las empresas para visualizar datos en tiempo real de infraestructuras y aplicaciones, aún así se utiliza también en múltiples campos, cómo la domótica, la industria, el control de procesos o en servicios de monitorización como Icinga2 o Zabbix.

Instalación de Grafana en CentOS 7

Para ver cómo funciona, primero de todo realizaremos su instalación en un sistemas operativo CentOS 7. Para ello lo primero de todo tenemos que actualizar el sistema y añadir el repositorio:

  1. yum update
  2. vi /etc/yum.repos.d/grafana.repo

Y añadir:

  1. [grafana]
  2. name=grafana
  3. baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
  4. repo_gpgcheck=1
  5. enabled=1
  6. gpgcheck=1
  7. gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
  8. sslverify=1
  9. sslcacert=/etc/pki/tls/certs/ca-bundle.crt

Y volvemos a actualizar e instalar el paquete correspondiente:

  1. yum update
  2. #Al actualizar nos pedirá aceptar una llava GPG, le decimos que sí
  3. yum install grafana

Una vez instalado el servicio, veamos sus ficheros principales:

  • Se han instalado los binarios en /usr/sbin/grafana-server
  • El script de inicio está ubicado en /etc/init.d/grafana-server
  • Los ficheros por defecto los encontramos en /etc/sysconfig/grafana-server
  • El fichero de configuración está en /etc/grafana/grafana.ini
  • En el caso de un sistema con systemd, el servicio se llama grafana-server.service
  • Por defecto el fichero de registro está en /var/log/grafana.log
  • El fichero de configuración de la base de datos por defecto en sqlite la podemos encontrar en /var/lib/grafana/grafana.db

Para iniciar el servicio, escribimos, teniendo en cuenta que utilizamos systemd, ya que usamos CentOS 7

  1. systemctl daemon-reload
  2. # De la siguiente manera añadimos el servicio al arranque:
  3. systemctl enable grafana-server.service
  4. # Encendemos el servicio:
  5. systemctl start grafana-server.service

En el caso de utilizar una versión anterior de CentOS, o bien un sistema sin systemd como Devuan o Gentoo, escribimos:

  1. # Añadimos al arranque:
  2. /sbin/chkconfig --add grafana-server
  3. # Encendemos el servicio:
  4. service grafana-server start

Si nos interesa utilizar una base de datos con cara y hojos como MySQL/MariaDB o Postgres, podemos consultar este documento.

Y ahora os preguntaréis, ¿Y ahora qué?

Trabajando con Grafana

Lo primero que haremos es ir a nuestro navegador favorito y escribir la IP del servidor o dominio FQDN más el puerto 3000. Esto lo podemos averiguar fácilmente utilizando el comando netstat, paquete que se encuentra del grupo net-tools, así:

  1. netstat -putanoe | grep -i grafana

Con el resultado:

  1. [root@servcentos1 ~]# netstat -putanoe | grep -i grafana
  2. tcp6       0      0 :::3000                 :::*                    LISTEN      996        35143      23067/grafana-serve  off (0.00/0/0

De esta manera sabemos que el puerto en el que escucha Grafana es el 3000.

Una vez en el navegador veremos la pantalla de acceso:

Pantalla acceso a Grafana

Las credenciales de acceso las encontramos el fichero de configuración /etc/grafana/grafana.ini

Una vez vez hemos accedido nos pedirá añadir un «Data Source», esto es, una origen de datos, que funcionarían como «backends». Cada origen de datos tiene un editor de consultas específico que se personaliza para las características y capacidades que el origen de datos específico requiere. Los principales son:

Una vez apretamos sobre el botón de añadir un «Data Source«, escogemos «Type: InfluxDB» y el nombre que queramos.

Selección de Data Source

Más adelante debemos definir un nombre para la base de datos. Para ello vamos a instalar InfluxDB en nuestro sistema operativo. Primero, repitiendo los pasos anteriores, añadimos el repositorio:

  1. #Creamos el fichero
  2. vi /etc/yum.repos.d/influxdb.repo
  3. #Y copiamos
  4. influxdb]
  5. name = InfluxDB Repository - RHEL \$releasever
  6. baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
  7. enabled = 1
  8. gpgcheck = 1
  9. gpgkey = https://repos.influxdata.com/influxdb.key

Actualizamos e instalamos el paquete:

  1. yum update
  2. yum install influxdb

Una vez instalado encendemos el servicio y lo añadimos al arranque.

  1. systemctl enable influxdb.service
  2. systemctl start influxdb.service

Habilitamos los puertos que utiliza el servicio en el cortafuegos del servidor:

  1. firewall-cmd --permanent --zone=public --add-port=8086/tcp
  2. firewall-cmd --permanent --zone=public --add-port=8083/tcp
  3. firewall-cmd --reload

El fichero de configuración del servicio se ubica en /etc/influxdb/influxdb.conf

Accedemos a la terminal de influxdb, escribiendo:

  1. influx

De esta manera podemos interactuar con la base de datos. Primero de todo vamos a crear un usuario:

  1. CREATE USER testuser WITH PASSWORD 'testuser' WITH ALL PRIVILEGES

Creamos la base de datos de prueba:

  1. CREATE DATABASE testdb

Salimos escribiendo exit, y volvemos al menú web, añadiendo los datos que justo acabamos hemos utilizado.

Y proseguimos. Una vez hecho esto pasamos a crear nuestro primero «Dashboard»

Creación del primer Dashborad en Grafana

Desde aquí vamos a poder crear las gráficas que nos interesen. Por el momento lo dejamos aquí, más adelante veremos cómo interactuar con el panel. Estad atentos ^.^

Para el artículo me he servidor de las siguientes fuentes:

Documentación oficial Grafana | vmkdaily.ghost.io

Respecto a los créditos de la imagen de portada: Flickr