Implementar un proxy inverso para Grafana no solo mejora la accesibilidad, sino que también refuerza la seguridad en las comunicaciones. Con herramientas como Nginx o Apache, puedes gestionar el tráfico de manera efectiva, habilitar HTTPS y proteger tu entorno de Grafana frente a accesos no autorizados.

¿Qué es Grafana?
Grafana es una plataforma de visualización de datos interactiva y de código abierto, desarrollada por Grafana Labs, que permite a los usuarios ver sus datos a través de gráficos y tablas unificados en un solo tablero (o múltiples tableros) para facilitar su interpretación y comprensión.
Además, permite realizar consultas y configurar alertas sobre la información y métricas provenientes de diferentes fuentes de datos, como servidores tradicionales, clústeres de Kubernetes o servicios en la nube, entre otros. Esto facilita el análisis de los datos, la identificación de tendencias y la detección de inconsistencias, lo que finalmente ayuda a mejorar la eficiencia de los procesos. Grafana se basa en principios abiertos y en la creencia de que los datos deben ser accesibles para toda la organización, no solo para un pequeño grupo de personas.
Este enfoque fomenta una cultura de apertura, innovación y colaboración, permitiendo que cualquier miembro del equipo que lo necesite pueda acceder y utilizar los datos de manera sencilla. Para aprovechar aún más sus capacidades, muchas organizaciones implementan un proxy inverso para Grafana, asegurando un acceso seguro y controlado.
Cuáles son sus funciones?
Grafana ofrece una amplia variedad de funciones que aportan valor inmediato a los usuarios. Estas características son las que han hecho que Grafana se haya convertido en uno de los programas de visualización más populares para la supervisión de métricas, gracias a su facilidad de uso y su flexibilidad para integrarse con herramientas externas, como un proxy inverso para Grafana.
- Visualización/>
Grafana cuenta con una extensa gama de opciones de visualización que facilitan la comprensión de los datos. Estas opciones se dividen en “paneles”, los cuales se utilizan para crear los tableros de Grafana.
Un panel es el componente básico de visualización en Grafana y se usa para mostrar datos que han sido consultados desde la fuente de datos asignada a dicho panel. Para entenderlo de forma sencilla, imagina un panel como un espacio dentro del tablero donde se presenta un tipo específico de información visual.
Esta información proviene de la fuente de datos asociada al panel y puede presentarse en forma de gráficos (como medidores, histogramas, gráficos de barras, etc.), o incluso en forma de registros y alertas. Por ejemplo, se podría crear un panel de medidor con la fuente de datos configurada a Prometheus y luego consultar los datos de uso de la CPU almacenados en Prometheus para ser visualizados en este panel. En entornos donde se accede a estos datos desde fuera de la red interna, es habitual implementar un proxy inverso para Grafana para facilitar el acceso y mejorar la seguridad. - Alertas
Cuando se monitorean aplicaciones, es esencial ser notificado de inmediato cuando algo sale mal o cuando ocurre algo anómalo. Esto es clave para mantener la salud de los sistemas y reducir el tiempo de inactividad. Grafana ofrece soporte integrado para una gran cantidad de canales de notificación, como correo electrónico, Slack, PagerDuty, entre otros, lo que te permite elegir el que mejor se adapte a tus necesidades.
Para entornos distribuidos o externos, es común utilizar un proxy inverso para Grafana, el cual actúa como intermediario para gestionar las comunicaciones entrantes y salientes de forma segura. - Anotaciones
Grafana permite realizar anotaciones, o lo que es lo mismo, dejar notas directamente sobre los gráficos. Esta función sencilla pero poderosa ofrece una forma de marcar puntos importantes en tu gráfico. Puedes usarla como recordatorio para futuras acciones, proporcionar contexto a un miembro del equipo o marcar un evento especial.
Gracias a la implementación de un proxy inverso para Grafana, estas funciones también pueden mantenerse disponibles para los equipos remotos sin exponer directamente los servidores internos. - Código Abierto
Grafana es completamente de código abierto y cuenta con una comunidad activa y vibrante. Esto brinda grandes beneficios a sus usuarios, como la flexibilidad para desarrollar y publicar sus propios complementos o utilizar los desarrollados por otros. Estos complementos suelen ser fáciles de instalar, simplemente descargando el código fuente y ejecutándolo manualmente.
Sin embargo, su naturaleza de código abierto también conlleva algunos inconvenientes. Por ejemplo, deberás mantener tu instancia de Grafana de manera manual, realizar actualizaciones por ti mismo, entre otros. En estos casos, la integración de un proxy inverso para Grafana facilita considerablemente el despliegue en entornos productivos al simplificar el acceso externo y centralizar la gestión de seguridad.
Proxy inverso en Grafana
¿Por qué se usa un proxy inverso en Grafana?
En Grafana, el uso de un proxy inverso para Grafana es fundamental para mejorar varios aspectos del sistema.

- Seguridad adicional: Un proxy inverso para Grafana, como Nginx, Apache o Traefik, gestiona los certificados SSL/TLS para habilitar HTTPS, lo que garantiza la seguridad en las comunicaciones entre los usuarios y el servidor de Grafana. Esto significa que, aunque Grafana pueda funcionar internamente con HTTP simple, hacia el exterior se presenta como HTTPS, protegiendo así los datos durante su transmisión.
- Control de acceso: Con el proxy inverso para Grafana, puedes implementar controles de acceso y autenticación antes de que las solicitudes lleguen a Grafana. Esto incluye restricciones basadas en direcciones IP, la aplicación de un firewall de aplicaciones web (WAF) o la integración con sistemas de autenticación única (SSO) externos, asegurando que solo los usuarios autorizados puedan acceder a la plataforma.
- Balanceo de carga: Si cuentas con varias instancias de Grafana (por ejemplo, en un entorno de alta disponibilidad), un proxy inverso para Grafana permite distribuir el tráfico de manera equilibrada entre ellas. Esto asegura que el rendimiento de Grafana no se vea afectado por un exceso de usuarios conectados a una sola instancia.
- Configuración de puertos y rutas: En ocasiones, es necesario acceder a Grafana a través de una URL o subdominio específicos, como https://monitoring.miempresa.com/grafana, sin necesidad de realizar una configuración compleja dentro de Grafana mismo. El proxy inverso para Grafana facilita esta tarea al redirigir correctamente las rutas sin alterar la configuración interna del servidor.
- Compatibilidad con firewalls corporativos: Muchas redes corporativas solo permiten el tráfico HTTPS estándar a través del puerto 443. Utilizar un proxy inverso para Grafana permite adaptar la herramienta a estas políticas, asegurando que funcione correctamente en entornos donde el acceso directo al servidor no es posible sin cumplir con estas restricciones.
Cómo configurar un proxy inverso en Grafana
Cuando se ejecuta Grafana detrás de un proxy, es esencial configurar el nombre de dominio para que Grafana pueda renderizar correctamente los enlaces y las redirecciones. Aquí te explicamos cómo configurarlo según diferentes entornos.
Configurar Grafana: En el archivo de configuración de Grafana, cambia el parámetro server.domain al nombre de dominio que usarás para acceder a Grafana:
[server]
domain = ejemplo.com |
Luego, reinicia Grafana para que los cambios surtan efecto.
Configurar Nginx:

Nginx es un servidor web, balanceador de carga y proxy inverso de alto rendimiento. En el archivo de configuración de Nginx dentro de la sección http, agrega lo siguiente:
# Esto es necesario para proxy de las conexiones WebSocket en Grafana Live
map $http_upgrade $connection_upgrade { default upgrade; ” close; } upstream grafana { server localhost:3000; } server { listen 80; root /usr/share/nginx/html; index index.html index.htm; location / { proxy_set_header Host $host; proxy_pass http://grafana; } # Proxy para conexiones WebSocket en Grafana Live location /api/live/ { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header Host $host; proxy_pass http://grafana; } } # Agrega una regla de reescritura en cada bloque de ubicación rewrite ^/grafana/(.*) /$1 break; |
Configurar HAProxy:

Para configurar HAProxy para servir Grafana en un subdirectorio, usa las siguientes configuraciones:
frontend http-in
bind *:80 use_backend grafana_backend if { path /grafana } or { path_beg /grafana/ } backend grafana_backend server grafana localhost:3000 http-request set-path %[path,regsub(^/grafana/?,/)] |
Configurar IIS:
Para usar IIS, primero asegúrate de que el módulo de reescritura de URL esté instalado. Luego, en el Administrador de IIS, crea una regla de entrada para el sitio principal con estas configuraciones:
- Patrón: grafana(/)?(.*)
- Marca la casilla Ignorar mayúsculas/minúsculas.
- Reescribe la URL a http://localhost:3000/{R:2}.
- Marca las casillas Agregar cadena de consulta y Detener procesamiento de reglas posteriores.
Esto generará la siguiente regla en el archivo web.config:
<rewrite>
<rules> <rule name=”Grafana” enabled=”true” stopProcessing=”true”> <match url=”grafana(/)?(.*)” /> <action type=”Rewrite” url=”http://localhost:3000/{R:2}” logRewrittenUrl=”false” /> </rule> </rules> </rewrite> |
Configurar Apache:
Para usar Apache como proxy, asegúrate de que el módulo mod_proxy esté instalado y habilitado. Ejecuta los siguientes comandos para habilitarlo:
a2enmod proxy
a2enmod proxy_http |
Luego, edita el archivo de configuración del sitio dentro de la sección <VirtualHost> y agrega las siguientes líneas:
ProxyPreserveHost on
ProxyPass / http://tu_servidor_grafana:3000 ProxyPassReverse / http://tu_servidor_grafana:3000 |
Para Grafana alojado en un subdirectorio, reemplaza el subdirectorio correspondiente como sigue:
ProxyPreserveHost on
ProxyPass /tu_subdirectorio http://tu_servidor_grafana:3000 ProxyPassReverse /tu_subdirectorio http://tu_servidor_grafana:3000 ProxyPass / http://tu_servidor_grafana:3000/tu_subdirectorio ProxyPassReverse / http://192.168.250.5:3000/tu_subdirectorio |
Asegúrate de que las líneas que hacen referencia al subdirectorio se coloquen antes de las que hacen referencia a la ruta raíz (“/”).
Configurar Traefi2k:

Traefik es un proxy de aplicaciones nativas en la nube. Usando el proveedor de Docker y las siguientes etiquetas, puedes configurar el enrutador y el servicio para el enrutamiento de dominio o subdominio:
labels:
traefik.http.routers.grafana.rule: Host(`grafana.ejemplo.com`) traefik.http.services.grafana.loadbalancer.server.port: 3000 |
Para desplegar en un subdirectorio, usa las siguientes etiquetas:
labels:
traefik.http.routers.grafana.rule: Host(`ejemplo.com`) && PathPrefix(`/grafana`) traefik.http.services.grafana.loadbalancer.server.port: 3000 |
Cada uno de estos métodos te permitirá configurar un proxy inverso de manera eficiente para servir Grafana, adaptándose a diferentes entornos de servidor y necesidades de infraestructura.
Conclusión
El uso de un proxy inverso para Grafana no solo optimiza el rendimiento y la seguridad de tu plataforma de visualización de datos, sino que también te permite personalizar el acceso y mantener el control sobre el tráfico que fluye hacia tu servidor. Ya sea para habilitar HTTPS, equilibrar la carga o gestionar el acceso, un proxy inverso es una solución esencial para cualquier entorno de producción de Grafana. Si te ha interesado este tema, te invitamos a explorar más artículos en chthulhu.com, nuestra página principal, para seguir aprendiendo sobre herramientas que pueden mejorar tu infraestructura y rendimiento.
¡No te lo pierdas!