30/04/2016

Use different source or destination in one config file - Telegraf

Data and metrics are my favorite parts, that's why I really love InfluxDB and its stack (TICK stack which is: Telegraf, InfluxDB, Chronograf, and Kapacitor) ... but actually I like to use Grafana instead Chronograf.

One of these component is Telegraf, which is a nice daemon like collectd with a lot of extensions.
Telegraf is an open source agent written in Go for collecting metrics and data on the system it’s running on or from other services. Telegraf then writes the data to InfluxDB in the correct format.
Sometimes you need Telegraf to send metrics to more than one database, and instead using multi configuration files, you can do this by filler the data.

Telegraf has many measurement filters that allow you to pass or drop specific metrics to specific database within the same configuration file.

In this example, you will pass all PostgreSQL metrics to specific database (which is InfluxDB database called "postgres"). Note "namepass" at the end of example.

Remember, if you have another output source (e.g. another InfluxDB for rest of system metrics), you still need to filter this value by using "namedrop".

The best practice here is to don't use "catch-all" database, and specify metrics that you need to sent each database using "namepass".

###############################################################################
#                                  OUTPUTS                                    #
###############################################################################

# Configuration for influxdb server to send metrics to
[[outputs.influxdb]]
  # The full HTTP or UDP endpoint URL for your InfluxDB instance.
  # Multiple urls can be specified but it is assumed that they are part of the same
  # cluster, this means that only ONE of the urls will be written to each interval.
  urls = ["http://127.0.0.1:8086"] # required
  # The target database for metrics (telegraf will create it if not exists)
  database = "postgres" # required
  # Precision of writes, valid values are n, u, ms, s, m, and h
  # note: using second precision greatly helps InfluxDB compression
  precision = "s"

  # Connection timeout (for the connection with InfluxDB), formatted as a string.
  # If not provided, will default to 0 (no timeout)
  timeout = "30s"
  username = "INFLUX_USER"
  password = "INFLUX_PASS"
  # Set the user agent for HTTP POSTs (can be useful for log differentiation)
  # user_agent = "telegraf"
  # Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
  # udp_payload = 512
 
  # This metrics only will go to "postgres" database.
  namepass = ["postgresql*"]
So now, all metrics that start with "postgresql" will go to "postgres" (but if you didn't filter this name in other output sources they also will go to other defined databases as well).
Powered by Blogger.

Hello, my name is Ahmed AbouZaid, I'm a passionate Tech Lead DevOps Engineer. 👋

I specialize in Cloud-Native and Kubernetes. I'm also a Free/Open source geek and book author. My favorite topics are DevOps transformation, DevSecOps, automation, data, and metrics.

More about me ➡️

Contact Me

Name

Email *

Message *

Start Your DevOps Engineer Journey!

Start Your DevOps Engineer Journey!
Start your DevOps career for free the Agile way in 2024 with the Dynamic DevOps Roadmap ⭐

Latest Post

Bootstrap Cloud-Native bootstrappers like Crossplane with K3d - Automation

I created a logo for the Crossplane Bootstrapper because all good projects deserve a logo. 😁 TL;DR ...

Popular Posts

Blog Archive