InfluxDB

  • collectd es un demonio que se encarga de recolectar métricas de rendimiento de sistemas y aplicaciones de forma periódica, y provee mecanismos para almacenar los valores de diferentes formas.

    collectd es capaz de recuperar métricas de sistemas operativos, aplicaciones, archivos de log, dispositivos externos, etc. y almacena la información o la hace disponible a través de la red. Estas estadísticas pueden ser utilizadas luego para monitorear sistemas, encontrar cuellos de botella de rendimiento, y predecir carga y escalabilidad de sistemas. Está desarrollado en lenguaje C para lograr la máxima portabilidad y eficiencia posible, lo que permite que corra en sistemas sin soporte para lenguaje de scripting ni demonio cron, tales como los sistemas embebidos. Por ello es popular en OpenWrt (distribución GNU/Linux para routers). Consta de cientos de plugins para recuperar datos desde casi cualquier sistema/aplicación/dispositivo.

    Actualmente collectd está liberado bajo licencia MIT y es activamente desarrollado, mantenido y bien documentado. Cabe destacar que no provee la funcionalidad necesaria para generar gráficos, sólo para almacenar la información recuperada. Aunque a tal fin conviene utilizar soluciones como Grafana.

    Este artículo muestra paso a paso cómo compilar, instalar y configurar collectd desde sus fuentes en un sistema Devuan. Y también cómo instalar (desde paquete) y configurar InfluxDB como base de datos para las métricas recuperadas con collectd.

  • Luego de hacer unas pruebas con InfluxDB tuve la necesidad de borrar algunas series para comenzar nuevamente con muestras frescas. Veamos cómo se utiliza la consulta DROP desde el cliente de línea de comandos (CLI) influx.

  • El artículo anterior muestra de qué forma es posible recolectar métricas de uso de recursos utilizando collectd en Debian y derivados, y cómo almacenar estas métricas en una base de datos InfluxDB. Este artículo explica los simples pasos para graficar estas métricas en Grafana.

  • Tanto la API HTTP como el cliente de línea de comandos (que también utiliza la API HTTP para conectarse al motor) de InfluxDB, incluyen un mecanismo de autenticación simple basado en credenciales de usuario (nombre de usuario y contraseña). Cuando se habilita la autenticación en InfluxDB, el motor sólo ejecuta los pedidos HTTP que incluyan credenciales válidas. Este mecanismo de autenticación no está habilitado por defecto, por ende este artículo explica cómo habilitar la autenticación en un servidor InfluxDB, y cómo crear un usuario con privilegios de sólo lectura (para Grafana), a fin de mejorar la seguridad de la instalación.

  • Tal como había prometido el año anterior, me dispuse a convertir en e-book alguna de las series de artículos publicados en el blog. Y para empezar opté por la extensa serie de artículos dedicados a la monitorización y gráfico de métricas utilizando las herramientas collectd, InfluxDB y Grafana.

  • Este artículo explica cómo configurar el plugin "mysql" de collectd para recolectar estadísticas del servidor de bases de datos y el motor InnoDB.

    En la serie de artículos anteriores he explicado cómo compilar y configurar collectd en Debian para almacenar métricas en una base de datos InfluxDB y cómo graficar métricas desde una base InfluxDB en Grafana. Este esquema me permite generar gráficas de monitoreo de actividad de servidores Nginx, Apache, etc. Veamos ahora cómo configurar collectd para generar estas mismas gráficas, pero con el objetivo de monitorear la actividad sobre un servidor de bases de datos MySQL.

  • En esta oportunidad tuve la necesidad de monitorear un viejo servidor de dominio Windows utilizando Grafana. Al igual que la anterior oportunidad en que tuve que monitorear un vetusto Informix, por cuestiones de compatibilidad, lo mejor fue recolectar estadísticas utilizando directamente un script PowerShell y enviarlas a InfluxDB con curl. Sin recurrir a herrramientas como collectd o Telegraf (no disponibles para sistemas Windows de 32 bits).

  • El objetivo final de compilar e instalar collectd con InfluxDB y graficar las métricas de collectd con Grafana era lograr monitorear la actividad en un servidor Web Nginx a través de gráficas y alertas en Grafana. Este artículo explica la configuración de Nginx y collectd para recopilar datos de uso del servidor Web, y la configuración de Grafana para visualizar estos datos.

  • Si se desea monitorear un servidor GlassFish, collectd cuenta con el plugin GenericJMX, el cual permite recolectar estadísticas de un servidor de aplicación Java mediante el framework de administración JMX (Java Management Extensions). Este artículo explica detalladamente cómo compilar y configurar collectd para recolectar datos estadísticos de un servidor GlassFish que cuente con el conector JMX habilitado, con el objetivo de graficar métricas de desempeño utilizando InfluxDB+Grafana.

  • Este artículo explica cómo recolectar estadísticas de PHP-FPM con collectd, utilizando el plugin "curl_json", para obtener gráficas y alertas en Grafana.

  • Además de PostgreSQL y MySQL, en nuestra organización utilizamos servidores de gestión de bases de datos IBM Informix. Se trata de un producto de software de gestión de bases de datos propietario, licenciado por IBM, que corre sobre sistemas Unix.

    Al tratarse de software propietario, collectd (y creo que ninguna otra solución de recolección de métricas) no posee un plugin para monitorear servidores de bases de datos Informix. Por ende me dispuse a crear un script Bash que permita monitorear servidores Informix y almacene las métricas en una base de datos InfluxDB, el cual comparto en este artículo.

  • Continuando esta serie de artículos sobre monitoreo y análisis de datos de rendimiento con collectd, InfluxDB y Grafana, hoy llega el turno de PostgreSQL. La idea es obtener métricas de performance de un servidor de bases de datos PostgreSQL con collectd, almacenarlas en una base de datos InfuxDB y graficarlas con Grafana.

    Artículos previos en la serie "collectd+InfluxDB+Grafana":

    Creo que nunca había dedicado tantos artículos a una serie. Y hay más por venir

  • El plugin iptables de collectd se encarga de recuperar contadores de paquetes y bytes del firewall del kernel Linux para IPv4 e IPv6. Este plugin requiere que se especifique qué reglas se desean monitorear (seleccionar qué contadores registrar). Es posible seleccionar reglas de una tabla y cadena por su comentario o por su número de regla (posición).

    Dependiendo de la configuración de cada firewall es posible recolectar estadísticas de paquetes/bytes para cierto servicio, host fuente/destino, paquetes descartados, etc.

    Un aspecto interesante, desde el punto de vista de la eficiencia de la implementación, es que este plugin utiliza la librería libiptc en lugar de la herramienta iptables. Esto significa que se comunica directamente con el kernel y la sobrecarga es tan baja como sea posible. Cabe recordar que collectd está especialmente enfocado en la eficiencia ya que apunta a ser utilizado en sistemas embebidos y routers (OpenWRT).

    Este artículo demuestra cómo configurar el plugin iptables de collectd para visualizar contadores de bytes y paquetes con Grafana.

  • Muchas de las métricas que se pueden recolectar de un sistema operativo o servicio suelen ser contadores. Por ejemplo cantidad de bytes enviados, cantidad de bytes recibidos, tiempo total de uso de CPU de un proceso, bytes leídos, bytes escritos, etc. Estos valores representan totales acumulados en lugar de mediciones puntuales (gauges). Es decir, se trata de métricas que representan un valor acumulado en lugar de una medida de una variable en un cierto instante de tiempo, y no representan lo que está sucediendo en el momento en que se leen.

    Haciendo una analogía con el mundo real, se podría comparar con el tablero de un automóvil. El velocímetro es un dispositivo de medición (gauge) que indica la velocidad a la que se mueve el vehículo, mientras que el odómetro indica los kilómetros totales recorridos. Por su naturaleza, al ser un valor total acumulado, el odómetro no dice nada acerca de cuántos kilómetros recorrió el vehículo en el último período de tiempo.

    Los contadores son valores que comienzan en cero y aumentan a medida que pasa el tiempo. Con lo cual, al tomar muestras y graficar se obtiene siempre una curva ascendente. Sin embargo se dificulta discriminar períodos de tiempo en los que el contador aumentó significativamente, por ejemplo. Volviendo al ejemplo del automóvil, digamos que sería más útil medir cuántos kilómetros se acumularon desde la última medición, en lugar que desde que el vehículo salió de la fábrica. Esto equivale a medir deltas en lugar del total acumulado, información que se pierde al mantener un sistema un único contador que se va sobrescribiendo en cada medición.

    Este artículo explica cómo graficar deltas (o diferencias) en lugar de totales de contadores en grafana cuando se visualizan datos de una serie de tiempo InfluxDB.