La supervisión de la infraestructura informática es compleja, pero una herramienta como Checkmk la hace más fácil.

Muchas organizaciones han añadido tecnologías nativas de la nube a su pila tecnológica para mejorar el rendimiento de sus productos. Al mismo tiempo, a menudo siguen gestionando sus propias redes e infraestructuras locales. Este cambio hacia infraestructuras híbridas debe abordarse en la monitorización debido al enorme número de métricas que se generan cada segundo para diversos componentes como el sistema operativo, el almacenamiento, el servidor, los entornos en la nube, etc. Todos ellos son importantes para garantizar que las aplicaciones funcionen al máximo rendimiento.

Estas métricas son una señal esencial para que los equipos de DevOps conozcan la salud de su infraestructura. Por eso las organizaciones necesitan una solución de monitorización que les ayude a identificar rápidamente los problemas en producción con métricas, visualizaciones y análisis. Checkmk es una de las herramientas de monitorización de infraestructuras más populares y útiles. En este artículo, le contaré por qué Checkmk merece su buena reputación y cómo puede dar los primeros pasos con ella.

¿Qué es Checkmk?

Checkmk comprueba constantemente el funcionamiento de cualquier aspecto de los entornos informáticos modernos y es especialmente adecuado para las infraestructuras híbridas. Por un lado, Checkmk es flexible y admite contenedores, activos en la nube y sistemas locales como conmutadores y servidores. Por otro lado, es realmente fácil empezar y gestionar su monitorización, porque Checkmk viene con alertas automáticas basadas en una gran experiencia en TI y otras funciones inteligentes que le ahorrarán mucho tiempo.

Si desea utilizar Checkmk de forma gratuita, tiene dos opciones: En primer lugar, puede optar por la Checkmk Raw Edition, que es completamente de código abierto y de uso gratuito sin ninguna limitación. En segundo lugar, existe la edición de prueba Checkmk Enterprise, que cuenta con todas las funciones adicionales de las ediciones Checkmk Enterprise, pero después de 30 días el número de hosts estará limitado a 25.

¿Cómo resuelve Checkmk el problema?

Checkmk puede supervisar aplicaciones, servidores, bases de datos, redes, contenedores, almacenamiento y demás. Proporciona una lista masiva de más de 2.000 plug-ins de monitorización. Con estos plug-ins Checkmk puede ampliarse para supervisar tecnologías específicas de diferentes proveedores disponibles en el mercado. Algunos plug-ins populares de Checkmk son para Docker, Kubernetes, Cisco, Nginx, VMware, Linux, Windows, AWS, Dell. Con sus 2.000 plug-ins, Checkmk destaca como una solución de monitorización de infraestructuras muy prometedora disponible en la actualidad.

Además, para cualquier solución de monitorización, es crucial la rapidez y corrección con la que pueden leer las métricas y establecer alertas y notificaciones inteligentes. La solución de Checkmk cumple todos estos criterios. Con su función de autodescubrimiento, Checkmk puede identificar más del 90% de los servicios y dispositivos. Ahora, la mayoría de las empresas requieren escalabilidad y automatización. Puede escalar la capacidad de supervisión de cien hosts a miles de hosts con facilidad en Checkmk y aprovechar sus agentes disponibles para la automatización.

Instale Checkmk en un contenedor Docker

En este artículo, voy a instalar Checkmk Raw Edition en un contenedor Docker en un servidor Linux con Ubuntu 20.04. Desde Dockerhub, puede descargar el contenedor Docker de Checkmk. Tiene casi 5 millones de pulls hasta ahora, lo que indica lo popular y ampliamente utilizado que es Checkmk.

checkmk dockerhub

Tome la imagen Docker con la última versión de Checkmk y ejecútela dentro de un contenedor utilizando el comando docker container run.

docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest

El nombre del contenedor será ‘monitoring’, el servidor web escuchará en el puerto 5000 y se abrirá en el puerto 8080 del nodo. El contenedor utilizará el sistema de archivos temporal y la zona horaria local.

geekflare@geekflare:~$ sudo docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v/omd/sites --name monitoring -v/etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest
No se puede encontrar la imagen 'checkmk/check-mk-raw:2.0.0-latest' localmente
2.0.0-latest: Extrayendo de checkmk/check-mk-raw
33847f680f63: Pull completo
474905f2790b: Pull completo
1804f0e63047: Pull completo
f36fe6334464: Pull complete
03c68dfa69cf: Tirar de completar
b60cfdb78e96: Pull completo
Digest: sha256:7788fa2e31c7270be201d75285c13ccc7a74f67f991872ea63ba0cfa6708cac6
Estado: Descargada imagen más nueva para checkmk/check-mk-raw:2.0.0-latest
9729e323a840a08b0e758cfa9e6dbf76ba5dab4b2ecc4eea5174b8ee1a5cfbcf

Puede comprobar si la imagen Docker se ha descargado ejecutando el comando docker images.

geekflare@geekflare:~$ sudo docker images
REPOSITORIO ETIQUETA IMAGEN ID CREADO TAMAÑO
bitnami/node-exporter latest ba0f519ca49b hace 34 horas 104MB
checkmk/check-mk-raw 2.0.0-latest 097319702432 hace 13 días 1.03GB
hello-world latest feb5d9fea6a5 hace 7 semanas 13.3kB

Ejecute el comando docker ps para ver si el contenedor Checkmk se está ejecutando.

geekflare@geekflare:~$ sudo docker ps
CONTENEDOR ID IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES
9729e323a840 checkmk/check-mk-raw:2.0.0-latest "/docker-entrypoint...."   Hace aproximadamente un minuto Up 59 seconds (health: starting) 6557/tcp, 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp monitoring
3d3a95ed3c25 bitnami/node-exporter:latest "/opt/bitnami/node-e..." hace 25 horas Arriba 25 horas 9100/tcp node-exporter

Para obtener los datos de acceso a la interfaz web de Checkmk, imprima el registro del contenedor Checkmk.

geekflare@geekflare:~$ sudo docker container logs 9729e323a840 
### CREANDO SITIO 'cmk'
Añadiendo /opt/omd/sites/cmk/tmp a /etc/fstab.
Poniendo TMPFS en off.
Sistema de ficheros temporal ya montado
Actualizando configuración del núcleo...
Generando configuración para core (tipo nagios)...Precompilando comprobaciones de host...OK
OK
Ejecutando script post-creación "01_create-sample-config.py"...OK
Creado nuevo cmk de sitio con la versión 2.0.0p15.cre.

  El sitio puede iniciarse con omd start cmk.
  La interfaz de usuario web predeterminada está disponible en http://9729e323a840/cmk/

  El usuario administrador para las aplicaciones web es cmkadmin con contraseña: ClFxBPre
  Para administrar el sitio desde la línea de comandos, inicie sesión con 'omd su cmk'.
  Después de iniciar la sesión, puede cambiar la contraseña de cmkadmin con 'htpasswd etc/htpasswd cmkadmin'.

### INICIANDO XINETD
[ ok ] Iniciando superservidor de internet: xinetd.
### INICIANDO SITIO
Sistema de archivos temporal ya montado
Iniciando mkeventd...OK
Iniciando rrdcached...OK
Iniciando npcd...OK
Iniciando nagios...OK
Iniciando apache...OK
Iniciando redis...OK
Inicializando Crontab...OK
### INICIANDO CRON
### CONTENEDOR INICIADO

El contenedor Docker Checkmk se ejecutará por defecto en https://localhost:8080/cmk/check_mk. La salida del comando anterior le indica que el nombre de usuario es cmkadmin y la contraseña, en mi caso la contraseña es ClFxBPre. Abra la dirección en un navegador web y utilice sus credenciales para iniciar sesión.

checkmk login

Una vez que inicie sesión, este es el ‘Panel principal’ que aparecerá. Está vacío porque aún no ha añadido ningún anfitrión.

checkmk dashboard

Monitorizar Docker usando Checkmk

Normalmente, instalaría el agente Checkmk en la máquina que aloja sus contenedores Docker y, a continuación, utilizaría el complemento Checkmk para Docker para supervisar todos los contenedores. Este plug-in (mk_docker.py) utiliza la Python-API de Docker para realizar un seguimiento de los contenedores Docker y obtener una visibilidad completa de su estado y rendimiento en tiempo real. Puede leer más detalles sobre la monitorización de Docker con Checkmk en el sitio web de Checkmk.

Dado que en mi entorno Docker sólo hay un contenedor Docker en ejecución, mi contenedor Docker Checkmk, sólo utilizaré el agente Checkmk que se ejecuta en el contenedor Docker y no instalaré Checkmk en mi host Docker. El agente está preinstalado en el contenedor Checkmk, por lo tanto, sólo tengo que añadir mi contenedor Checkmk como host.

Obtengamos la dirección IP en la que se está ejecutando el servicio Docker utilizando ifconfig en el terminal.

geekflare@geekflare:~$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 172.17.0.1 máscara de red 255.255.0.0 broadcast 172.17.255.255
        inet6 fe80::42:59ff:fe8a:8ba8 prefixlen 64 scopeid 0x20<link>
        ether 02:42:59:8a:8b:a8 txqueuelen 0 (Ethernet)
        Paquetes RX 5559 bytes 7230215 (7,2 MB)
        Errores RX 0 dropped 0 overruns 0 frame 0
        Paquetes TX 4164 bytes 614703 (614,7 KB)
        TX errores 0 descartados 0 desbordamientos 0 portadora 0 colisiones 0

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.108 netmask 255.255.255.0 broadcast 192.168.0.255
        inet6 fe80::144a:4682:35e7:bb2 prefixlen 64 scopeid 0x20<link>
        ether 08:00:27:91:82:82 txqueuelen 1000 (Ethernet)
        RX paquetes 699491 bytes 1044235622 (1.0 GB)
        Errores RX 0 dropped 7 overruns 0 frame 0
        Paquetes TX 101260 bytes 7555470 (7,5 MB)
        TX errores 0 descartados 0 desbordamientos 0 portadora 0 colisiones 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 máscara de red 255.0.0.0
        inet6 ::1 prefixlen 128 scopeid 0x10<host>
        loop txqueuelen 1000 (Loopback local)
        Paquetes RX 20655 bytes 8446042 (8,4 MB)
        Errores RX 0 dropped 0 overruns 0 frame 0
        Paquetes TX 20655 bytes 8446042 (8,4 MB)
        TX errores 0 descartados 0 desbordamientos 0 portadora 0 colisiones 0

veth44ba5ce: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet6 fe80::145f:1fff:fee9:a7b0 prefixlen 64 scopeid 0x20<link>
        ether 16:5f:1f:e9:a7:b0 txqueuelen 0 (Ethernet)
        Paquetes RX 5559 bytes 7308041 (7,3 MB)
        Errores RX 0 dropped 0 overruns 0 frame 0
        Paquetes TX 4173 bytes 616263 (616.2 KB)
        TX errores 0 descartados 0 desbordamientos 0 portadora 0 colisiones 0

vetha82ee43: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet6 fe80::585c:6fff:fe0a:a79b prefixlen 64 scopeid 0x20<link>
        ether 5a:5c:6f:0a:a7:9b txqueuelen 0 (Ethernet)
        RX paquetes 0 bytes 0 (0.0 B)
        Errores RX 0 dropped 0 overruns 0 frame 0
        TX paquetes 92 bytes 9799 (9.7 KB)
        TX errores 0 descartados 0 desbordamientos 0 portadora 0 colisiones 0

En mi caso, el servicio Docker se ejecuta en 172.17.0.1. El siguiente paso es añadir el servicio Docker como host en Checkmk para que pueda ser supervisado.

  • Vaya a Checkmk y haga clic en Configuración -> Hosts.

checkmk hosts

  • Haga clic en «Añadir host»

checkmk add host

  • Indique ahora el nombre de host y la dirección IP y haga clic en «Guardar e ir a la configuración del servicio».

checkmk host docker

  • Una vez hecho esto, Checkmk iniciará el descubrimiento del servicio automáticamente.

checkmk docker service

Desplácese hacia abajo para ver los servicios de monitorización que se ejecutan bajo el host Docker. Puede ver que los servicios no están siendo monitorizados actualmente. Si desea monitorizarlo todo, la solución más sencilla es hacer clic en ‘Arreglar todo’. Si desea configurar qué servicios deben ser monitorizados, también puede hacerlo en detalle. Haga clic en el signo si desea monitorizar un servicio.

checkmk docker service list

Una vez que seleccione los servicios que desea supervisar, aparecerán en la pestaña «Servicios supervisados». Obtendrá todos los detalles del estado de cada servicio que esté monitorizando. Si hace clic en el signo ?, ese servicio pasará a la lista de servicios pendientes. Si hace clic en el signo X, el servicio pasará a la pestaña ‘Servicios desactivados’.

checkmk monitored services

He desactivado cuatro servicios, por lo que puedo verlos en la pestaña de servicios desactivados.

checkmk disabled services

Cuando termine de añadir los servicios, deberá activar los cambios antes de que pasen a producción.

  • Haga clic en el campo resaltado con el signo de exclamación amarillo (!) en la esquina superior derecha para ver los cambios pendientes.
  • Haga clic en Activar en los sitios seleccionados.

¡Ha supervisado con éxito los servicios Docker utilizando Checkmk!

Conclusión

Esto ha sido todo sobre Checkmk, una herramienta de monitorización de infraestructuras. Es una herramienta muy fácil de usar que debe probar para monitorizar sus entornos de producción. Le recomiendo que pruebe la edición gratuita de Checkmk para comenzar su monitorización.