LINUX

Cómo monitorear contenedores Docker usando Grafana en Ubuntu

Grafana es un panel de métricas rico en funciones de código abierto. Es muy útil para visualizar datos de medición a gran escala. Proporciona una forma poderosa y elegante de crear, compartir y explorar datos y paneles de sus bases de datos de métricas dispares.

Admite una amplia variedad de opciones de gráficos para una máxima flexibilidad. Además, admite muchos backends de almacenamiento diferentes para su fuente de datos. Cada fuente de datos tiene un editor de consultas específico que se personaliza para las características y capacidades que expone la fuente de datos en particular. Grafana admite oficialmente las siguientes fuentes de datos: Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch y Cloudwatch

El lenguaje de consulta y las capacidades de cada fuente de datos son obviamente muy diferentes. Puede combinar datos de varias fuentes de datos en un solo panel, pero cada panel está vinculado a una fuente de datos específica que pertenece a una organización en particular. Admite inicio de sesión autenticado y una implementación de control de acceso basada en roles básicos. Se implementa como una única instalación de software escrita en Go y Javascript.

En este artículo, explicaré cómo instalar Grafana en un contenedor de Docker en Ubuntu 16.04 y configurar el monitoreo de Docker con este software.

Prerrequisitos

Instalación de Grafana

Podemos construir nuestro Grafana en un contenedor docker. Hay una imagen de Docker oficial disponible para construir Grafana. Ejecute este comando para crear un contenedor Grafana.

root@ubuntu:~# docker run -i -p 3000:3000 grafana/grafana

Unable to find image 'grafana/grafana:latest' locally
latest: Pulling from grafana/grafana
5c90d4a2d1a8: Pull complete
b1a9a0b6158e: Pull complete
acb23b0d58de: Pull complete
Digest: sha256:34ca2f9c7986cb2d115eea373083f7150a2b9b753210546d14477e2276074ae1
Status: Downloaded newer image for grafana/grafana:latest
t=2016-07-27T15:20:19+0000 lvl=info msg="Starting Grafana" logger=main version=3.1.0 commit=v3.1.0 compiled=2016-07-12T06:42:28+0000
t=2016-07-27T15:20:19+0000 lvl=info msg="Config loaded from" logger=settings file=/usr/share/grafana/conf/defaults.ini
t=2016-07-27T15:20:19+0000 lvl=info msg="Config loaded from" logger=settings file=/etc/grafana/grafana.ini
t=2016-07-27T15:20:19+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.data=/var/lib/grafana"
t=2016-07-27T15:20:19+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.logs=/var/log/grafana"
t=2016-07-27T15:20:19+0000 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.plugins=/var/lib/grafana/plugins"
t=2016-07-27T15:20:19+0000 lvl=info msg="Path Home" logger=settings path=/usr/share/grafana
t=2016-07-27T15:20:19+0000 lvl=info msg="Path Data" logger=settings path=/var/lib/grafana
t=2016-07-27T15:20:19+0000 lvl=info msg="Path Logs" logger=settings path=/var/log/grafana
t=2016-07-27T15:20:19+0000 lvl=info msg="Path Plugins" logger=settings path=/var/lib/grafana/plugins
t=2016-07-27T15:20:19+0000 lvl=info msg="Initializing DB" logger=sqlstore dbtype=sqlite3

t=2016-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="create playlist table v2"
t=2016-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="create playlist item table v2"
t=2016-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v2"
t=2016-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v3"
t=2016-07-27T15:20:20+0000 lvl=info msg="Executing migration" logger=migrator id="create preferences table v3"
t=2016-07-27T15:20:20+0000 lvl=info msg="Created default admin user: [admin]"
t=2016-07-27T15:20:20+0000 lvl=info msg="Starting plugin search" logger=plugins
t=2016-07-27T15:20:20+0000 lvl=info msg="Server Listening" logger=server address=0.0.0.0:3000 protocol=http subUrl=

Podemos confirmar el funcionamiento del contenedor Grafana ejecutando este comando «docker ps -a » o accediendo a él por URL http: // IP de Docker: 3000

Todos los ajustes de configuración de Grafana se definen mediante variables de entorno, lo que resulta muy útil cuando se utiliza tecnología de contenedores. El archivo de configuración de Grafana se encuentra en /etc/grafana/grafana.ini.

Comprensión de la configuración

Grafana tiene varias opciones de configuración que se pueden especificar en su archivo de configuración como archivo .ini o se pueden especificar usando variables de entorno como se mencionó anteriormente.

Ubicaciones de archivos de configuración

Ubicaciones normales de archivos de configuración.

  • Configuración predeterminada de: $ WORKING_DIR / conf / defaults.ini
  • Configuración personalizada de: $ WORKING_DIR / conf / custom.ini

PD: cuando instala Grafana utilizando los paquetes deb o rpm o las imágenes de la ventana acoplable, su archivo de configuración se encuentra en /etc/grafana/grafana.ini

Entendiendo las variables de configuración

Veamos algunas de las variables en el archivo de configuración a continuación:

nombre de instancia : Es el nombre de la instancia del servidor grafana. Su valor predeterminado se obtiene de $ {HOSTNAME}, que se reemplazará con la variable de entorno HOSTNAME, si está vacía o no existe, Grafana intentará usar llamadas al sistema para obtener el nombre de la máquina.

[paths]

datos : Es la ruta donde Grafana almacena la base de datos sqlite3 (cuando se usa), las sesiones basadas en archivos (cuando se usan) y otros datos.

registros : Es donde Grafana almacena los registros.

Ambas rutas generalmente se especifican a través de la línea de comandos en los scripts init.d o en el archivo de servicio systemd.

[server]

http_addr: La dirección IP para vincular la aplicación. Si se deja vacío, se vinculará a todas las interfaces.

http_port: El puerto al que se vincula la aplicación, el valor predeterminado es 3000. Puede redirigir su puerto 80 a 3000 usando el siguiente comando.

$iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

root_url: Esta es la URL utilizada para acceder a Grafana desde un navegador web.

cert_file: Ruta al archivo de certificado (si el protocolo está configurado en https).

cert_key: Ruta al archivo de clave del certificado (si el protocolo está configurado en https).

[database]

Grafana utiliza una base de datos para almacenar sus usuarios y paneles y otra información. De forma predeterminada, está configurado para usar sqlite3, que es una base de datos incrustada incluida en el binario principal de Grafana.

escribe
Puede elegir mysql, postgres o sqlite3 según nuestro requisito.

camino
Es aplicable solo para la base de datos sqlite3. La ruta del archivo donde se almacenará la base de datos.

anfitrión
Es aplicable solo a MySQL o Postgres. incluye IP o nombre de host y puerto. Por ejemplo, para MySQL ejecutándose en el mismo host que Grafana: host = 127.0.0.1:3306

nombre
El nombre de la base de datos de Grafana. Déjelo configurado en grafana o algún otro nombre.

usuario
El usuario de la base de datos (no aplicable para sqlite3).

contraseña
La contraseña del usuario de la base de datos (no aplicable para sqlite3).

ssl_mode
Para Postgres, use deshabilitar, requerir o verificar completo. Para MySQL, use true, false o skip-verify.

ca_cert_path
(Solo MySQL) La ruta al certificado CA que se utilizará. En muchos sistemas Linux, los certificados se pueden encontrar en / etc / ssl / certs.

ruta_clave_cliente
(Solo MySQL) La ruta a la clave del cliente. Solo si el servidor requiere autenticación de cliente.

client_cert_path
(Solo MySQL) La ruta al certificado de cliente. Solo si el servidor requiere autenticación de cliente.

server_cert_name
(Solo MySQL) El campo de nombre común del certificado utilizado por el servidor mysql. No es necesario si ssl_mode está configurado para omitir-verificar.

[security]
admin_user: Es el nombre del usuario administrador de Grafana predeterminado. El nombre predeterminado establecido es admin.

clave de administrador : Es la contraseña del administrador de Grafana predeterminado. Está configurado en primera ejecución. La contraseña predeterminada es admin.

login_remember_days: La cantidad de días que dura la cookie de mantenerme conectado / recordarme.

llave secreta : Se utiliza para firmar, mantenerme conectado / recordar las cookies.

Componentes esenciales para configurar el monitoreo

Usamos los siguientes componentes para crear nuestro sistema de monitoreo de Docker.

Asesor: De lo contrario, se denomina Container Advisor. Proporciona a sus usuarios una comprensión del uso de recursos y las características de rendimiento. Recopila, agrega, procesa y exporta información sobre los contenedores en ejecución. Puedes pasar por esto documentación para obtener más información sobre esto.

InfluxDB: Es una base de datos analítica, métrica y de series de tiempo. Usamos esta fuente de datos para configurar nuestro monitoreo. cAdvisor muestra solo información en tiempo real y no almacena las métricas. Influx Db ayuda a almacenar la información de monitoreo que proporciona cAdvisor para mostrar un rango de tiempo diferente al tiempo real.

Panel de Grafana: Nos permite combinar visualmente todas las piezas de información. Este poderoso Tablero nos permite ejecutar consultas en el almacén de datos InfluxDB y representarlas en un hermoso diseño.

Instalación de Docker Monitoring

Necesitamos instalar cada uno de estos componentes uno por uno en nuestro sistema de ventana acoplable.

Instalación de InfluxDB

Podemos usar este comando para extraer la imagen de InfluxDB y configurar un contenedor de influxDB.

root@ubuntu:~# docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 -e PRE_CREATE_DB=cadvisor --name influxsrv tutum/influxdb:0.8.8
Unable to find image 'tutum/influxdb:0.8.8' locally
0.8.8: Pulling from tutum/influxdb
a3ed95caeb02: Already exists
23efb549476f: Already exists
aa2f8df21433: Already exists
ef072d3c9b41: Already exists
c9f371853f28: Already exists
a248b0871c3c: Already exists
749db6d368d0: Already exists
7d7c7d923e63: Pull complete
e47cc7808961: Pull complete
1743b6eeb23f: Pull complete
Digest: sha256:8494b31289b4dbc1d5b444e344ab1dda3e18b07f80517c3f9aae7d18133c0c42
Status: Downloaded newer image for tutum/influxdb:0.8.8
d3b6f7789e0d1d01fa4e0aacdb636c221421107d1df96808ecbe8e241ceb1823
    • -p 8083: 8083: interfaz de usuario, inicie sesión con username-admin, pass-admin
    • -p 8086: 8086: interacción con otra aplicación
    • –name influxsrv: el contenedor tiene el nombre influxsrv, utilícelo para vincularlo con cAdvisor.

Puede probar su instalación de InfluxDB llamando a esta URL >> http://45.79.148.234:8083 e inicie sesión con usuario / contraseña como «root».

Administración de InfluxDB 2016-08-01 14-10-08

Podemos crear nuestras bases de datos requeridas desde esta pestaña.

entrada de createDB

Instalación de cAdvisor

Nuestro siguiente paso es instalar el contenedor cAdvisor y vincularlo al contenedor InfluxDB. Puede utilizar este comando para crearlo.

root@ubuntu:~# docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --link influxsrv:influxsrv --name=cadvisor google/cadvisor:latest -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086
Unable to find image 'google/cadvisor:latest' locally
latest: Pulling from google/cadvisor
09d0220f4043: Pull complete
151807d34af9: Pull complete
14cd28dce332: Pull complete
Digest: sha256:8364c7ab7f56a087b757a304f9376c3527c8c60c848f82b66dd728980222bd2f
Status: Downloaded newer image for google/cadvisor:latest
3bfdf7fdc83872485acb06666a686719983a1172ac49895cd2a260deb1cdde29
root@ubuntu:~#
    • –publish = 8080: 8080: interfaz de usuario
    • –link = influxsrv: influxsrv: enlace al contenedor influxsrv
    • -storage_driver = influxdb: configura el controlador de almacenamiento como InfluxDB
    • Especifique a qué instancia de InfluxDB enviar datos:
    • -storage_driver_host = influxsrv: 8086: La ip: puerto de la base de datos. El valor predeterminado es ‘localhost: 8086’
    • -storage_driver_db = ca went: nombre de la base de datos. Utiliza db ‘ca went’ de forma predeterminada

Puede probar nuestra instalación de cAdvisor llamando a esta URL >> http://45.79.148.234:8080. Esto le proporcionará las estadísticas de su host y contenedores Docker.

cAdvisor - Contenedores Docker 2016-08-01 14-24-18

Instalación del panel de Grafana

Finalmente, necesitamos instalar Grafana Dashboard y vincularlo a InfluxDB. Puede ejecutar este comando para configurarlo.

root@ubuntu:~# docker run -d -p 3000:3000 -e INFLUXDB_HOST=localhost -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_PASS=root --link influxsrv:influxsrv --name grafana grafana/grafana
f3b7598529202b110e4e6b998dca6b6e60e8608d75dcfe0d2b09ae408f43684a

Ahora podemos iniciar sesión en Grafana y configurar las fuentes de datos. Vaya a http://45.79.148.234:3000 o simplemente a http://45.79.148.234:

Nombre de usuario – admin
Contraseña – admin

Una vez que hayamos instalado Grafana, podemos conectar InfluxDB. Inicie sesión en el Panel de control y haga clic en el icono de Grafana (Bola de fuego) en la esquina superior izquierda del panel. Haga clic en Fuentes de datos para configurar.

agregando fuente de datos

Ahora puede agregar nuestro nuevo gráfico a nuestra fuente de datos predeterminada InfluxDB.

panelgraph

Podemos editar y modificar nuestra consulta ajustando nuestro gráfico en la pestaña Métrica.

Grafana - Panel de control de Grafana 2016-08-01 14-53-40
Grafana - Panel de control de Grafana

Puede obtener más información sobre monitoreo de docker aquí. Gracias por leer esto. Sugeriría sus valiosos comentarios y sugerencias al respecto. ¡Espero que tengas un día maravilloso!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar