fluent/fluentd · error · Fluent::ConfigError

Parameter '#{name}: #{string}' doesn't have timestamp placeh

Error message

Parameter '#{name}: #{string}' doesn't have timestamp placeholders for timekey #{timekey.to_i}

What it means

A path/format-style parameter contains no strftime time directives at all, while the buffer chunks records by time (`time` chunk key with a `timekey`). If all time-keyed chunks expand to the same literal value, chunks overwrite each other or become indistinguishable, so the placeholder validator (`validate_time!`, `!sec && timekey`) rejects it at configure time.

Source

Thrown at lib/fluent/plugin/output.rb:733

        def keys?
          @type == :keys
        end

        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

View on GitHub (pinned to dd45c6e18d)

Solutions

  1. Add time directives that vary at least as fast as the timekey, e.g. `path /logs/app.%Y%m%d%H.log`
  2. Or remove `time` from the chunk keys if per-time rotation is not wanted
  3. Match directive granularity to timekey: minute key → include %M, hour key → include %H

Example fix

# before
<buffer time>
  timekey 1h
</buffer>
path /logs/app.log

# after
<buffer time>
  timekey 1h
</buffer>
path /logs/app.%Y%m%d%H.log
Defensive patterns

Strategy: validation

Validate before calling

fluentd --dry-run -c /etc/fluent/fluent.conf
# lint: if buffer chunk keys include 'time', the path must contain a % time directive

Prevention

When it happens

Trigger: `path /logs/app.log` (no `%Y`/`%m`/`%H`...) together with `<buffer time>` and `timekey 1h` in a file/s3 output; any parameter passed through `placeholder_validate!(name, str)` with time chunking enabled but zero time placeholders in the string.

Common situations: Adding `time` to chunk keys for rotation but forgetting to add time patterns to `path`; switching `path` to a fixed filename during debugging and leaving the time chunk key in place.

Related errors


AI-assisted analysis of fluent/fluentd@dd45c6e18d (2026-08-21). Data as JSON: /api/errors/88f3d68673412788. Report an issue: GitHub.