fluent/fluentd · error · Fluent::ConfigError
Parameter '#{name}: #{string}' has timestamp placeholders, b
Error message
Parameter '#{name}: #{string}' has timestamp placeholders, but chunk key 'time' is not configured What it means
The parameter string contains strftime time directives (e.g. `%Y%m%d`) but the buffer does not chunk on `time` — `time` is not in the chunk keys, so `@chunk_key_time`/timekey is unset. Directives would never be expanded per-chunk (extract_placeholders only formats time when `@chunk_key_time` is set), leaving literal `%Y...` in paths, so `validate_time!` (`sec && !timekey`) rejects the mismatch.
Source
Thrown at lib/fluent/plugin/output.rb:736
def validate!
case @type
when :time then validate_time!
when :tag then validate_tag!
when :keys then validate_keys!
end
end
def validate_time!
sec = @argument[:sec]
title = @argument[:title]
example = @argument[:example]
timekey = @argument[:timekey]
if !sec && timekey
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' doesn't have timestamp placeholders for timekey #{timekey.to_i}"
end
if sec && !timekey
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' has timestamp placeholders, but chunk key 'time' is not configured"
end
if sec && timekey && timekey < sec
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' doesn't have timestamp placeholder for #{title}('#{example}') for timekey #{timekey.to_i}"
end
end
def validate_tag!
parts = @argument[:parts]
tagkey = @argument[:tagkey]
if tagkey && parts.empty?
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' doesn't have tag placeholder"
end
if !tagkey && !parts.empty?
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' has tag placeholders, but chunk key 'tag' is not configured"
end
end
def validate_keys!View on GitHub (pinned to dd45c6e18d)
Solutions
- Add `time` to the chunk keys and set a matching `timekey`: `<buffer time,tag>` + `timekey 1d`
- Or strip the time directives from the parameter if time chunking is not intended
- Remember `timekey` is required once `time` becomes a chunk key, or error 204 follows
Example fix
# before
<buffer tag>
@type file
</buffer>
path /logs/${tag}/app.%Y%m%d.log
# after
<buffer time,tag>
@type file
timekey 1d
</buffer>
path /logs/${tag}/app.%Y%m%d.log Defensive patterns
Strategy: validation
Validate before calling
fluentd --dry-run -c /etc/fluent/fluent.conf
Prevention
- Any % directive in a placeholder-validated parameter implies `time` must be a chunk key
- When removing time chunking, scrub %Y/%m/%d/%H from paths too
- Keep a reviewed snippet library of buffer+path pairs
When it happens
Trigger: `path /logs/app.%Y%m%d.log` with `<buffer tag>` or `<buffer tenant>` (no `time` key); any placeholder-validated parameter mixing time directives with a non-time buffer configuration.
Common situations: Removing `time` from chunk keys (or the whole `<buffer>` block defaulting to tag-only) while keeping a dated path template; copy/pasting a dated path into a tag-partitioned output.
Related errors
- Parameter '#{name}: #{string}' doesn't have timestamp placeh
- Parameter '#{name}: #{string}' doesn't have timestamp placeh
- Parameter '#{name}: #{string}' doesn't have tag placeholder
- Parameter '#{name}: #{string}' has tag placeholders, but chu
- Parameter '#{name}: #{string}' doesn't have enough placehold
AI-assisted analysis of fluent/fluentd@dd45c6e18d (2026-08-21).
Data as JSON: /api/errors/da35fcf6b2d2ca0e.
Report an issue: GitHub.