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:
yum update
vi /etc/yum.repos.d/grafana.repo
Y añadir:
[grafana]
name=grafana
baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packagecloud.io/gpg.key https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
Y volvemos a actualizar e instalar el paquete correspondiente:
yum update
#Al actualizar nos pedirá aceptar una llava GPG, le decimos que sí
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
systemctl daemon-reload
# De la siguiente manera añadimos el servicio al arranque:
systemctl enable grafana-server.service
# Encendemos el servicio:
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:
# Añadimos al arranque:
/sbin/chkconfig --add grafana-server
# Encendemos el servicio:
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í:
netstat -putanoe | grep -i grafana
Con el resultado:
[root@servcentos1 ~]# netstat -putanoe | grep -i grafana
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:
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.
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:
#Creamos el fichero
vi /etc/yum.repos.d/influxdb.repo
#Y copiamos
influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
Actualizamos e instalamos el paquete:
yum update
yum install influxdb
Una vez instalado encendemos el servicio y lo añadimos al arranque.
systemctl enable influxdb.service
systemctl start influxdb.service
Habilitamos los puertos que utiliza el servicio en el cortafuegos del servidor:
firewall-cmd --permanent --zone=public --add-port=8086/tcp
firewall-cmd --permanent --zone=public --add-port=8083/tcp
firewall-cmd --reload
El fichero de configuración del servicio se ubica en /etc/influxdb/influxdb.conf
Accedemos a la terminal de influxdb, escribiendo:
influx
De esta manera podemos interactuar con la base de datos. Primero de todo vamos a crear un usuario:
CREATE USER testuser WITH PASSWORD 'testuser' WITH ALL PRIVILEGES
Creamos la base de datos de prueba:
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»
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