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.

¿Por qué compilar collectd en lugar de instalarlo desde paquete? Porque collectd soporta un gran número de servicios, aplicaciones y dispositivos. Con lo cual, por defecto en Debian y derivados, se instala con soporte para todas las características disponibles:

root@devuan:~/collectd-5.8.0# apt-get install -s collectd | grep Inst
Inst libtokyocabinet9 (1.4.48-11+b1 Devuan:2.0/stable [amd64])
Inst collectd-core (5.7.1-1.1 Devuan:2.0/stable [amd64])
Inst libdbi1 (0.9.0-4+deb9u1 Devuan:2.0/stable [amd64])
Inst librrd8 (1.6.0-1+b2 Devuan:2.0/stable [amd64])
Inst collectd (5.7.1-1.1 Devuan:2.0/stable [amd64])
Inst libdevmapper-event1.02.1 (2:1.02.137-2 Devuan:2.0/stable [amd64])
Inst liblvm2cmd2.02 (2.02.168-2 Devuan:2.0/stable [amd64]) []
Inst dmeventd (2:1.02.137-2 Devuan:2.0/stable [amd64])
Inst libapr1 (1.5.2-5 Devuan:2.0/stable [amd64])
Inst libconfuse-common (3.0+dfsg-2 Devuan:2.0/stable [all])
Inst libconfuse1 (3.0+dfsg-2 Devuan:2.0/stable [amd64])
Inst libesmtp6 (1.0.6-4.2 Devuan:2.0/stable [amd64])
Inst libftdi1 (0.20-4 Devuan:2.0/stable [amd64])
Inst libganglia1 (3.6.0-7+b1 Devuan:2.0/stable [amd64])
Inst libgps22 (3.16-4 Devuan:2.0/stable [amd64])
Inst libhiredis0.13 (0.13.3-2 Devuan:2.0/stable [amd64])
Inst liblua5.1-0 (5.1.5-8.1+b2 Devuan:2.0/stable [amd64])
Inst liblua5.3-0 (5.3.3-1 Devuan:2.0/stable [amd64])
Inst liblvm2app2.2 (2.02.168-2 Devuan:2.0/stable [amd64])
Inst mysql-common (5.8+1.0.2 Devuan:2.0/stable [all])
Inst libmariadbclient18 (10.1.26-0+deb9u1 Devuan:2.0/stable, Devuan-Security:2.0/stable-security [amd64])
Inst libmemcached11 (1.0.18-4.1 Devuan:2.0/stable [amd64])
Inst libmicrohttpd12 (0.9.51-1 Devuan:2.0/stable [amd64])
Inst libc-ares2 (1.12.0-1+deb9u1 Devuan:2.0/stable [amd64])
Inst libmosquitto1 (1.4.10-3+deb9u1 Devuan:2.0/stable [amd64])
Inst libnl-route-3-200 (3.2.27-2 Devuan:2.0/stable [amd64])
Inst libopenipmi0 (2.0.22-1.1 Devuan:2.0/stable [amd64])
Inst liboping0 (1.9.0-1+b1 Devuan:2.0/stable [amd64])
Inst libprotobuf-c1 (1.2.1-2 Devuan:2.0/stable [amd64])
Inst librabbitmq4 (0.8.0-1+b3 Devuan:2.0/stable [amd64])
Inst librdkafka1 (0.9.3-1 Devuan:2.0/stable [amd64])
Inst libreadline5 (5.2+dfsg-3+b1 Devuan:2.0/stable [amd64])
Inst librte-eal3 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-acl2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-cfgfile2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-cmdline2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-kvargs1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-ring1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-mempool2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-mbuf2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-cryptodev2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-distributor1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-net1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-ethdev5 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-hash2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-ip-frag1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-jobstats1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-kni2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-lpm2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-meter1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pdump1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-timer1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-sched1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-port3 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-table2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pipeline3 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-af-packet1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-bnxt1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-bond1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-cxgbe1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-e1000-1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-ena1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-enic1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-fm10k1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-i40e1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-ixgbe1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-null-crypto1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-null1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-pcap1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-qede1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-ring2 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-vhost3 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-vhost1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-virtio1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-pmd-vmxnet3-uio1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst libxenstore3.0 (4.8.4+xsa273+shim4.10.1+xsa273-1+deb9u10 Devuan-Security:2.0/stable-security [amd64])
Inst librte-pmd-xenvirt1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-power1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst librte-reorder1 (16.11.6-1+deb9u1 Devuan:2.0/stable [amd64])
Inst libsnmp-base (5.7.3+dfsg-1.7 Devuan:2.0/stable [all])
Inst libsnmp30 (5.7.3+dfsg-1.7 Devuan:2.0/stable [amd64])
Inst libupsclient4 (2.7.4-5 Devuan:2.0/stable [amd64])
Inst libvarnishapi1 (5.0.0-7+deb9u2 Devuan:2.0/stable, Devuan-Security:2.0/stable-security [amd64])
Inst libxen-4.8 (4.8.4+xsa273+shim4.10.1+xsa273-1+deb9u10 Devuan-Security:2.0/stable-security [amd64])
Inst libvirt0 (3.0.0-4+deb9u3 Devuan:2.0/stable, Devuan-Security:2.0/stable-security [amd64])
Inst libzip4 (1.1.2-1.1+b1 Devuan:2.0/stable [amd64])
Inst lvm2 (2.02.168-2 Devuan:2.0/stable [amd64])
Inst rrdtool (1.6.0-1+b2 Devuan:2.0/stable [amd64])
Inst libmodbus5 (3.0.6-2 Devuan:2.0/stable [amd64])
Inst owfs-common (3.1p5-1 Devuan:2.0/stable [all])
Inst libow-3.1-5 (3.1p5-1 Devuan:2.0/stable [amd64])
Inst libowcapi-3.1-5 (3.1p5-1 Devuan:2.0/stable [amd64])
Inst libriemann-client0 (1.9.1-1+b1 Devuan:2.0/stable [amd64])
Inst libserialport0 (0.1.1-1 Devuan:2.0/stable [amd64])
Inst libsigrok2 (0.3.0-1+b1 Devuan:2.0/stable [amd64])
Inst libtokyotyrant3 (1.1.40-4.2+b1 Devuan:2.0/stable [amd64])

Es probable que no hagamos uso de siquiera un tercio de estas características, con lo cual es preferible compilarlo e instalarlo manualmente (para mantener así un sistema operativo limpio y eficiente).

Obtener la última versión estable desde el sitio de descargas: Download - collectd.

root@devuan:~# wget https://storage.googleapis.com/collectd-tarballs/collectd-5.8.0.tar.bz2

Extraer el paquete:

root@devuan:~# tar xjf collectd-5.8.0.tar.bz2 
root@devuan:~# cd collectd-5.8.0

El archivo README detalla las librería necesarias para dar soporte a cada característica:

root@devuan:~/collectd-5.8.0# less README

Dentro de ese archivo, bajar hasta la sección "Prerequisites", la cual indica qué dependencias requiere cada plugin.

Luego instalar las dependencias necesarias para dar soporte a las características y plugins que se utilizarán:

Algunas librerías interesantes para obtener datos de servidores Web y bases de datos son:

  • libcurl para obtener datos de servidores Nginx/Apache
  • libiptc para consultar contadores de iptables
  • libmysqlclient obviamente para consultar servidores MySQL
  • libpq ídem para PostgreSQL

En Devuan se instalan los siguientes paquetes:

root@devuan:~/collectd-5.8.0# apt-get install libcurl4-openssl-dev libiptc-dev default-libmysqlclient-dev libpq-dev

Configurar el paquete collectd:

root@devuan:~/collectd-5.8.0# ./configure

Al final del proceso de compilación, el script muestra las características y módulos disponibles de acuerdo a la configuración actual del sistema operativo. Verificar si los módulos necesarios figuran habilitados:

    nginx . . . . . . . . yes

Compilar e instalar el paquete collectd:

root@devuan:~/collectd-5.8.0# make && make install

Por defecto instala los archivos dentro de /opt:

root@devuan:~/collectd-5.8.0# ll /opt/collectd/
total 36
drwxr-xr-x 9 root root 4096 oct 10 10:39 .
drwxr-xr-x 4 root root 4096 oct 10 10:39 ..
drwxr-xr-x 2 root root 4096 oct 10 11:29 bin
drwxr-xr-x 2 root root 4096 oct 10 11:29 etc
drwxr-xr-x 3 root root 4096 oct 10 10:39 include
drwxr-xr-x 4 root root 4096 oct 10 11:29 lib
drwxr-xr-x 2 root root 4096 oct 10 11:29 sbin
drwxr-xr-x 4 root root 4096 oct 10 10:39 share
drwxr-xr-x 5 root root 4096 oct 10 10:39 var

Descargar e instalar el script de inicio del servicio:

root@devuan:~/collectd-5.8.0# wget https://raw.githubusercontent.com/linuxitux/scripts/master/Devuan/collectd.init.d
root@devuan:~/collectd-5.8.0# cp collectd.init.d /etc/init.d/collectd

Configurar el demonio collectd para recupere información básica de uso de CPU y memoria:

root@devuan:~# nano /opt/collectd/etc/collectd.conf

Descender hasta la configuración del plugin "cpu" y cambiar:

#<Plugin cpu>
#  ReportByCpu true
#  ReportByState true
#  ValuesPercentage false
#  ReportNumCpu false
#  ReportGuestState false
#  SubtractGuestState true
#</Plugin>

Por:

<Plugin cpu>
  ReportByCpu true
  ReportByState true
  ValuesPercentage false
#  ReportNumCpu false
#  ReportGuestState false
#  SubtractGuestState true
</Plugin>

Luego descender hasta la configuración del plugin "network" y cambiar:

<Plugin network>
#       # client setup:
        Server "ff18::efc0:4a42" "25826"
        <Server "239.192.74.66" "25826">
#               SecurityLevel Encrypt
#               Username "user"
#               Password "secret"
#               Interface "eth0"
#               ResolveInterval 14400
        </Server>

Por:

<Plugin network>
#       # client setup:
        Server "127.0.0.1" "25826"
#       <Server "239.192.74.66" "25826">
#               SecurityLevel Encrypt
#               Username "user"
#               Password "secret"
#               Interface "eth0"
#               ResolveInterval 14400
#       </Server>

De esta forma se configura collectd para que envíe los datos a la dirección IP de localhost y puerto 25826, donde estará escuchando el servidor InfluxDB.

Asegurarse de que las siguientes líneas estén presentes (y sin comentar) en el archivo de configuración de collectd:

LoadPlugin cpu
LoadPlugin network

Reiniciar collectd:

root@devuan:~# service collectd stop
Stopping Statistics collection daemon: collectd.
root@devuan:~# service collectd start
Starting Statistics collection daemon: collectd (collectd).

Para comprobar el funcionamiento de collectd, es posible observar el tráfico de red UDP hacia el puerto 25826 en la interfaz loopback (o eth0 si se configurará para que envíe estadísticas a InfluxDB a través de una dirección IP de la red local) utilizando tcpdump:

root@devuan:~# apt-get install tcpdump

La configuración por defecto de collectd recolecta estadísticas cada 10 segundos:

root@devuan:~# tcpdump -i lo -p -n dst port 25826
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
09:03:23.380787 IP 127.0.0.1.52124 > 127.0.0.1.25826: UDP, length 1329
09:03:33.380528 IP 127.0.0.1.52124 > 127.0.0.1.25826: UDP, length 1329
^C
2 packets captured
4 packets received by filter
0 packets dropped by kernel

Luego de más de 20 segundos se observan 2 paquetes UDP hacia el puerto 25826.

Si se desea incrementar la frecuencia de toma de muestras, cambiar el valor de la opción Interval en el archivo de configuración de collectd (/opt/collectd/etc/collectd.conf):

#Interval     10
Interval 5

Instalar InfluxDB

InfluxDB es una base de datos open-source orientada a series de tiempo (time series) desarrollada por InfluxData. Está escrita en Go y optimizada para el almacenamiento (rápido y de alta disponibilidad) y recuperación de datos en series de tiempo en aplicaciones de monitoreo de operaciones, métricas de aplicaciones, datos de sensores IoT, y analítica de tiempo real.

Ya que posee pocas dependencias, es recomendable instalar el servidor y cliente InfluxDB desde paquete, simplemente ejecutando:

root@devuan:~# apt-get install influxdb influxdb-client
root@devuan:~# netstat -tulpn | grep influx
tcp6       0      0 :::8083                 :::*                    LISTEN      20664/influxd
tcp6       0      0 :::8086                 :::*                    LISTEN      20664/influxd
tcp6       0      0 :::8088                 :::*                    LISTEN      20664/influxd

Conectarse con el cliente influx y crear una base de datos para collectd:

root@devuan:~# influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 1.0.2
InfluxDB shell version: 1.0.2
> create database collectd
> quit

Luego configurar el servidor InfluxDB:

root@devuan:~# nano /etc/influxdb/influxdb.conf

Descender hasta la sección "[[collectd]]" y aplicar la siguiente configuración:

[[collectd]]
  enabled = true 
  bind-address = "127.0.0.1:25826"
  database = "collectd"
  typesdb = "/opt/collectd/share/collectd/types.db"

  # These next lines control how batching works. You should have this enabled
  # otherwise you could get dropped metrics or poor performance. Batching
  # will buffer points in memory if you have many coming in.

  batch-size = 1000 # will flush if this many points get buffered
  batch-pending = 10 # number of batches that may be pending in memory
  batch-timeout = "10s" # will flush at least this often even if we haven't hit buffer limit
  read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.

Verificar que la ruta a la base de tipos de datos (variable typesdb) sea correcta. Guardar los cambios y reiniciar InfluxDB:

root@devuan:~# service influxdb restart
[ ok ] Restarting database: influxd[....] Stopping database: influxd.
[ ok ] Starting database: influxd.
[ ok ] influxd is running.

Verificar que InfluxDB esté levantado:

root@devuan:~# netstat -ulpn | grep influx
udp       0      0 127.0.0.1:25826         0.0.0.0:*                           21320/influxd

Consultar datos con el cliente influx

Antes de comenzar a trabajar con el cliente de línea de comandos influx, vale aclarar algunas particularidades de InfluxDB.

En InfluxDB los datos se organizan en bases de datos (databases) y métricas (measurements). Las métricas cumplen el rol de "tablas" en motores SQL convencionales, y tienen la particularidad de no estar organizadas en columnas sino en campos y tags. Diferentes combinaciones de tags permiten obtener diferentes conjuntos de valores para los campos de una métrica. Esto se conoce como "series". Los tags, a diferencia de los valores de los campos de las métricas, son indexados para acelerar las consultas. Una serie es un conjunto de datos que comparte la misma métrica, tags, y política de retención.

La política de retención es otra característica especial ya que, a diferencia de los motores de bases de datos convencionales, en InfluxDB los datos no son persistentes sino que son almacenados sólo por un cierto período de tiempo. Esto se debe a que las métricas de rendimiento se acumulan rápidamente y no tiene sentido almacenarlas por mucho tiempo. Si no se especifica una política al crear una base de datos, la duración por defecto es de 7 días (en las referencias al final del artículo se incluye un enlace que explica en detalle la configuración de políticas de retención y shards).

A su vez, InfluxDB posee un lenguaje de consulta InfluxQL de tipo SQL que permite obtener información de bases de datos, tablas, y realizar operaciones convencionales sobre los datos.

Utilizando el cliente de línea de comandos influx, es posible entonces ver qué métricas está cargando collectd en la base de datos InfluxDB:

root@devuan:~# influx
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:8086 version 1.0.2
InfluxDB shell version: 1.0.2
> show databases
name: databases
---------------
name
_internal
collectd

> use collectd
Using database collectd

La base de datos "collectd" posee las siguientes métricas:

> show measurements
name: measurements
------------------
name
cpu_value
interface_rx
interface_tx
load_longterm
load_midterm
load_shortterm
memory_value

Y las siguientes series:

> show series
key
cpu_value,host=devuan,instance=0,type=cpu,type_instance=idle
cpu_value,host=devuan,instance=0,type=cpu,type_instance=interrupt
cpu_value,host=devuan,instance=0,type=cpu,type_instance=nice
cpu_value,host=devuan,instance=0,type=cpu,type_instance=softirq
cpu_value,host=devuan,instance=0,type=cpu,type_instance=steal
cpu_value,host=devuan,instance=0,type=cpu,type_instance=system
cpu_value,host=devuan,instance=0,type=cpu,type_instance=user
cpu_value,host=devuan,instance=0,type=cpu,type_instance=wait
interface_rx,host=devuan,instance=eth0,type=if_dropped
interface_rx,host=devuan,instance=eth0,type=if_errors
interface_rx,host=devuan,instance=eth0,type=if_octets
interface_rx,host=devuan,instance=eth0,type=if_packets
interface_rx,host=devuan,instance=eth1,type=if_dropped
interface_rx,host=devuan,instance=eth1,type=if_errors
interface_rx,host=devuan,instance=eth1,type=if_octets
interface_rx,host=devuan,instance=eth1,type=if_packets
interface_rx,host=devuan,instance=lo,type=if_dropped
interface_rx,host=devuan,instance=lo,type=if_errors
interface_rx,host=devuan,instance=lo,type=if_octets
interface_rx,host=devuan,instance=lo,type=if_packets
interface_tx,host=devuan,instance=eth0,type=if_dropped
interface_tx,host=devuan,instance=eth0,type=if_errors
interface_tx,host=devuan,instance=eth0,type=if_octets
interface_tx,host=devuan,instance=eth0,type=if_packets
interface_tx,host=devuan,instance=eth1,type=if_dropped
interface_tx,host=devuan,instance=eth1,type=if_errors
interface_tx,host=devuan,instance=eth1,type=if_octets
interface_tx,host=devuan,instance=eth1,type=if_packets
interface_tx,host=devuan,instance=lo,type=if_dropped
interface_tx,host=devuan,instance=lo,type=if_errors
interface_tx,host=devuan,instance=lo,type=if_octets
interface_tx,host=devuan,instance=lo,type=if_packets
load_longterm,host=devuan,type=load
load_midterm,host=devuan,type=load
load_shortterm,host=devuan,type=load
memory_value,host=devuan,type=memory,type_instance=buffered
memory_value,host=devuan,type=memory,type_instance=cached
memory_value,host=devuan,type=memory,type_instance=free
memory_value,host=devuan,type=memory,type_instance=slab_recl
memory_value,host=devuan,type=memory,type_instance=slab_unrecl
memory_value,host=devuan,type=memory,type_instance=used

Aquí se comprende el sentido de los tags. Para una misma métrica, como "memory_value", se discriminan los valores almacenados de acuerdo a si se trata de espacio libre (type_instance=free), utilizado (type_instance=used), etc.

Las diferentes métricas insertadas por collectd tienen un único campo llamado "value", tal como se observa en la siguiente salida:

> show field keys
name: cpu_value
---------------
fieldKey        fieldType
value           float

name: interface_rx
------------------
fieldKey        fieldType
value           float

name: interface_tx
------------------
fieldKey        fieldType
value           float

name: load_longterm
-------------------
fieldKey        fieldType
value           float

name: load_midterm
------------------
fieldKey        fieldType
value           float

name: load_shortterm
--------------------
fieldKey        fieldType
value           float

name: memory_value
------------------
fieldKey        fieldType
value           float

El lenguaje InfluxQL resulta similar a SQL. Por ejemplo, si se desean obtener la últimas 10 mediciones de CPU utilizado por el usuario, ejecutar la siguiente consulta:

> select value from cpu_value where type_instance='user' order by time desc limit 10
name: cpu_value
---------------
time                    value
1539263623431897000     555
1539263613431932000     555
1539263603431956000     554
1539263593431899000     554
1539263583431933000     554
1539263573431936000     554
1539263563431930000     554
1539263553431934000     553
1539263543432231000     553
1539263533432176000     552

Notar la mezcla entre campos y tags en la consulta.

Para mayor información sobre InfluxDB e InfluxQL, revisar las referencias a continuación.

En el próximo artículo veremos cómo visualizar estos datos en Grafana.

Referencias


Tal vez pueda interesarte


Compartí este artículo