Grafana, InfluxDB y Collectd: Graficando métricas con estilo

En esta entrada, instalaremos un sistema de tres componentes, una base de datos InfluxDB (una base de datos basada en Go, creada específicamente para esto) que sera alimentada por Collectd (el viejo y querido colector de estadísticas de Linux) y mostraremos los datos recolectados por este, con Grafana (una forma muy estilizada y configurable de mostrarlos).

Configuraremos luego Collectd para obtener algunas métricas de equipos remotos y en entradas siguientes, configuraremos la aplicación local para obtener estos datos por SNMP (para obtener datos de routers, switches o cualquier equipo que soporte este protocolo).

Para nuestro tutorial, montaremos todo sobre un equipo con Debian (Stretch) (idéntico si queremos instalar en Ubuntu) pero el mismo procedimiento es adaptable a cualquier distribución ya que las tres soluciones tienen tanto repositorios como paquetes de instalación específicos.

Empecemos…

Instalando Grafana

Comenzaremos agregando los repositorios proporcionados por Grafana, para esto, modificaremos el archivo sources.list e instalaremos la función de obtenerlos por https (que no se porque no viene por defecto a esta altura)
Comenzaremos actualizando los repositorios, asegurándonos que trabajamos con las ultimas versiones e instalado curl (que la utilizaremos mas adelante) y el agregado https para aptitude.

apt-get update

apt-get upgrade apt-get install apt-transport-https curl

Agregaremos el repositorio para Grafana e instalaremos las claves con las que vendrán firmados los paquetes.

echo "deb https://packagecloud.io/grafana/stable/debian/ stretch main" >> /etc/apt/sources.list
curl https://packagecloud.io/gpg.key | apt-key add -

Actualizaremos de nuevo el repositorio para que incluya el que recién agregamos e instalaremos la aplicación

apt-get update

apt-get install grafana

Y por ultimo arrancaremos la aplicación y configuraremos su inicio automático con el sistema operativo

service grafana-server start
update-rc.d grafana-server defaults

Instalando InfluxDB

Instalaremos ahora nuestra base de datos. Para esto descargaremos el paquete .deb, pero en la pagina de descargas, encontraremos los instaladores para las distribuciones mas usadas (RedHat, CentOS, imagenes para docker y los binarios en caso que querramos compilarlo nosotros mismos)

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.4.2_amd64.deb
dpkg -i influxdb_1.4.2_amd64.deb

Iniciaremos ahora la aplicacion

service influxd start

Y crearemos la base que utilizaremos para almacenar las estadísticas recolectadas por Collectd.

influx -execute "create database collectd"

Generaremos ahoar una configuracion limpia, ya que la que viene por defecto, tiene lo minimo (ademas de estar minada de comentarios que hace imposible encontrar algo)

mv influxdb.conf influxdb.old
influxd config > influxdb.conf

Esto nos generara un archivo limpio y mas manejable, y lo único que nos quedara es activar el listener para Collectd, para esto editaremos el archivo influxdb.conf y en la seccion de collectd, cambiaremos el valor de la variable «enable» de false a true y reiniciaremos el servicio.

service influxdb restart

Por defecto, esta configuración insertara los datos enviados en una base con nombre «collectd», si en los pasos anteriores, nombramos la base diferente, también deberemos cambiar el parámetro «database» al valor apropiado.

Instalando Collectd

Para esta aplicación, utilizaremos el repositorio estándar de Debian, ya que en general, las versiones nuevas no traen demasiados cambios. Esto aplica para todas las distribuciones que cuentan con ella de forma normal. Tengan en cuenta que tiene bastantes y variadas dependencias, por lo que la instalación manual tampoco es lo mas recomendado.
En nuestro caso, instalaremos la aplicacion en el mismo equipo que las demas, pero tambien podemos instalarla en los equipos a monitorear, dependiendo del los plugins que habilitemos.

apt-get install collectd

Como en el caso de InfluxDB, el archivo de configuración esta plagado de cosas comentadas, ya que cada plugin soportado esta en un solo archivo y pocos de ellos (los que monitorean el equipo local) están activos. Por esta razón, dejaremos un archivo de configuración limpio, cargándole solo lo necesario para que se ejecute y habilitaremos cada uno de los plugins que utilizaremos, en archivos independientes.
Comenzaremos renombrando el archivo de configuración actual para que nos quede de respaldo y de guía para configurar algún plugin particular.

mv collectd.conf collectd.ori

Y generaremos un archivo basico, solo dejaremos lo necesario para loguear a syslog (en caso que precisemos debuguear algo) y la referencia a la carpeta donde colocaremos las configuraciones de plugins


echo "
FQDNLookup true
LoadPlugin syslog
<Plugin syslog>
 LogLevel info
</Plugin>
<Include \"/etc/collectd/collectd.conf.d\">
 Filter \"*.conf\"
</Include>" > /etc/collectd/collectd.conf

Por último, configuraremos como insertaremos los datos en la base de InfluxDB, en este caso, apuntaremos a la base local en el mismo equipo, por lo que usaremos la ip 127.0.0.1, si este fuera un equipo que queremos monitorear, cambiaremos esta dirección por la correspondiente a la interfaz del equipo donde esta la BD

echo "
LoadPlugin network
<Plugin \"network\">
 Server \"127.0.0.1\" \"25826\"
</Plugin>" > /etc/collectd/collectd.conf.d/network.conf

Configurando Grafana

grafana login default adminEl resto de la configuración, podremos hacerla vía la interfaz de Grafana, para esto, nos loguearemos a la interfaz web en http://IP_SERVER:3000 autenticandonos con las credenciales por defecto (Usuario:admin Pass:admin)

 

 

 

 

 

grafana influxdb datasource colelctdPresionaremos ahora el botón «Add Datasources» para cargar los datos de nuestra base. El nombre sera la forma como identificaremos nuestra base, por lo que podremos darle el nombre mas apropiado para identificarla rápidamente. El tipo sera InfluxDB, la conexión a ella, si no cambiamos nada en la configuración de InfluxDB sera http://localhost:8086, el tipo de acceso sera proxy, ya que queremos que interprete los valores en el formato que los pasa collectd y los inserte en la base con el formato apropiado y no escribiremos directamente en la base. Lo ultimo que configuraremos es el nombre que le hayamos dado a la base de datos, este deberá coincidir con el que configuramos al instalar InfluxDB.

Si todo esta bien, al salvar la configuración, se nos indicara que todo esta correcto y podremos comenzar a usar nuestro sistema.

 

 

 

Primero cargaremos algunos datos en la base para utilizar de prueba, para esto, utilizaremos el plugin «Memory» de collectd para recoger métricas de memoria del equipo local y reiniciaremos collectd para activarlo. Lo mismo seria si la configuracion fuera en otro equipo ya que al haber configurado el plugin network apuntando a nuestra base, los datos llegarian de la misma forma.

echo "LoadPlugin memory
<Plugin memory>
 ValuesAbsolute true
 ValuesPercentage false
</Plugin>" > /etc/collectd/collectd.conf.d/memory.conf

grafana new dashboard panelVolveremos ahora a la interfaz y generaremos un nuevo dashboard donde graficaremos las métricas de memoria que collectd esta mandando. Agregaremos para esto, un panel del tipo gráfica, presionando sobre el titulo de la misma y luego «edit», podremos cargar la consulta que hará que nuestra gráfica se pueble.

grafana memory value metricaComo ejemplo, cargaremos la consulta de la imagen para graficar todos los valores entregados por el colector, solo deberemos modificar el nombre del host, por el del equipo al que pertenezcan las estadísticas.

 

grafana dashboard axes

 

Para este ejemplo particular, cambiaremos también las unidades en la que se mostraran los ejes, para esto, vamos a la pestaña «Axes» y cambiamos las unidad es por «bits» y por ultimo, haremos que los valores se muestren en stack, para ver mas fácil que parte de la memoria ocupa cada uno de los valores, esto lo haremos en la pestaña «Display» marcando «Stack» como activo.

grafana dashboard display

 

 

 

Esto nos generara una gráfica similar a la siguiente:

grafana memoria dashboard

Con esto, habremos validado que nuestra sistema esta instalado correctamente y podremos empezar a recolectar datos de los sistemas que veamos necesarios, si bien no es la grafica mas divertida de ver, sabemos que todo funciona.

Un ejemplo de algo un poco mas divertido, es por ejemplo un router

grafana router dashboard

 

En entradas posteriores, veremos como recolectar datos por SNMP y también utilizando scripts propios, lo que hará que nada se nos pueda llegar a escapar.

Hasta la próxima.

Deja un comentario