Monitoriza tu sistema con telegraf, grafana e influxdb
Introducción
Hoy vamos a presentar un sistema de monitorización empleando telegraf, grafana e influxdb. Estas tres herramientas son un complemento perfecto para cualquier arquitectura, pues permiten recoger datos de múltiples fuentes, almacenarlos en una base de datos de series de tiempo y mostrar gráficos y estadísticas de manera eificiente. Aún hay más: con grafana puedes configurar alertas de modo que el sistema te avise cuando uno de tus servidores tiene excesiva carga, poca memoria, o cualquier otra circunstancia.
Contenidos
Conociendo las herramientas
¿Qué es influxDB?
InfluxDB, desarrollada por influxdata, es una base de datos basada en series de tiempo (time-series database). En ella almacenaremos todos los datos que vamos a monitorizar, de modo que grafana pueda realizar consultas y mostrar gráficos de forma eficiente. Para saber un poco más sobre InfluxDB, consulta nuestro artículo sobre InfluxDB. Necesitarás haber instalado InfluxDB (te decimos cómo hacerlo en nuestro artículo) para poder continuar el tutorial.
¿Qué es grafana?
Grafana es una plataforma open source para realizar análisis y monitorización creada por grafana labs. Se puede conectar a múltiples bases de datos, y muestra la información en dashboards que incluyen multitud de plugins y diferentes aplicaciones que pueden conectarse con el sistema. Uno de sus lemas es «adorada por la comunidad, ahora lista para la empresa», y hacen honor a él, pues el sistema está preparado para mostrar datos en producción de forma profesional y con soporte empresarial.
¿Qué es telegraf?
Telegraf es un servicio que recopila y envía métricas, datos de diferentes sistemas. Puede recopilar datos del sistema en el que se ejecuta, como uso de disco, RAM, CPU, carga del sistema, conexiones y muchos más, e incluye además una creciente lista de plugins de entrada, como apache, consul, couchDB, Docker, Elasticsearch, Fluentd, HAproxy, http POST, entre otros. Su salida la envía por lo general a una base de datos InfluxDB, y es esta capacidad la que aprovecharemos en este tutorial.
Instalación y uso básico de grafana en Ubuntu
Grafana es una herramienta que merece varios artículos por si misma. Sin embargo, para mostrar su versatilidad necesitamos datos, por lo que hemos decidido realizar la introducción a grafana mediante el uso de otras dos potentes herramientas, influxdb y telegraf, que se combinan perfectamente y nos ayudarán a entender los conceptos básicos de uso.
Instalación mediante repositorio apt
El equipo de grafana provee de un repositorio compatible con Debian y Ubuntu, y es la forma más cómoda de instalar la versión estable.
Añade la siguiente línea al fichero /etc/apt/sources.list
deb https://packagecloud.io/grafana/stable/debian/ jessie main
Añade la clave de Package Cloud, necesaria para instalar paquetes firmados de ese repositorio:
curl https://packagecloud.io/gpg.key | sudo apt-key add -
Actualiza el repositorio apt e instala grafana:
sudo apt-get update sudo apt-get install grafana
Uso básico del servicio
Utilizando systemd, encontrarás los comandos básicos de start, status, stop.
systemctl daemon-reload #recarga la configuración systemctl start grafana-server #arranca el servicio systemctl status grafana-server #muestra el estado del servicio systemctl stop grafana-server #para el servicio
Para hacer que grafana se arranque con el servidor al arrancar:
sudo systemctl enable grafana-server.service
Acceder a grafana via http
El servidor grafana (grafana-server) se lanza como el usuario grafana, el cual se crea durante la instalación. El puerto por defecto para http es 3000, y el usuario y grupo por defecto es admin. Para acceder al servidor, solo tenemos que abrir nuestro navegador y poner la dirección ip de nuestro servidor y el puerto 3000.
Por ejemplo, si tu servidor tuviera la IP 192.168.12.16, abre el navegador y pon en la dirección: http://192.168.12.16:3000 para acceder a la interfaz de grafana.
El usuario y contraseña por defecto es admin/admin. Una vez los introduzcamos estaremos ya en la interfaz de administración de grafana, a la que volveremos luego para conectar con la base de datos InfluxDB y mostrar los datos del Telegraf.
Ficheros importantes al trabajar con grafana
Cuando quieras trabajar un poco más a fondo con grafana, necesitarás algunos ficheros y paths que te mostramos a continuación.
Log
Por defecto el fichero de log se encuentra en: /var/log/grafana
Base de datos
La base de datos por defecto es una base de datos sqlite3 que se encuentra en: /var/lib/grafana/grafana.db. Grafana reocmienda hacer una copia de seguridad de este fichero antes de cualquier actualización.
Configuración
El fichero de configuración se encuentra en: /etc/grafana/grafana.ini
Descargar e instalar telegraf en Ubuntu
Te mostramos cómo instalar telegraf en Ubuntu, pero si quieres monitorizar cualquier otro sistema, debes saber que esta herramienta está disponible para casi cualquier sistema operativo: OS X, Ubuntu, Debian, Red Hat, CentOS, Windows, etc. También se puede utilizar como un contenedor docker.
Tan sólo tenemos que ejecutar los siguientes comandos. Estos instalarán el servicio telegraf que posteriormente configuraremos.
wget https://dl.influxdata.com/telegraf/releases/telegraf_1.5.3-1_amd64.deb sudo dpkg -i telegraf_1.5.3-1_amd64.deb
Una vez instalado, telegraf crea y se comunica con una base de datos InfluxDB de nombre telegraf, en localhost en el puerto 8086. Si has seguido nuestro tutorial sobre InfluxDB, tendrás esta base de datos creada. Si instalaste el servidor en otra dirección, tendrás que modificar el fichero de configuración en /etc/telegraf/telegraf.conf con la información de host, puerto y credenciales.
Monitorizando nuestro sistema
Ya tenemos todo lo necesario para monitorizar nuestro sistema: telegraf está recogiendo datos y escribiéndolos en la base de datos InfluxDB. Grafana se conectará a esa base de datos y podremos presentar la información en forma de gráficos mediante un dashboard.
Configuración de una fuente de datos
El primer paso tras acceder a l servidor de grafana e introducir el nombre de usuario y contraseña en grafana será configurar una fuente de datos. Esto se hace en el apartado «Data Sources» (hay un asistente la primera vez que entras, de modo que te lleva directamente a crear un data source. Para nuestro ejemplo, seleccionaremos una fuente de datos influxdb,la base de datos telegraf, el servidor localhost y el puerto 8086 y elegiremos «Save and test» tal como se muestra en las siguientes imágenes:
Nuestro primer dashboard
Para crear un dashboard, pulsaremos en el símbolo «+» del menú de la izquierda y seleccionaremos «Create Dashboard». A continuación seleccionamos un nuevo panel, y la opción «Graph» para añadir nuestro primer gráfico.
Una vez aparece el gráfico pulsando en su título («Panel title») podemos abrir la opción de editar, que es donde comenzaremos a ver la potencia de Grafana. Vamos a hacer una consulta utilizando el asistente para ver el uso de CPU. Los campos irán ofreciéndonos posibilidades sencillamente pulsando en ellos. Veamos en nuestro ejemplo, donde seleccionamos la cpu del host nociones en el intervalo de tiempo (esto permite que grafana haga «zoom in» y «zoom out» en el gráfico basándose en los rangos de tiempo que tengamos seleccionados.
Repetiremos con la memoria, el uso de disco y otras medidas básicas. Así tendremos algunos gráficos que mostrar en nuestro dashboard. En la pestaña «General» podemos cambiar el título del panel, y en la pestaña «Axes» ajustar los ejes. Verás otras pestañas muy útiles, como la pestaña «Alert», para configurar alertas en función de los valores de la gráfica. Veamos un ejemplo de dashboard:
En el dashboard se muestran solo un par de las múltiples métricas que telegraf envía a la base de datos. Las posibilidades son inagotables, ¡Ponte a practicar con Grafana!
Conclusión e ideas
En este artículo hemos dado los primero pasos para monitorizar sistemas usando Grafana, Telegraf e InfluxDB. Es una herramienta potente y sencilla de configurar, que puede servirnos para controlar una flota de servidores. Tras estos primeros pasos, te animamos a que continúes con las siguientes ideas y posibilidades de ampliación.
- Configurar alarmas para las métricas, de modo que puedas recibir alertas.
- Configura TLS, para que las comunicaciones entre telegraf e InfluxDB estén encriptadas.
- Utiliza un proxy https para el servidor de Grafana. De este modo el navegador se comunicarás con el servidor de forma segura.
- Conectar múltiples servidores, y emplear templates para las métricas más comunes.
De momento eso es todo, para dudas y sugerencias, te esperamos en los comentarios.