728
Grafana es una conocida herramienta de visualización de código abierto que permite a los administradores crear y ver paneles interactivos para monitorear entornos. Docker es una herramienta que simplifica el despliegue de aplicaciones, incluida Grafana, y permite gestionarlas mucho más fácilmente. Consideremos cómo ejecutar y configurar las implementaciones de imágenes de Docker Grafana y los pasos necesarios.
¿Qué es Docker?
Docker es el estándar de facto para ejecutar contenedores en la empresa. Hace que la implementación de aplicaciones sea mucho más fácil, incluida la aplicación:
- Edificio
- embalaje
- Despliegue
Un contenedor es un paquete ejecutable independiente que contiene todo lo necesario para ejecutar una aplicación, incluido el código, los requisitos de tiempo de ejecución, las herramientas, las bibliotecas y los ajustes de configuración.
Los contenedores permiten a los desarrolladores tener un entorno de aplicación coherente, independientemente del host del contenedor en el que se ejecute la imagen de la aplicación. Facilita el desarrollo, la prueba y la implementación de aplicaciones en diferentes plataformas y entornos.
Muchas imágenes de Docker están disponibles para aplicaciones estándar, lo que hace que sea extremadamente fácil poner en marcha nuevas aplicaciones en la empresa. La mayoría de las imágenes están disponibles en Docker Hub para su descarga.
¿Qué es Grafana?
Grafana es una herramienta de supervisión y visualización de datos de código abierto y rica en funciones que le permite crear, explorar y compartir paneles. Grafana admite fuentes de datos como Prometheus, InfluxDB, Elasticsearch y más. Proporciona varias opciones de visualización, incluidos gráficos, tablas, mapas de calor y medidores, para ayudarlo a analizar y comprender sus datos.
¿Qué es Telegraf?
Telegraf es un agente de servidor de código abierto basado en complementos para recopilar e informar métricas. Es parte de la pila TICK de InfluxData, que comprende Telegraf, InfluxDB, Chronograf y Kapacitor. Telegraf puede recopilar métricas de varias fuentes, como métricas del sistema y API de terceros, o incluso escuchar las métricas enviadas por otras aplicaciones y luego enviar los datos recopilados a una amplia gama de almacenes de datos, como InfluxDB, Prometheus o los datos nativos de Grafana. almacenamiento.
Puede obtener más información sobre Telegraf y descargarlo aquí: Telégrafo | Influjo de datos
Junto con Grafana, Telegraf desempeña un papel crucial en la recopilación y el envío de datos de métricas para visualizarlos y analizarlos en los paneles de Grafana. Usando Telegraf como un recopilador de métricas, puede usar su extensa biblioteca de complementos de entrada, salida y procesador para recopilar datos de varias fuentes y enviarlos a Grafana u otros almacenes de datos compatibles.
Preparar Telegraf para InfluxDB y Docker
Para configurar Telegraf para InfluxDB y Docker:
- Instale Telegraf en su sistema host o ejecútelo como un contenedor Docker.
- Cree un archivo de configuración de Telegraf con los complementos de entrada para recopilar métricas de Docker y los complementos de salida para enviar los datos a InfluxDB.
- Inicie el agente de Telegraf con el archivo de configuración.
Configuración de Prometheus para que se ejecute en Docker
Prometheus es un kit de herramientas de monitoreo y alerta de código abierto diseñado para brindar confiabilidad y escalabilidad. Para configurar Prometheus para que se ejecute en Docker:
- Cree un archivo de configuración de Prometheus especificando los objetivos y el intervalo de recuperación.
- Extraiga la imagen oficial de Prometheus Docker con el siguiente comando:
docker pull prom/prometheus
- Ejecute un contenedor de Prometheus con el archivo de configuración usando el siguiente comando:
docker run -d -p 9090:9090 --name=prometheus -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
Este comando iniciará un nuevo contenedor de Prometheus, lo expondrá en el puerto 9090 y usará un montaje de volumen persistente para el archivo de configuración.
Creación de un archivo de configuración para Telegraf y Docker
Para crear un archivo de configuración para Telegraf y Docker, siga estos pasos:
- Crear un nuevo archivo llamado telegraf.conf.
- Configure los complementos de entrada para recopilar las métricas del contenedor de Docker agregando las siguientes líneas al archivo:
[[inputs.docker]] endpoint = "unix:///var/run/docker.sock" gather_services = false
- Configure los complementos de salida para enviar los datos a InfluxDB agregando las siguientes líneas al archivo:
[[outputs.influxdb]] urls = ["http://influxdb:8086"] database = "telegraf"
- Guarde el archivo e inicie el agente de Telegraf con el archivo de configuración usando el siguiente comando:
telegraf --config telegraf.conf
Instalación de Grafana en Docker
Para instalar Grafana en Docker:
- Extraiga la imagen oficial de Grafana Docker con el siguiente comando:
docker pull grafana/grafana
- Ejecute un contenedor de Grafana con el siguiente comando:
docker run -d -p 3000:3000 --name=grafana grafana/grafana
Este comando iniciará y expondrá un nuevo contenedor de Grafana en el puerto 3000.
Puede usar parámetros adicionales para configurar el almacenamiento persistente. - Configure el almacenamiento persistente para los datos de Grafana utilizando volúmenes de Docker o montajes de enlace. Por ejemplo:
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana
Este comando crea un volumen con nombre llamado grafana-almacenamiento y lo monta en /var/lib/grafana dentro del contenedor.
- Configure variables de entorno para Grafana, como la contraseña de administrador, agregando el -mi bandera a la ejecución de la ventana acoplable dominio. Por ejemplo:
docker run -d -p 3000:3000 --name=grafana -e "GF_SECURITY_ADMIN_PASSWORD=mysecret" grafana/grafana
- Habilite los complementos de Grafana agregando el GF_INSTALL_PLUGINS variable de entorno y especificando una lista separada por comas de nombres de complementos. Por ejemplo:
docker run -d -p 3000:3000 --name=grafana -e "GF_INSTALL_PLUGINS=grafana-clock-panel
Ejecutar y configurar el contenedor docker de Grafana monitorea y visualiza de manera eficiente las métricas de varias fuentes.
Acceso a las métricas de Docker
Para acceder a las métricas de Docker recopiladas por Telegraf y almacenadas en InfluxDB:
- Acceda a la interfaz de usuario de Grafana en http://localhost:3000.
- Inicie sesión con el usuario y la contraseña de administrador predeterminados (administración/administración).
- Cree una nueva fuente de datos para InfluxDB con la base de datos de Telegraf.
- Cree un nuevo tablero y agregue paneles para visualizar las métricas de Docker.
Ejecutando Prometheus y Grafana usando Docker Compose
Para ejecutar Prometheus y Grafana en Docker simultáneamente, puede usar Docker Compose. Crear un docker-compose.yml archivo con el siguiente contenido:
version: "3" services: prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" grafana: image: grafana/grafana volumes: - grafana-storage:/var/lib/grafana ports: - "3000:3000" volumes: grafana-storage:
Entonces corre ventana acoplable-componer hasta -d para iniciar ambos servicios en modo daemon.
Creación de visualización en Grafana
Para crear visualizaciones en Grafana:
- Acceda a la interfaz de usuario de Grafana en http://localhost:3000.
- Inicie sesión con el usuario administrador y la contraseña.
- Cree un nuevo panel haciendo clic en el ícono «+» en la barra lateral izquierda y seleccionando «Panel».
- Agregue un nuevo panel al tablero haciendo clic en el botón «Agregar panel».
- Seleccione la fuente de datos (Prometheus o InfluxDB) y configure las opciones de consulta y visualización del panel.
- Guarde el tablero, compártalo con su equipo o insértelo en otras aplicaciones.
Imagen personalizada de Grafana Docker
A veces, es posible que desee crear una imagen Grafana Docker personalizada con complementos preinstalados, archivos de configuración personalizados u otras personalizaciones. Para ello, puede crear un Dockerfile y crea una nueva imagen basada en la imagen oficial de Grafana Docker.
- Crear un Dockerfile con el siguiente contenido:
FROM grafana/grafana # Install plugins ENV GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource # Copy custom configuration files COPY grafana.ini /etc/grafana/grafana.ini COPY custom.ini /etc/grafana/custom.ini
- Cree la imagen personalizada de Grafana Docker con el siguiente comando:
docker build -t my-grafana
- Ejecute un contenedor basado en la imagen personalizada:
docker run -d -p 3000:3000 --name=grafana my-grafana
Gestión de datos de Grafana
Grafana almacena sus datos en el /var/lib/grafana directorio dentro del contenedor. Puede usar volúmenes de Docker o montar montajes para conservar estos datos en los reinicios y actualizaciones de contenedores.
- Usando volúmenes de Docker:
docker run -d -p 3000:3000 --name=grafana -v grafana-storage:/var/lib/grafana grafana/grafana
Este comando crea un volumen con nombre llamado grafana-almacenamiento y lo monta en /var/lib/grafana dentro del contenedor.
- Usando montajes de enlace:
docker run -d -p 3000:3000 --name=grafana -v /path/to/grafana/data:/var/lib/grafana grafana/grafana
Este comando monta un directorio local (/ruta/a/grafana/datos) a /var/lib/grafana dentro del contenedor.
Asegúrese de que el directorio local y su contenido tengan los permisos correctos para que el usuario de Grafana (UID 472) lea y escriba datos.
Complementos CLI de Grafana
Grafana CLI es una herramienta de línea de comandos para administrar las instalaciones de Grafana. Se puede usar para instalar y actualizar complementos, restablecer la contraseña de administrador y realizar otras tareas.
Para ejecutar los comandos de la CLI de Grafana dentro de un contenedor de Grafana en ejecución, use el ejecutivo acoplable dominio. Por ejemplo, para enumerar los complementos instalados:
docker exec -it grafana grafana-cli plugins ls
Configuración de la base de datos InfluxDB
InfluxDB es una base de datos de series temporales popular que se puede utilizar como fuente de datos para Grafana. Para almacenar métricas de Docker en InfluxDB, debe configurar Telegraf para recopilarlas y escribirlas en una base de datos de InfluxDB.
- Instale InfluxDB en su host o ejecútelo como un contenedor Docker:
docker run -d -p 8086:8086 --name=influxdb influxdb
- Cree una nueva base de datos InfluxDB para las métricas de Docker:
curl -X POST 'http://localhost:8086/query' --data-urlencode 'q=CREATE DATABASE telegraf'
- Actualice el archivo de configuración de Telegraf (telegraf.conf) para habilitar el complemento de salida InfluxDB y configurarlo para usar la nueva base de datos:
[[outputs.influxdb]] urls = ["http://localhost:8086"] database = "telegraf"
- Reinicie el contenedor de Telegraf para aplicar la nueva configuración:
docker restart telegraf
Adición de la fuente de datos de Redis para el complemento de Grafana
Si desea monitorear una instancia de Redis usando Grafana, puede instalar un complemento de Grafana para Redis y configurarlo como una fuente de datos. Los siguientes pasos demuestran cómo agregar una fuente de datos de Redis a Grafana:
- Instale el complemento de Redis usando la CLI de Grafana dentro del contenedor de Grafana:
docker exec -it grafana grafana-cli plugins install redis-datasource
- Reinicie el contenedor de Grafana para cargar el nuevo complemento:
docker restart grafana
- Inicie sesión en la interfaz de usuario de Grafana y vaya a «Configuración» > «Fuentes de datos».
- Haga clic en «Agregar fuente de datos» y seleccione «Redis» de la lista de fuentes de datos disponibles.
- Proporcione la información necesaria para conectarse a su instancia de Redis, como la URL, el puerto y la contraseña (si es necesario). Guarde la configuración.
Ahora puede usar la fuente de datos de Redis para crear paneles y tableros en Grafana que muestren las métricas de Redis.
Supervisión de contenedores Docker con un panel de Grafana
Una vez que se configura Grafana y se agregan las fuentes de datos necesarias, puede crear paneles personalizados para monitorear sus contenedores Docker. La combinación de datos de InfluxDB, Prometheus y Redis puede crear una vista completa del rendimiento, el uso de recursos y el estado general de sus contenedores.
Creación de un panel de control de contenedores de Docker
- Inicie sesión en la interfaz de usuario de Grafana y haga clic en el ícono «+» en la barra lateral izquierda, luego seleccione «Panel».
- Haga clic en «Agregar nuevo panel» para comenzar a crear una nueva visualización.
- Elija la fuente de datos para su panel, como InfluxDB para las métricas de contenedores de Docker o Prometheus para las métricas específicas de la aplicación.
- Escriba una consulta para obtener los datos que desea visualizar. Por ejemplo, para mostrar el uso de CPU de un contenedor Docker específico, puede usar una consulta como:
SELECT mean("usage_percent") FROM "docker_container_cpu" WHERE "container_name" = 'your-container-name' AND $timeFilter GROUP BY time($__interval) fill(null)
- Elija el tipo de visualización adecuado, como un gráfico o un indicador, y personalice la configuración del panel según sea necesario.
- Guarde el panel y el tablero.
A continuación se muestra cómo puede usar las métricas extraídas de las fuentes de datos para crear consultas personalizadas.
Ampliar las métricas de las fuentes de datos.
Importación de paneles de Grafana prediseñados
Grafana ofrece una variedad de paneles preconstruidos creados por la comunidad que pueden ayudarlo a monitorear sus contenedores Docker rápidamente. Para importar un tablero preconstruido:
- Visita el Tableros de Grafana y busque un tablero relacionado con Docker o su fuente de datos específica.
- Haga clic en el tablero deseado y anote el ID del tablero.
- Inicie sesión en la interfaz de usuario de Grafana, haga clic en el ícono «+» en la barra lateral izquierda y seleccione «Importar».
- Ingrese la ID del tablero y haga clic en «Cargar».
- Seleccione las fuentes de datos que desea usar con el tablero y haga clic en «Importar».
Ahora puede usar el tablero importado para monitorear sus contenedores Docker y personalizarlo según sea necesario.
Configuración de alertas en Grafana
Grafana le permite configurar alertas basadas en condiciones específicas en sus datos, como un alto uso de CPU o poca memoria disponible. Para configurar una alerta:
- Abra un panel con un panel para el que desee crear una alerta.
- Haga clic en el título del panel y seleccione «Editar».
- Haga clic en la pestaña «Alerta» y haga clic en «Crear alerta».
- Configure las condiciones de alerta, el intervalo de evaluación y los ajustes de notificación.
- Guarde el panel y el tablero.
Grafana ahora monitoreará sus datos y activará la acción de alerta especificada, como enviar un correo electrónico o un webhook, cuando se cumplan las condiciones de alerta.
Terminando
Al combinar Docker, InfluxDB, Telegraf y Grafana, entre otros, puede tener una solución de monitoreo sólida que se ejecuta en tecnologías nativas de la nube. Los contenedores Docker facilitan enormemente el aprovisionamiento de estas soluciones, ya que la imagen de la aplicación contiene todo lo necesario para que la aplicación se ejecute como se espera, incluidos los requisitos previos. Grafana contiene muchos paneles de código abierto fácilmente disponibles que puede descargar e importar fácilmente en el entorno, por lo que no tiene que crear paneles para monitorear manualmente.