Puede ver el último archivo de configuración con todos los complementos disponibles aquí: telegraf.conf

Generación de un archivo de configuración

Telegraf puede generar automáticamente un archivo de configuración predeterminado de Telegraf:

telegraf config > telegraf.conf

Para generar un archivo con entradas y salidas específicas, puede usar las marcas –input-filter y –output-filter:

telegraf --input-filter cpu:mem:net:swap --output-filter influxdb:kafka config

Variables de entorno

Las variables de entorno se pueden usar en cualquier parte del archivo de configuración, simplemente antepóngalas con $. Para cadenas, la variable debe estar entre comillas (es decir, “$ STR_VAR”), para números y valores booleanos deben ser simples (es decir, $ INT_VAR, $ BOOL_VAR)

Las variables de entorno se pueden configurar mediante el comando ‘exportar’ en Linux (es decir, “exportar contraseña = mypassword”). El uso de variables ambientales para información confidencial se considera una mejor práctica.

Ubicaciones de archivos de configuración

La ubicación del archivo de configuración se puede establecer a través del --config bandera de línea de comando. Telegraf también recogerá todos los archivos que coincidan con el patrón *.conf Si el -config-directory se utiliza el indicador de línea de comando.

En la mayoría de los sistemas, las ubicaciones predeterminadas son /etc/telegraf/telegraf.conf para el archivo de configuración principal y /etc/telegraf/telegraf.d para el directorio de archivos de configuración.

Las etiquetas globales se pueden especificar en el [global_tags] sección del archivo de configuración en key= Formato de “valor”. Todas las métricas que se recopilen en este host se etiquetarán con las etiquetas especificadas aquí.

Configuración del agente

Telegraf tiene algunas opciones que puede configurar en la [agent] sección de la configuración.

  • intervalo: Intervalo de recopilación de datos predeterminado para todas las entradas
  • round_interval: Redondea el intervalo de recopilación a ‘intervalo’, es decir, si intervalo = “10s”, siempre recopile en: 00,: 10,: 20, etc.
  • metric_batch_size: Telegraf enviará métricas a la salida en lotes de, como máximo, métricas metric_batch_size.
  • metric_buffer_limit: Telegraf almacenará en caché las métricas metric_buffer_limit para cada salida y vaciará este búfer en una escritura exitosa. Debe ser un múltiplo de metric_batch_size y no puede ser inferior al doble de metric_batch_size.
  • collection_jitter: El jitter de la colección se utiliza para alterar la colección en una cantidad aleatoria. Cada complemento dormirá durante un tiempo aleatorio dentro de la fluctuación antes de recopilar. Esto se puede usar para evitar que muchos complementos consulten cosas como sysfs al mismo tiempo, lo que puede tener un efecto medible en el sistema.
  • flush_interval: Intervalo de descarga de datos predeterminado para todas las salidas. No debe establecer este intervalo a continuación. Flush_interval máximo será flush_interval + flush_jitter
  • flush_jitter: Agita el intervalo de descarga en una cantidad aleatoria. Esto es principalmente para evitar grandes picos de escritura para los usuarios que ejecutan una gran cantidad de instancias de telegraf. es decir, un jitter de 5s y flush_interval 10s significa que los flushes ocurrirán cada 10-15s.
  • precisión: De forma predeterminada, la precisión se establecerá en el mismo orden de marca de tiempo que el intervalo de recopilación, con el máximo de 1 s. La precisión NO se utilizará para entradas de servicio, como logparser y statsd. Los valores válidos son “ns”, “us” (o “µs”), “ms”, “s”.
  • archivo de registro: Especifique el nombre del archivo de registro. El vacío string significa iniciar sesión en stderr.
  • depurar: Ejecute telegraf en modo de depuración.
  • tranquilo: Ejecute telegraf en modo silencioso (solo mensajes de error).
  • nombre de host: Anula el nombre de host predeterminado, si está vacío, use os.Hostname ().
  • omitir nombre de host: Si true, no establezca la etiqueta “host” en el agente de Telegraf.

Configuración de entrada

Los siguientes parámetros de configuración están disponibles para todas las entradas:

  • intervalo: Con qué frecuencia recopilar esta métrica. Los complementos normales usan un único intervalo global, pero si una entrada en particular debe ejecutarse con menos o más frecuencia, puede configurarla aquí.
  • name_override: Anula el nombre base de la medición. (El nombre predeterminado es el de la entrada).
  • prefijo del nombre: Especifica un prefix para adjuntar al nombre de la medición.
  • sufijo de nombre: Especifica un sufijo para adjuntar al nombre de la medición.
  • etiquetas: Un mapa de etiquetas para aplicar a las medidas de una entrada específica.

Configuración de salida

No hay opciones de configuración genéricas disponibles para todas las salidas.

Configuración del agregador

Los siguientes parámetros de configuración están disponibles para todos los agregadores:

  • período: El período en el que limpiar y limpiar cada agregador. El agregador ignorará todas las métricas que se envíen con marcas de tiempo fuera de este período.
  • demora: La demora antes de que se vacíe cada agregador. Esto es para controlar cuánto tiempo deben esperar los agregadores antes de recibir métricas de los complementos de entrada, en el caso de que los agregadores se descarguen y las entradas se recopilen en el mismo intervalo.
  • drop_original: Si true, el agregador eliminará la métrica original y no se enviará a los complementos de salida.
  • name_override: Anula el nombre base de la medición. (El nombre predeterminado es el de la entrada).
  • prefijo del nombre: Especifica un prefix para adjuntar al nombre de la medición.
  • sufijo de nombre: Especifica un sufijo para adjuntar al nombre de la medición.
  • etiquetas: Un mapa de etiquetas para aplicar a las medidas de una entrada específica.

Configuración del procesador

Los siguientes parámetros de configuración están disponibles para todos los procesadores:

  • pedido: Este es el orden en el que se ejecutan los procesadores. Si no se especifica, el orden de ejecución del procesador será aleatorio.

Filtrado de medidas

Los filtros se pueden configurar por entrada, salida, procesador o agregador; consulte los ejemplos a continuación.

  • nombre: Un array de cadenas de patrón glob. Solo se emiten los puntos cuyo nombre de medición coincide con un patrón en esta lista.
  • caída de nombre: El inverso de namepass. Si se encuentra una coincidencia, el punto se descarta. Esto se prueba en puntos después de haber pasado el namepass prueba.
  • pase de campo: Un array de cadenas de patrón glob. Solo campos cuyo campo key coincide con un patrón de esta lista. No disponible para salidas.
  • campo: El inverso de fieldpass. Campos con un campo key que coincida con uno de los patrones se descartará del punto. No disponible para salidas.
  • tagpass: Una etiqueta de mapeo de tabla keys a matrices de cadenas de patrones glob. Solo puntos que contienen una etiqueta key en la tabla y se emite un valor de etiqueta que coincide con uno de sus patrones.
  • etiqueta: El inverso de tagpass. Si se encuentra una coincidencia, el punto se descarta. Esto se prueba en puntos después de haber pasado el tagpass prueba.
  • incluir: Un array de cadenas de patrón glob. Solo etiquetas con una etiqueta key se emiten coincidencias con uno de los patrones. En contraste con tagpass, que pasará un punto completo según su etiqueta, taginclude elimina todas las etiquetas que no coinciden del punto. Este filtro se puede utilizar tanto en entradas como en salidas, pero es recomendado para ser utilizado en entradas, ya que es más eficiente filtrar etiquetas en el punto de ingestión.
  • excluir: El inverso de taginclude. Etiquetas con una etiqueta key que coincida con uno de los patrones se descartará del punto.

NOTA Debido a la forma en que se analiza TOML, tagpass y tagdrop los parámetros deben definirse en el fin de la definición del complemento; de lo contrario, las opciones de configuración del complemento subsiguientes se interpretarán como parte de las tablas tagpass / tagdrop.

Ejemplos de configuración de entrada

Esta es una configuración de trabajo completa que enviará datos de CPU a una instancia de InfluxDB en 192.168.59.103:8086, etiquetando las medidas con dc = “denver-1”. Producirá mediciones en un intervalo de 10 segundos y recopilará datos por cpu, descartando cualquier campo que comience con time_.

[global_tags]
  dc = "denver-1"

[agent]
  interval = "10s"

# OUTPUTS
[[outputs.influxdb]]
  url = "http://192.168.59.103:8086" # required.
  database = "telegraf" # required.
  precision = "s"

# INPUTS
[[inputs.cpu]]
  percpu = true
  totalcpu = false
  # filter all fields beginning with 'time_'
  fielddrop = ["time_*"]

Configuración de entrada: tagpass y tagdrop

NOTAtagpass y tagdrop los parámetros deben definirse en el fin de la definición del complemento; de lo contrario, las opciones de configuración del complemento subsiguientes se interpretarán como parte del mapa tagpass / tagdrop.

[[inputs.cpu]]
  percpu = true
  totalcpu = false
  fielddrop = ["cpu_time"]
  # Don't collect CPU data for cpu6 & cpu7
  [inputs.cpu.tagdrop]
    cpu = [ "cpu6", "cpu7" ]

[[inputs.disk]]
  [inputs.disk.tagpass]
    # tagpass conditions are OR, not AND.
    # If the (filesystem is ext4 or xfs) OR (the path is /opt or /home)
    # then the metric passes
    fstype = [ "ext4", "xfs" ]
    # Globs can also be used on the tag values
    path = [ "/opt", "/home*" ]

Configuración de entrada: fieldpass y fielddrop

# Drop all metrics for guest & steal CPU usage
[[inputs.cpu]]
  percpu = false
  totalcpu = true
  fielddrop = ["usage_guest", "usage_steal"]

# Only store inode related metrics for disks
[[inputs.disk]]
  fieldpass = ["inodes*"]

Configuración de entrada: namepass y namedrop

# Drop all metrics about containers for kubelet
[[inputs.prometheus]]
  urls = ["http://kube-node-1:4194/metrics"]
  namedrop = ["container_*"]

# Only store rest client related metrics for kubelet
[[inputs.prometheus]]
  urls = ["http://kube-node-1:4194/metrics"]
  namepass = ["rest_client_*"]

Configuración de entrada: taginclude y tagexclude

# Only include the "cpu" tag in the measurements for the cpu plugin.
[[inputs.cpu]]
  percpu = true
  totalcpu = true
  taginclude = ["cpu"]

# Exclude the "fstype" tag from the measurements for the disk plugin.
[[inputs.disk]]
  tagexclude = ["fstype"]

Configuración de entrada: prefix, sufijo y anulación

Este complemento emitirá medidas con el nombre cpu_total

[[inputs.cpu]]
  name_suffix = "_total"
  percpu = false
  totalcpu = true

Esto emitirá medidas con el nombre foobar

[[inputs.cpu]]
  name_override = "foobar"
  percpu = false
  totalcpu = true

Configuración de entrada: etiquetas

Este complemento emitirá medidas con dos etiquetas adicionales: tag1=foo y tag2=bar

NOTA: El orden importa, el [inputs.cpu.tags] la mesa debe estar en el fin de la definición del complemento.

[[inputs.cpu]]
  percpu = false
  totalcpu = true
  [inputs.cpu.tags]
    tag1 = "foo"
    tag2 = "bar"

Varias entradas del mismo tipo

Se pueden especificar entradas (o salidas) adicionales del mismo tipo, simplemente defina más instancias en el archivo de configuración. Se recomienda encarecidamente que utilice name_override, name_prefix, o name_suffix opciones de configuración para evitar colisiones de medición:

[[inputs.cpu]]
  percpu = false
  totalcpu = true

[[inputs.cpu]]
  percpu = true
  totalcpu = false
  name_override = "percpu_usage"
  fielddrop = ["cpu_time*"]

Ejemplos de configuración de salida:

[[outputs.influxdb]]
  urls = [ "http://localhost:8086" ]
  database = "telegraf"
  precision = "s"
  # Drop all measurements that start with "aerospike"
  namedrop = ["aerospike*"]

[[outputs.influxdb]]
  urls = [ "http://localhost:8086" ]
  database = "telegraf-aerospike-data"
  precision = "s"
  # Only accept aerospike data:
  namepass = ["aerospike*"]

[[outputs.influxdb]]
  urls = [ "http://localhost:8086" ]
  database = "telegraf-cpu0-data"
  precision = "s"
  # Only store measurements where the tag "cpu" matches the value "cpu0"
  [outputs.influxdb.tagpass]
    cpu = ["cpu0"]

Ejemplos de configuración de agregadores:

Esto recopilará y emitirá el mínimo / máximo de la métrica load1 del sistema cada 30 segundos, eliminando los originales.

[[inputs.system]]
  fieldpass = ["load1"] # collects system load1 metric.

[[aggregators.minmax]]
  period = "30s"        # send & clear the aggregate every 30s.
  drop_original = true  # drop the original metrics.

[[outputs.file]]
  files = ["stdout"]

Esto recopilará y emitirá el mínimo / máximo de las métricas de intercambio cada 30 segundos, eliminando los originales. El agregador no se aplicará a las métricas de carga del sistema debido a la namepass parámetro.

[[inputs.swap]]

[[inputs.system]]
  fieldpass = ["load1"] # collects system load1 metric.

[[aggregators.minmax]]
  period = "30s"        # send & clear the aggregate every 30s.
  drop_original = true  # drop the original metrics.
  namepass = ["swap"]   # only "pass" swap metrics through the aggregator.

[[outputs.file]]
  files = ["stdout"]