Sign inSign up

drpsychick/telegraf

By drpsychick

•Updated 1 day ago

Alpine telegraf configurable through environment

Image
1

10K+

drpsychick/telegraf repository overview

⁠Docker image: drpsychick/telegraf⁠

Docker image Build Status DockerHub pulls GitHub stars DockerHub stars Contributors Paypal GitHub Sponsor

GitHub last commit (branch) license GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests

based on telegraf:alpine docker image

⁠Purpose

  • make it fully configurable through environment variables
  • use one image to run them all
  • run stateless, environment configured containers (see https://12factor.net/⁠)

⁠Usage

⁠UPDATE 2021-04-28

BC Breaking Change in the environments:

The image is now using a small go utility (toml_update) to read, modify and write a valid toml configuration file.

# before
TEL_AGENT_HOSTNAME=hostname = "myhostname"
TEL_OUTPUTS_INFLUXDB_URLS=urls = ["http://yourinfluxhost:8086"]
TEL_INPUTS_CPU_FLAGS = "percpu = true\ntotalcpu = true"
# after
TEL_AGENT_NAMEDOESNOTMATTER=agent.hostname=myhostname
TEL_REALLYDOESNOTMATTER=outputs.influxdb.urls=["https://yourinfluxhost:8086"]
TEL_CPUFLAG1=inputs.cpu.percpu=true
TEL_CPUFLAG2=inputs.cpu.totalcpu=true

Try it in 3 steps

⁠1 create your own telegraf.env
docker run --rm -it drpsychick/telegraf:latest cat /default.env > telegraf.env
⁠2 configure it

Edit at least your hostname and output (influxdb or sth. else) in telegraf.env:

TLG_AGENT_HOSTNAME=agent.hostname="myhostname"
TLG_INFLUXDB_URL=outputs.influxdb.urls=["http://yourinfluxhost:8086"]

You can add as many variables as you want for more inputs and their configuration, there are only a few rules:

  1. the variable must start with a known prefix (the CONF_PREFIX variable in default.env)
  2. the value must be a single row - due to Docker environment variables restrictions
  3. use one variable for each setting

For more examples see default.env

TLG_INPUTS_CPU_PERCPU=inputs.cpu.percpu=true
TLG_INPUTS_CPU_TOTAL=inputs.cpu.totalcpu=true
TLG_INPUTS_CPU_TIME=inputs.cpu.collect_cpu_time=false
TLG_INPUTS_CPU_ACTIVE=inputs.cpu.report_active=false

The toml_update tool will take the configured prefixes in order and update the configuration file from all matching variables one-by-one.

⁠3 test and run it

Run in a separate teminal

docker run --rm -it --cap-add NET_ADMIN --env-file telegraf.env --name telegraf-1 drpsychick/telegraf:latest telegraf --test
docker run --rm -it --cap-add NET_ADMIN --env-file telegraf.env --name telegraf-1 drpsychick/telegraf:latest

Check your influxdb for new input

⁠Configure it to your needs

You can use any TLG_ variable in your telegraf.env. They will be added to the config during container startup.

⁠Example
TLG_INPUTS_DISK_FLAGS=inputs.disk.ignore_fs=["tmpfs", "devtmpfs", "devfs"]

Beware:

Docker only support simple variables. No ", no ' and especially no newlines in variables.

Tag summary

Content type

Image

Digest

sha256:b1b95db29…

Size

100.5 MB

Last updated

1 day ago

docker pull drpsychick/telegraf