GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo ejecutar Grafana en un contenedor Docker

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.

Cómo empezar

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 inicie 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 anclarse a una versión específica para que no reciba involuntariamente cambios importantes a medida que se publican nuevas actualizaciones. Omitir el nombre del SO (grafana/grafana:8.3.0 ) le dará la variante Alpine de su versión seleccionada.

Creando 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 -v bandera. Está montado en /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 las claves de configuración de Grafana configurando variables de entorno cuando inicia su contenedor. Puede cambiar cualquiera de las claves en los archivos de configuración de formato INI de Grafana escribiendo en mayúscula 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 DEFAULT implícito 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 de la configuración 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 vinculación (-v ./password.txt:/run/secrets/password ) o un sistema de gestión de secretos dedicado como Docker Secrets. 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.

Anulación del 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 utilizando 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 generar valores dinámicos. Los archivos de configuración también admiten comentarios que le permiten documentar sus intenciones de 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 auxiliar 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 el catálogo de 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

El 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 a la grafana-cli plugins install dominio. Esto significa que puede incluir expresiones de versión, como grafana-simple-json-datasource 1.1.0 y 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

Creando una imagen personalizada

Abrir 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 extienda el grafana/grafana oficial imagen. Esto le da 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

Usa tu Dockerfile para construir tu 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 de 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 Dockerized Grafana funciona como una normal. Puede conectar fuentes de datos, interactuar con la API HTTP y 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.


Docker
  1. ¿Cómo ejecutar un programa dentro de un contenedor Docker?

  2. Cómo usar SSH en un contenedor Docker

  3. Cómo ejecutar un comando en un contenedor Docker en ejecución

  4. Cómo asignar una IP estática a un contenedor Docker

  5. Cómo listar contenedores Docker

Cómo ejecutar la pila ELK en Docker Container

Cómo usar SSH en un contenedor Docker y ejecutar comandos

Cómo ejecutar una aplicación .NET en Docker

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo configurar un contenedor Apache Docker

Cómo ejecutar contenedores Docker