<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<filter grafana>
  @type parser
  <parse>
    @type json
    json_parser json
  </parse>
  replace_invalid_sequence true
  emit_invalid_record_to_error false
  key_name log
  reserve_data true
  remove_key_name_field true
</filter>

<filter nginx>
  @type parser
  format /^.*m(?<host>[^ ]*) (?<remote>[^ ]*) \- \- \[(?<time>[^\]]*)\] \"(?<method>\S+)(?: +(?<path>[^\"]*) +\S*)?\" (?<code>[^ ]*) (?<size>[^ ]*)(?: \"(?<referer>[^\"]*)\" \"(?<agent>[^\"]*)\")?$/
  time_format %d/%b/%Y:%H:%M:%S %z
  key_name log
  reserve_data true
  remove_key_name_field true
</filter>

<filter **>
  @type record_transformer
  remove_keys "source,t"
</filter>

<match grafana>
  @type copy
  <store>
    @type stdout
    output_type json
  </store>
  <store>
    @type loki
    url "http://loki:3100"
    extra_labels {"app":"grafana"}
    label_keys "container_name,container_id,logger"
    flush_interval 10s
    flush_at_shutdown true
    buffer_chunk_limit 1m
  </store>
</match>

<filter nginx>
  @type record_transformer
  <record>
    lvl "info"
  </record>
</filter>

<match nginx>
  @type copy
  <store>
    @type stdout
    output_type json
  </store>
  <store>
    @type loki
    url "http://loki:3100"
    extra_labels {"app":"nginx"}
    label_keys "container_name,container_id"
    flush_interval 10s
    flush_at_shutdown true
    buffer_chunk_limit 1m
  </store>
</match>