Cómo ejecutar Grafana en un contenedor Docker – CloudSavvy IT

logotipo de Grafana

Grafana es una plataforma de observabilidad líder para la visualización de métricas. Le permite crear paneles personalizados para mostrar información significativa de los flujos de datos en tiempo real de su aplicación.

Grafana es una aplicación nativa de la nube que está lista para lanzarse en proveedores de infraestructura populares, instalarse en su propio hardware o implementarse como un contenedor independiente. En esta guía nos centraremos en la última opción mediante el uso de la imagen oficial de Grafana para iniciar una instancia que se ejecuta en Docker.

Empezando

La creación de contenedores de Grafana más simple se ve así:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

Tendrá un nuevo servidor Grafana accesible en el puerto 3000. Visite http://localhost:3000 e inicia sesión como admin/admin.

Ahora puede comenzar a agregar fuentes de datos y tableros para crear sus visualizaciones. Presione el botón «Agregar su primera fuente de datos» en la página de inicio para conectar una nueva fuente; seleccione el tipo de proveedor en la siguiente pantalla, luego complete los detalles para que Grafana pueda acceder a sus datos.

A continuación, regrese a la página de inicio y haga clic en «Crear su primer tablero». Elija su tipo de visualización preferido y luego use el panel de consulta para seleccionar las métricas apropiadas de sus datos. Una vez que haya terminado, su nueva visualización se mostrará en su tablero.

Este procedimiento demuestra la facilidad con la que puede iniciar una instancia de prueba desechable de Grafana. Sin embargo, ejecutar un contenedor listo para producción requiere un poco más de reflexión. Aquí hay un enfoque más completo que está mejor equipado para el uso a largo plazo.

Selección de una variante de imagen

Grafana utiliza un modelo de negocio de doble licencia. La edición de código abierto se publica como grafana/grafana en Docker Hub mientras que Enterprise es grafana/grafana-enterprise. Las siguientes instrucciones funcionarán con estas dos variantes de nivel superior.

Hay varias versiones de Grafana disponibles, cada una en versión Alpine o Ubuntu. Se debe preferir Alpine en la mayoría de las situaciones de implementación: es más delgado y se enfoca en proporcionar un entorno compatible con Grafana sin extras superfluos.

El sistema operativo se selecciona agregando su nombre después de la versión de Grafana en una etiqueta de imagen:

grafana/grafana:8.3.0-ubuntu

Siempre es mejor anclar a una versión específica para que no reciba involuntariamente cambios importantes a medida que se publican nuevas actualizaciones. Omitir el nombre del sistema operativo (grafana/grafana:8.3.0) le dará la variante Alpine de su versión seleccionada.

Crear un contenedor

Grafana tiene requisitos de implementación relativamente sencillos. Debe montar un volumen de Docker para almacenar sus datos persistentes y vincular un puerto de host para poder acceder al servicio. La configuración se puede proporcionar montando un archivo de configuración en el contenedor o inyectando variables de entorno.

docker run -d --name grafana -p 9000:3000 
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

Este ejemplo inicia un nuevo contenedor Grafana llamado grafana que escucha en el puerto 9000 en su host Docker. El puerto está vinculado a 3000 en el contenedor, ya que esta es la dirección de escucha predeterminada de Grafana.

Un volumen Docker llamado grafana-data es referenciado por el -v bandera. esta montado a /var/lib/grafana dentro del contenedor, donde Grafana almacena todos sus datos generados. El montaje de volumen significa que el contenido del directorio se almacenará fuera del contenedor, evitando la pérdida de datos cuando el contenedor se detiene o su host se reinicia.

Configuración de inyección

Puede anular la de Grafana claves de configuración configurando variables de entorno cuando inicia su contenedor. Puede cambiar cualquiera de las claves en los archivos de configuración en formato INI de Grafana escribiendo en mayúsculas el nombre de la clave y anteponiendo GF_:

# INI file
instance_name = my-grafana

[security]
admin_user = demo
admin_password = grafana

---

# Corresponding environment variables
GF_DEFAULT_INSTANCE_NAME=my-grafana
GF_SECURITY_ADMIN_USER=demo
GF_SECURITY_ADMIN_PASSWORD=grafana

Asegúrate de incluir el implícito DEFAULT nombre de la sección cuando cambia el valor de una variable de nivel superior en el archivo de configuración.

Una vez que haya resuelto qué valores desea cambiar, proporcione las variables de entorno correctas con -e banderas cuando inicia su contenedor:

docker run -d --name grafana -p 9000:3000 
    -e GF_DEFAULT_INSTANCE_NAME=my-grafana
    -e GF_SECURITY_ADMIN_USER=demo
    -e GF_SECURITY_ADMIN_PASSWORD=grafana
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

Grafana también admite la configuración basada en archivos. Con este mecanismo, el valor de la variable de entorno de destino se convierte en la ruta a un archivo disponible dentro del contenedor. Grafana obtendrá el valor real del ajuste leyendo el archivo.

Para usar este enfoque, modifique cualquier variable de entorno agregando el sufijo __FILE a su nombre habitual:

docker run -d --name grafana -p 9000:3000 
    -e GF_DEFAULT_INSTANCE_NAME=my-grafana
    -e GF_SECURITY_ADMIN_USER=demo
    -e GF_SECURITY_ADMIN_PASSWORD__FILE=/run/secrets/password
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

Puede agregar el archivo al contenedor usando un montaje de enlace (-v ./password.txt:/run/secrets/password) o un sistema de gestión de secretos dedicado como Secretos de Docker. La configuración basada en archivos proporciona una forma más segura de inyectar valores confidenciales que preferiría no exponer como texto sin formato en los registros de trabajo de CI y el historial de su shell.

Anulando el archivo de configuración

Siempre puede anular el archivo de configuración en disco de Grafana si está cambiando demasiados valores para que las variables de entorno sean convenientes.

La imagen de Docker ubica este archivo en /etc/grafana/grafana.ini. Puede montar un reemplazo en la ruta esperada usando un montaje de vinculación de Docker:

docker run -d --name grafana -p 9000:3000 
    -v ./grafana.ini:/etc/grafana/grafana.ini
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

El uso de un archivo de configuración facilita la inyección de configuraciones más complicadas. Puede interpolar variables para construir valores dinámicos. Los archivos de configuración también admiten comentarios que le permiten documentar sus intenciones para ayudar a los futuros mantenedores.

Administración de complementos

Muchas instalaciones de Grafana requieren complementos que agregan fuentes de datos adicionales o proporcionan paneles de control prediseñados. La imagen de Docker incluye una utilidad de ayuda que le permite agregar complementos a un nuevo contenedor configurando una variable de entorno especial.

Aquí se explica cómo agregar un complemento oficial que se encuentra en la lista Catálogo Grafana:

docker run -d --name grafana -p 9000:3000 
    -e GF_INSTALL_PLUGINS=grafana-simple-json-datasource
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

los GF_INSTALL_PLUGINS variable espera que se instale una lista separada por comas de nombres de complementos cuando se inicia el contenedor por primera vez. Los nombres se pasarán al grafana-cli plugins install mando. Esto significa que puede incluir expresiones de versión, como grafana-simple-json-datasource 1.1.0y haga referencia a los complementos de la comunidad a través de su URL:

docker run -d --name grafana -p 9000:3000 
    -e GF_INSTALL_PLUGINS=https://example.com/grafana-plugin.zip
    -v grafana-data:/var/lib/grafana
    grafana/grafana:8.3.0

Creación de una imagen personalizada

Levantar manualmente los contenedores de Grafana con la configuración suministrada a través de docker run flags es repetitivo y propenso a errores. Crear su propia imagen de Docker con sus modificaciones incluidas ahorra tiempo y centraliza la configuración cuando varios miembros del equipo necesitan poder activar una nueva instancia.

Puede lograr esto escribiendo un Dockerfile que amplíe el oficial grafana/grafana imagen. Esto le brinda la oportunidad de copiar en un archivo de configuración personalizado y establecer cualquier variable de entorno adicional que necesite.

FROM grafana/grafana:8.3.0

# Add plugins
ENV GF_INSTALL_PLUGINS=grafana-simple-json-datasource

# Copy a config file from your working directory
COPY grafana.ini /etc/grafana/grafana.ini

Use su Dockerfile para construir su nueva imagen de Grafana:

docker build -t custom-grafana:latest .

Ahora puede iniciar una instancia de contenedor preconfigurada desde su imagen:

docker run -d --name grafana -p 9000:3000 
    -v grafana-data:/var/lib/grafana
    custom-grafana:latest

Este enfoque es particularmente útil cuando ha realizado amplias modificaciones en su entorno de Grafana. Ahora puede reproducir de forma fiable su configuración cada vez que inicia un contenedor. Esto también ayuda a los cambios de versión en su instalación a lo largo del tiempo.

Un inconveniente es la necesidad de reconstruir su imagen cuando se publican actualizaciones de Grafana. Tendrás que tirar periódicamente grafana/grafana, docker build su imagen, insértela en un registro y luego extraiga la nueva versión en su host Docker. La etapa final es recrear sus contenedores en ejecución para que usen la imagen actualizada.

Resumen

Docker simplifica la instalación y configuración de Grafana al proporcionar un entorno aislado en el que puede alojar su plataforma de observabilidad. Puede iniciar rápidamente nuevas instancias de Grafana vinculando un puerto de host, montando un volumen de datos y proporcionando valores de configuración a través de variables de entorno. Más tarde, puede encapsular su configuración en su propia imagen reutilizable que se basa en la base oficial.

Una vez que está en funcionamiento, una instalación de Dockerized Grafana funciona como una normal. Puede conectar fuentes de datosinteractuar con el API HTTPy configurar alertas apuntando al puerto de host que vinculó a su contenedor. También puede asignar a su instancia un nombre de dominio y configurar HTTPS sirviéndolo detrás de un proxy inverso como Apache o Traefik.

Deja un comentario

En esta web usamos cookies para personalizar tu experiencia de usuario.    Política de cookies
Privacidad