InfluxDBWeek: Cómo armé un dashboard sobre COVID-19 con InfluxDB.

Estuve jugando con inyección de datos JSON a InfluxDB y la explotación de los mismos. El resultado: Un Dashboard con datos del COVID-19 en la región.

InfluxDB, Chronograf, Grafana y todo, esta muy bueno para monitorear sistemas y analizar data sobre los mismos, pero también hay un potencial enorme para explotar otro tipo de datos.

En este caso arme un Dashboard con información sobre el COVID-19 en la región que incluye, Argentina, Bolivia, Brasil, Chile, Paraguay y Uruguay. Cantidad de casos, el cambio diario en esos países, los fallecimientos y las gráficas para "analizar curvas", también meti los datos mundial como para tener cierta referencia entre tanto dato "local".

El Dashboard es el siguiente:

¿Cómo está armado esto?

Esto lo arme usando la siguiente API que a su vez recopila información de varias fuentes.

ExpDev07/coronavirus-tracker-api
🦠 A simple and fast (< 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak. It's written in python using the 🔥 FastAPI framework. Supports multiple sources! - ExpD...

Básicamente, lo que hice fue armar unos archivos ejecutables, uno para cada país con la siguiente línea. Por ejemplo, para Uruguay, fue así:

curl -s https://coronavirus-tracker-api.herokuapp.com/v2/locations/224 | json_pp

Esto es un "curl" que de manera silenciosa consume la API y el resultado lo vuelca en formato JSON.

Este a su vez lo invoca Telegraf, usando el Input "exec", quedando mas o menos así:

[[inputs.exec]]
  ## Commands array
  commands = [
    "sh /Users/nacho/docker/influxdb2.0-covid/uruguay.sh"
  ]

  ## Timeout for each command to complete.
  timeout = "30s"

  ## measurement name suffix (for separating different commands)
  name_suffix = "_uruguay"

  ## Data format to consume.
  ## Each data format has its own unique set of configuration options, read
  ## more about them here:
  ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
  data_format = "json"

Es importante especificar el "name_suffix" para almacenar y poder encontrar en el "bucket" la información de cada país y el "data_format" para que la información se procese de manera correcta.

Una vez configurados los inputs y los sh, me puse a jugar con cómo explotar los datos en el "data explorer" de InfluxDB.

Por ejemplo, para el caso de cuánto son los casos acumulados en Uruguay, use la siguiente "query":

from(bucket: "covid")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "exec_uruguay")
  |> filter(fn: (r) => r["_field"] == "location_latest_confirmed")

Especifique un tipo de gráfico "Single Stat" y quedo el número, así lo hice con cada uno, luego, para ver cuántos casos nuevos hay cada día. Use la siguiente "query":

from(bucket: "covid")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "exec_uruguay")
  |> filter(fn: (r) => r["_field"] == "location_latest_confirmed")
  |> increase()
  |> yield(name: "increase")

De la misma manera, lo grafique con "Single Stat".

La suma de todos, lo hice con la siguiente "query":

from(bucket: "covid")
  |> range(start: -1m)
  |> filter(fn: (r) => r["_measurement"] == "exec_argentina" or r["_measurement"] == "exec_uruguay" or r["_measurement"] == "exec_bolivia" or r["_measurement"] == "exec_paraguay" or r["_measurement"] == "exec_chile" or r["_measurement"] == "exec_brasil")
  |> filter(fn: (r) => r["_field"] == "location_latest_confirmed")
  |> mean()
  |> group()
  |> sum()

Y fui jugando hasta que quedó el dashboard que ven más arriba.  Como ven, no es complicado en absoluto, hay que tener paciencia para jugar con el lenguaje "Flux" pero nada más que eso.

Acá abajo les dejo el repositorio de Gitlab donde está guardado el Dashboard en JSON para que lo puedan importar, así como también los archivos ejecutables y la configuración que use de Telegraf. Con esto, así como esta, podrían rápidamente tener un dashboard up & running en minutos.

InfluxDBv2_Covid19_SouthAmerica · master · Ignacio Van Droogenbroeck / Chronograf e InfluxDB Dashboards
En este proyecto encontrarás dashboards que he fabricado de Chronograf e InfluxDB v2.

Si te interesa tener corriendo un ambiente, te invito a leer los siguientes artículos:

InfluxDB v2.0

InfluxDBWeek: Cómo Monitorear Linux con InfluxDB 2.0 Beta.
En este artículo te muestro cómo desplegar InfluxDB 2.0 Beta en docker, también veremos cómo monitorear un sistema Linux.

InfluxDB, Chronograf, Kapacitor:

InfluxDBWeek: Cómo desplegar InfluxDB, Chronograf, Kapacitor y Telegraf en Docker + Bonus Track.
Bienvenidos a esta semana dedicada a InfluxDB. Hoy veremos como desplegar en Docker InfluxDB, Chronograf, Kapacitor y Telegraf en Docker.

Contame si lo probaste, si pudiste hacer andar y por supuesto, si tuviste algún problema para poder ayudarte.