influxdata / influxdata/helm-charts

[telegraf] multiple issues with TOML generation

Open
#758 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Mustache
Stars
257
Forks
347
Avg merge
4d 20h
Merged PRs (30d)
9

Description

Telegraf chart `1.8.65` still produces invalid TOML, which is a show-stopper, because there's no way to provide raw config and Telegraf refuses to start.

There are two issues I encountered so far:

1. `ping.Ping.Timeout` by default is unconditionally cast into integer, while float64 is required; this is solved by using experimental `--set tplVersion=2`
this should be easy to back-port to v1 template
2. mapping keys are never quoted, which is especially problematic for `processors.enum.mapping.value_mappings` when key contain dot or start with number, for example FQDN or IP address (e.g. `1.1.1.1`, `example.com`)

For the second issue, I have limited exposre to TOML and Telegraf, but it seems like keys in mapping should always be strings, so uncoditionally quoting them should not introduce any issues. Template helpers for v2 have multiple variants of `{{ $k }} = {{ $v | quote }}`, which sould be `{{ $k | quote }} = ...`.

My proposal to what should be fixed:

1. restore ability to provide raw config file - either as string or as reference to external ConfigMap/Secret; this would immediately lower severity of this bug report and make whole chart more flexible
2. fix `ping.Ping.Timeout` casting in v1 or mention v2 workaround in documentation
3. provide way to configure mappings with keys that require quoting in TOML (starting with numbers, containing dots), at least in v2 - it seems like blidly quoting shouldn't be an issue

---

Example that does not work. Please note that for clarity only single ping target is defined here, my real use-case has tens of them and that's why I don't want to define target tags in `inputs` stanza.

For below `values.yaml`:

```yaml
---
# https://artifacthub.io/packages/helm/influxdata/telegraf?modal=values
replicaCount: 1

config:
agent:
interval: "1s"
flush_interval: "5s"
metric_batch_size: 1000
metric_buffer_limit: 10000
round_interval: false
omit_hostname: true

inputs:
- ping:
interval: "30s"
urls:
- "1.1.1.1"
count: 1
timeout: 1.1
method: "native"
name_override: "ping"

processors:
- enum:
mapping:
field: "url"
dest: "target"
value_mappings:
"1.1.1.1": "cloudflare"

service:
enabled: false
rbac:
create: false
serviceAccount:
create: false
```

this is what lands in ConfigMap as `telegraf.conf`:

```toml
[agent]
collection_jitter = "0s"
debug = false
flush_interval = "5s"
flush_jitter = "0s"
hostname = "$HOSTNAME"
interval = "1s"
logfile = ""
metric_batch_size = 1000
metric_buffer_limit = 10000
omit_hostname = true
precision = ""
quiet = false
round_interval = false
[[processors.enum]]
[[processors.enum.mapping]]
dest = "target"
field = "url"
[processors.enum.mapping.value_mappings]
1.1.1.1 = "cloudflare"

[[outputs.influxdb]]
database = "telegraf"
urls = [
"http://influxdb.monitoring.svc:8086"
]

[[inputs.ping]]
count = 1
interval = "30s"
method = "native"
name_override = "ping"
timeout = 1
urls = [
"1.1.1.1"
]

[[inputs.internal]]
collect_memstats = false
```

Pod starts with error:

```
2025-12-29T14:36:25Z I! Loading config: /etc/telegraf/telegraf.conf
2025-12-29T14:36:25Z E! loading config file /etc/telegraf/telegraf.conf failed: error parsing data: line 21: invalid TOML syntax
```

After setting `tplVersion=2`, config is rendered exactly the same, except for extra empty lines between sections and `inputs.ping.timeout` changed from `1` to `1.1`.

Contributor guide

Open the contributing guide

Research direction

Start by inspecting the Telegraf chart at version 1.8.65 and rendering the provided values.yaml with tplVersion 1 and 2. Compare the generated telegraf.conf against the reported TOML errors, then verify that raw configuration, timeout values, and mapping keys behave as intended when Telegraf loads the result.

Written by the indexing model from the issue text.

Assessment

Tech stack
helm, kubernetes
Domain
devops, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.