https://github.com/drpsychick/docker-telegraf
Telegraf based on alpine, fully configurable through ENV
https://github.com/drpsychick/docker-telegraf
12-factor alpine docker telegraf
Last synced: 11 months ago
JSON representation
Telegraf based on alpine, fully configurable through ENV
- Host: GitHub
- URL: https://github.com/drpsychick/docker-telegraf
- Owner: DrPsychick
- License: gpl-3.0
- Created: 2018-01-07T14:05:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-03-18T19:48:00.000Z (about 1 year ago)
- Last Synced: 2025-04-15T00:32:35.876Z (about 1 year ago)
- Topics: 12-factor, alpine, docker, telegraf
- Language: Shell
- Homepage:
- Size: 94.7 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# [Docker image: drpsychick/telegraf](https://hub.docker.com/r/drpsychick/telegraf/)
[](https://hub.docker.com/r/drpsychick/telegraf/tags)
[](https://app.circleci.com/pipelines/github/DrPsychick/docker-telegraf)
[](https://hub.docker.com/r/drpsychick/telegraf/)
[](https://github.com/drpsychick/docker-telegraf)
[](https://hub.docker.com/r/drpsychick/telegraf/)
[](https://github.com/drpsychick/docker-telegraf/graphs/contributors)
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=FTXDN7LCDWUEA&source=url)
[](https://github.com/sponsors/DrPsychick)
[](https://github.com/drpsychick/docker-telegraf)
[](https://github.com/drpsychick/docker-telegraf/blob/master/LICENSE)
[](https://github.com/drpsychick/docker-telegraf/issues)
[](https://github.com/drpsychick/docker-telegraf/issues?q=is%3Aissue+is%3Aclosed)
[](https://github.com/drpsychick/docker-telegraf/pulls)
[](https://github.com/drpsychick/docker-telegraf/pulls?q=is%3Apr+is%3Aclosed)
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.
```shell
# before
conf_templates="telegraf.conf.tmpl:/etc/telegraf/telegraf.conf"
conf_var_prefix=TEL_
conf_vars_telegrafconf=${conf_vars_telegrafconf:-'TEL_GLOBAL_TAGS TEL_AGENT TEL_OUTPUTS TEL_PROCESSORS TEL_AGGREGATORS TEL_INPUTS'}
TEL_AGENT_HOSTNAME=hostname = "myhostname"
TEL_OUTPUTS_INFLUXDB_URLS=urls = ["http://yourinfluxhost:8086"]
TEL_INPUTS_CPU_FLAGS = "percpu = true\ntotalcpu = true"
# after
CONF_UPDATE=/etc/telegraf/telegraf.con
CONF_PREFIX=TEL
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"]
```
## Run as `root`
Some plugins require root privileges to work, for example `smart`
(see this article: https://medium.com/opsops/why-smartctl-could-not-be-run-without-root-7ea0583b1323).
You can simply start the container with user root.
```shell
docker run --user root [...] --name telegraf-root drpsychick/telegraf:latest
```
**Beware**:
Docker only support *simple variables*. No ", no ' and especially no newlines in variables.