Los sistemas de monitorización son cada día más importantes en los entornos tecnológicos (TI). Los clouds públicos tienen sus propios sistemas que permiten crear cuadros de mando y monitorizar métricas de los servicios que utilicemos, pero a veces no son lo ágiles que deberían. Amazon Web Service dispone de Cloudwatch y Azure dispone de Azure Monitor. La integración de estas herramientas con un software de tercero se hace muy necesario. En las próximas entregas se verá cómo integrar Grafana con ambos clouds públicos.

Grafana es una herramienta de software libre que permite de una forma muy sencilla crear cuadros de mando y monitorización de datos. Al no necesitar ninguna dependencia puede ser implementada casi en cualquier plataforma, incluida contenedores Docker. Una de las ventajas que tiene Grafana respecto a otras herramientas similares es que dispone de una gran cantidad de plugins para integrar sistemas como orígenes de datos.
En un post anterior se vio cómo integrar AWS Cloudatch con Zabbix, pudiendo crear cuadros de mando y configurar alertas de los servicios de AWS. A través de una nueva serie de posts se observará cómo desplegar un entorno de Grafana en una instancia EC2 de AWS con sistema operativo Amazon Linux, se añadirá como origen de datos Cloudwatch y se creará un cuadro de mando con las métricas de servicios de AWS.
Requisitos para seguir el post:
- Desplegar instancias EC2 en AWS.
- Asignar Elastic IP a la instancia EC2.
- Crear registro de DNS tipo A en Route 53.
- Instalación de NGINX
- SSH.
- Shell de Linux.
Notas: Durante la creación de estos posts se trabajará con la última versión estable de Grafana que es la 5.3.
Cómo desplegar Grafana en Amazon Linux
La instalación de Grafana en Amazon Linux es muy sencilla y se puede realizar de dos formas distintas:
- Descargar e instalar la última versión estable a través de yum o rpm.
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]$ sudo yum install https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm
Complementos cargados:extras_suggestions, langpacks, priorities, update-motd
grafana-5.4.2-1.x86_64.rpm
- Añadir el repositorio de Grafana para su instalación y estar al día con las actualizaciones:
- Crear el fichero /etc/yum.repos.d/grafana.repo
- Añadir los datos del repositorio al fichero creado anteriormente:
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt - Proceder a la instalación:
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]$ sudo yum install grafana
Complementos cargados:extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 2.4 kB 00:00:00
grafana/signature | 488 B 00:00:00
Obteniendo clave desde https://packages.grafana.com/gpg.key
Importando llave GPG 0x24098CB6:
Usuarioid : "Grafana <Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mltio@aaa.o>ioaaao>;"
Huella : 4040 ddf6 d76e 284a 80e4 34c5 2409 8ae6
Desde : https://packages.grafana.com/gpg.key
Está de acuerdo [s/N]:
- Crear el fichero /etc/yum.repos.d/grafana.repo
- Ahora ya se encuentra instalada la herramienta. Para poderla usar hay que arrancar el servicio que se realiza de la siguiente forma:
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]$ sudo service grafana-server start
Starting grafana-server (via systemctl): [ OK ] - Si se desea que Grafana se inicie cada vez que el servidor arranque hay que ejecutar el siguiente comando:
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]$ sudo systemctl enable grafana-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.
De esta forma ya estaría disponible el acceso a Grafana desde la instancia EC2. Para visitar el panel de administración bastará con conocer la IP pública de la instancia y acceder por HTTP a través del puerto 3000. Si se va a utilizar en un entorno de producción es recomendable asignar una Elastic IP a la instancia EC2 y crear un registro DNS de tipo A en Route 53.

¿Tienes dificultades para acceder después de haber realizado todos estos pasos? Posiblemente al crear la instancia EC2 hayas asignado un security group que no tenga abierto el puerto 3000 al lugar desde el que estés accediendo. Si no se desea acceder a través del puerto 3000 en la URL, se puede redirigir el tráfico a través de un proxy inverso, por ejemplo con NGINX.
Integrando el acceso de Grafana con NGINX
Supongamos que se ha asignado la IP de la instancia EC2 al dominio https://grafana.dbigcloud.com.
- Instalar NGINX en Amazon linux.
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]# sudo amazon-linux-extras install nginx1.12
- Crear el fichero de configuración del sitio para NGINX /etc/nginx/conf.d/grafana.dbigcloud.com
- Añadir los datos de configuración para que redirija el tráfico del puerto 80 al 3000.
server {
listen 80; location / {
proxy_pass https://grafana.dbigcloud.com:3000/;
}
} - Ahora hay que editar el fichero de configuración de Grafana /etc/grafana/grafana.ini. Buscar la línea con la variable root_url, descomentarla y modificarla con el dominio que se haya configurado.
root_url = https://grafana.dbigcloud.com
- Por último, hay que reiniciar el servicio de Grafana y hacer un reload de NGINX.
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]$ sudo service grafana-server restart
Restarting grafana-server (via systemctl): [ OK ]
[Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.mlteue@iou.oeue@iou.o]$ sudo service nginx reload
Redirecting to /bin/systemctl reload nginx.service