Как переслать файл JSON с FluentD в Graylog2 с допустимым форматом времени

Я работаю над регистрацией с FluentD и Graylog GELF с ограниченным успехом. Я хочу переслать файл JSON:

<source>
  @type tail
  path /var/log/suricata/eve.json
  pos_file /var/log/td-agent/suri_eve.pos # pos record
  tag ids
  format json
  # JSON time stamp: 2016-02-01T11:52:49.157072+0000
  # this timestamp is ruby's t.strftime("%Y-%m-%dT%H:%M:%S.%6N%z")
  time_format %Y-%m-%dT%H:%M:%S.%6N%z
  time_key timestamp # I show a JSON message below
</source>

<match **>
  @type graylog
  host 1.2.3.4 #(optional; default="localhost")
  port 12201 #(optional; default=9200)
  flush_interval 30
  num_threads 2
</match>

Это срабатывает, но выдает сообщения об ошибках:

2016-02-01 15:30:11 +0000 [warn]: plugin / in_tail.rb: 263: восстановление в convert_line_to_event: "{\"timestamp\":\"2016-02-01T15:27:09.000087+0000\",\"flow_id\":51921072,\"event_type\":\"поток \",\"src_ip\":\"10.1.1.85\",\"src_port\":59820,\"dest_ip\":\"224.0.0.252\",\"dest_port\":5355 \ "прото \":\"UDP\",\"поток \":{\"pkts_toserver\":4,\"pkts_toclient\":0 \"bytes_toserver\":294,\"bytes_toclient\":0,\"Пуск \":\"2016-02-01T15:26:30,393371+0000\",\"конец \":\"2016-02-01T15:26:37.670904+0000\",\"age\":7,\"state\":\"new\",\"reason\":\"timeout\"}}" error="недопустимое время формат: значение = 2016-02-01T15:27:09.000087+0000, error_class = ArgumentError, ошибка = недопустимый формат strptime - `%Y-%m-%dT%H:%M:%S.%6N%z'"

Оригинальные сообщения выглядят так:

{"timestamp":"2016-02-01T15:31:02.000699+0000","flow_id":52015920,"event_type":"flow","src_ip":"10.1.1.44","src_port":49313,"dest_ip":"224.0.0.252","dest_port":5355,"proto":"UDP","flow":{"pkts_toserver":2,"pkts_toclient":0,"bytes_toserver":128,"bytes_toclient":0,"start":"2016-02-01T15:30:31.348568+0000","end":"2016-02-01T15:30:31.759024+0000","age":0,"state":"new","reason":"timeout"}}

Итак, я проверил документы по Ruby. Я не слишком знаком с FluentD, но, насколько я знаю, должно подходить выражение формата времени? Я старался format=none но это тоже не работает.

1 ответ

Решение

https://github.com/Graylog2/graylog2-server/issues/1761

Это ошибка / проблема с зарезервированными полями (недокументированными) в Graylog2. Если вы обнаружите похожую ошибку с отметками времени, проверьте связанную проблему и ответ разработчика.

Другие вопросы по тегам