Telegraf puede serializar métricas en los siguientes formatos de datos de salida:

  1. Protocolo de línea InfluxDB
  2. JSON
  3. Grafito

Métricas de Telegraf, como InfluxDB puntos, son una combinación de cuatro partes básicas:

  1. Nombre de la medida
  2. Etiquetas
  3. Los campos
  4. Marca de tiempo

En el protocolo de línea InfluxDB, estas 4 partes se definen fácilmente en forma textual:

measurement_name[,tag1=val1,...]  field1=val1[,field2=val2,...]  [timestamp]

Para salidas de Telegraf que escriben datos textuales (como kafka, mqtt, y file), El protocolo de línea InfluxDB era originalmente el único formato de salida disponible. Pero ahora estamos normalizando los “serializadores” métricos de Telegraf en un interfaz similar a un complemento en todos los complementos de salida que pueden admitirlo. Podrá identificar un complemento que admita diferentes formatos de datos por la presencia de un data_format config opción, por ejemplo, en la file complemento de salida:

[[outputs.file]]
  ## Files to write to, "stdout" is a specially handled file.
  files = ["stdout"]

  ## Data format to output.
  ## 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_OUTPUT.md
  data_format = "influx"

  ## Additional configuration options go here

Cada data_format tiene un conjunto adicional de opciones de configuración disponibles, que veré a continuación.

No hay opciones de configuración adicionales para el protocolo de línea InfluxDB. Las métricas se serializan directamente en el protocolo de línea InfluxDB.

Configuración de afluencia:

[[outputs.file]]
  ## Files to write to, "stdout" is a specially handled file.
  files = ["stdout", "/tmp/metrics.out"]

  ## Data format to output.
  ## 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_OUTPUT.md
  data_format = "influx"

El formato de datos Graphite traduce las métricas de Telegraf a punto cubos. Se puede especificar una plantilla para la salida de métricas de Telegraf en cubos de Graphite. La plantilla predeterminada es:

template = "host.tags.measurement.field"

En la plantilla anterior, tenemos cuatro partes:

  1. anfitrión es una etiqueta key. Esta puede ser cualquier etiqueta key que está en las métricas de Telegraf. Si el key no existe, será ignorado. Si existe, se completará el valor de la etiqueta.
  2. etiquetas es una palabra clave especial que genera todos los valores de etiqueta restantes, separados por puntos y en orden alfabético (por etiqueta key). Estos se completarán después de todas las etiquetas. keys están llenos.
  3. medición es una palabra clave especial que genera el nombre de la medición.
  4. campo es una palabra clave especial que genera el nombre del campo.

Lo que significa que se produciría la siguiente métrica de afluencia -> conversión de grafito:

cpu,cpu=cpu-total,dc=us-east-1,host=tars usage_idle=98.09,usage_user=0.89 1455320660004257758
=>
tars.cpu-total.us-east-1.cpu.usage_user 0.89 1455320690
tars.cpu-total.us-east-1.cpu.usage_idle 98.09 1455320690

Configuración de grafito:

[[outputs.file]]
  ## Files to write to, "stdout" is a specially handled file.
  files = ["stdout", "/tmp/metrics.out"]

  ## Data format to output.
  ## 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_OUTPUT.md
  data_format = "graphite"

  # prefix each graphite bucket
  prefix = "telegraf"
  # graphite template
  template = "host.tags.measurement.field"

El formato de datos JSON serializó las métricas de Telegraf en formato json. El formato es:

"fields":"field_1":30,"field_2":4,"field_N":59,"n_images":660,"name":"docker","tags":"host":"raynor","timestamp":1458229140

Configuración JSON:

[[outputs.file]]
  ## Files to write to, "stdout" is a specially handled file.
  files = ["stdout", "/tmp/metrics.out"]

  ## Data format to output.
  ## 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_OUTPUT.md
  data_format = "json"
  json_timestamp_units = "1ns"

De forma predeterminada, la marca de tiempo que se genera en formato de datos JSON serializado con métricas de Telegraf es en segundos. La precisión de esta marca de tiempo se puede ajustar para cualquier salida agregando el opcional json_timestamp_units parámetro a la configuración para esa salida. Este parámetro se puede utilizar para establecer las unidades de marca de tiempo en nanosegundos (ns), microsegundos (us o µs), milisegundos (ms), o segundos (s). Tenga en cuenta que este parámetro se truncará a la potencia más cercana de 10 que, por lo que si el json_timestamp_units están configurados para 15ms las marcas de tiempo para las métricas de Telegraf serializadas en formato JSON se emitirán en centésimas de segundo (10ms).