Instalación y Configuración de Telegraf para la obtencion de metricas.

Telegraf es un agente multiplataformas que se encarga de recoger datos y enviarlos a nuestros recolectores.

Podemos estraer datos de mas de 100+ Plugins (Cpu, memoria, Vcenter, http,…) y enviar a más de 50+ tipos diferentes (InfluxDB, Prometheus, Json, Azure, …) y mucho mas.

[toc]

Instalación Windows

Para la instalación en un equipo Windows es bien sencilla, descargaremos telegraf https://portal.influxdata.com/downloads/, lo descomprimimos y copiamos la carpeta donde deseemos.

Install Telegraf | Telegraf 1.24 Documentation (influxdata.com)

Using Telegraf on Windows | InfluxData

La imagen tiene un atributo ALT vacío; su nombre de archivo es imagen-32.png
Ficheros Telegraf

Servicio de Windows

Para configurar telegraf como un servicio de Windows, ejecutaremos lo siguiente:

telegraf.exe --service install --config "carpeta\telegraf.conf"
*Adcionalmente podemos especificar una carpeta si tenemos los ficheros .conf en otra carpeta: 
--config-directory 'C:\Program Files\telegraf\conf
https://github.com/influxdata/telegraf/blob/master/docs/WINDOWS_SERVICE.md

Los distintos comandos que tenemos son: Install Telegraf | Telegraf 1.24 Documentation (influxdata.com)

Linux

Para instalar en Linux ejecutaremos los siguientes comandos.

1. sudo wget -qO- https://repos.influxdata.com/influxdb.key | sudo tee /etc/apt/trusted.gpg.d/influxdb.asc >/dev/null
2. source /etc/lsb-release
3. echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
4. apt install telegraf

Ficheros Configuración

Configuration options | Telegraf 1.24 Documentation (influxdata.com)

El primero sera el apartado de “Agent” que establecemos cada cuanto ejecutaremos la recolección y envio de datos.

[agent]
  #Cada cuanto capturar los datos
  interval = "60s"
  ## Si interval="10s" colecionara cada :00, :10, :20, etc.
  round_interval = true

  #Tamaño del buffer hasta que envie los datos
  #https://github.com/influxdata/telegraf/wiki/MetricBuffer
  metric_batch_size = 1000
  #Tamaño maximo del Buffer
  metric_buffer_limit = 10000

  #Permite alterar las capturas de datos en un tiempo aleatorio, para no saturar el sistema al    capturar datos.
  collection_jitter = "0s"

  #Intervalo de envio de datos outputs
  flush_interval = "10s"
  #agregamos un intervalo de tiempo para el envio de datos
  flush_jitter = "0s"

  #Se utiliza para redondear la metricas
  precision = ""

  ## Logging configuration:
  #Ejecución en modo debug.
  debug = false
  #solo muestra mensajes de error.
  quiet = false
  #esteblece la ubicación del fichero de log.
  logfile = "/Program Files/Telegraf/telegraf.log"

  #podemos especificar un nombre de hostname, si esta vacio es el propio de la máquina.
  hostname = ""
  #Elimina el tag de host.
  omit_hostname = false

Ahora necesitamos indicar el output o salida de datos.

Plugin directory | Telegraf 1.24 Documentation (influxdata.com)

[[outputs.influxdb_v2]]
  urls = ["http://servidor_influx:8086"]
  token = "Token"
  organization = "Mordor World"
  bucket = "telegraf"
  
#https://github.com/influxdata/telegraf/blob/release-1.24/plugins/outputs/influxdb_v2/README.md

Windows counters

y ahora toca especificar los inputs que es lo que vamos a capturar del equipo local u de algun sitio remoto, en windows

  [[inputs.win_perf_counters]]
##Captura de Contadores de procesador
  [[inputs.win_perf_counters.object]]
    # Processor usage, alternative to native, reports on a per core.
    ObjectName = "Processor"
    Instances = ["*"]
    Counters = [
      "% Idle Time",
      "% Interrupt Time",
      "% Privileged Time",
      "% User Time",
      "% Processor Time",
      "% DPC Time",
    ]
    Measurement = "win_cpu"
    # Set to true to include _Total instance when querying for all (*).
    IncludeTotal=true

##Captura de Contadores de Memoria
  [[inputs.win_perf_counters.object]]
    # Example query where the Instance portion must be removed to get data back,
    # such as from the Memory object.
    ObjectName = "Memory"
    Counters = [
      "Available Bytes",
      "Cache Faults/sec",
      "Demand Zero Faults/sec",
      "Page Faults/sec",
      "Pages/sec",
      "Transition Faults/sec",
      "Pool Nonpaged Bytes",
      "Pool Paged Bytes",
      "Standby Cache Reserve Bytes",
      "Standby Cache Normal Priority Bytes",
      "Standby Cache Core Bytes",

    ]
    # Use 6 x - to remove the Instance bit from the query.
    Instances = ["------"]
    Measurement = "win_mem"
    # Set to true to include _Total instance when querying for all (*).
    #IncludeTotal=false

Para agregar más counters se agrupa de la siguiente forma.

  [[inputs.win_perf_counters.object]]     # Tipo de objeto counter
    ObjectName = "Paging File"            # Nombre del Objeto
    Counters = [                          # Datos a capturar
      "% Usage",
    ]
    Instances = ["_Total"]                # Instancia
    Measurement = "win_swap"              # Nombre de la tabla en donde guardar los datos.

Para ver los contadores de Windows, ejecutar “Perfmon”.

Para ver los contadores usar sistema operativo en inglés.

Linux

Para capturar metrics de linux por ejemplo

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = falseCopy

[[inputs.disk]]  
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

[[inputs.diskio]]Copy

[[inputs.internal]]  
  collect_memstats = trueCopy

[[inputs.kernel]]  
  # no configurationCopy

[[inputs.mem]]  
  # no configurationCopy
/etc/telegraf/telegraf.d/net.conf

[[inputs.net]]Copy

[[inputs.swap]]  
  # no configurationCopy

[[inputs.processes]]  
  # no configurationCopy

[[inputs.system]]  
  ## Uncomment to remove deprecated metrics.  
  # fielddrop = ["uptime_format"]

Comandos Telegraf

Despondremos tambien de algunos comando extras para configurar nuestros ficheros de configuración o pruebas de telegraf.

  --aggregator-filter <filter>   filter the aggregators to enable, separator is :
  --config <file>                configuration file to load
  --config-directory <directory> directory containing additional *.conf files
  --debug                        turn on debug logging
  --input-filter <filter>        filter the inputs to enable, separator is :
  --input-list                   print available input plugins.
  --output-filter <filter>       filter the outputs to enable, separator is :
  --output-list                  print available output plugins.
  --pidfile <file>               file to write our pid to
  --pprof-addr <address>         pprof address to listen on, don't activate pprof if empty
  --processor-filter <filter>    filter the processors to enable, separator is :
  --quiet                        run in quiet mode
  --sample-config                print out full sample configuration
  --test                         gather metrics, print them out, and exit;
                                 processors, aggregators, and outputs are not run
  --usage <plugin>               print usage for a plugin, ie, 'telegraf --usage mysql'
  --version                      display the version and exit

  --console                      run as console application (windows only)
  --service <service>            operate on the service (windows only)
  --service-name                 service name (windows only)

Crear fichero .conf

Vamos a crear un fichero para ello utilizamos el parametro “–sample-config” y queremos capturar cpu, mem, net y salida a influx.

telegraf --sample-config -input-filter cpu:mem:net --output-filter influx_v2 > ./telegraf.conf

-input-filter cpu:mem:net
--output-filter influx_v2

Test fichero

Para validar el fichero agregamos al comando –test

telegraf --test --config ./telegraf.conf --config-directory ./telegraf.d/

Mensaje de Deprecated Warning al realizar el Test

Si recibimos el siguiente mensaje lo podemos eliminar agregando en telegraf.conf

Multiple config files gives bogus netsnmp deprecation warning if agent section isn’t in first file read · Issue #12454 · influxdata/telegraf · GitHub

[agent]
snmp_translator = "gosmi"

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *