Как отправить json-журнал в Elasticsearch с помощью Fluentd

#elasticsearch #serilog #fluentd

Вопрос:

У меня на компьютере установлена Windows 10, а Elasticsearch/Kibana работает в контейнере docker.

Я пытаюсь перенаправить журналы, созданные моим приложением, в Elasticsearch с помощью Fluentd. Вот файл td-agent.conf:

 lt;sourcegt;  @type tail  path C:/Projects/log.json  pos_file C:/Projects/log.json.pos  tag *  format json  time_key @timestamp lt;/sourcegt;  lt;match **gt;  @type elasticsearch  logstash_format false  host localhost  port 9200  index_name appname-api-*  type_name fluentd  flush_interval 1s lt;/matchgt;  

Вот часть из appsettings, где я указал, что мне нужен json-файл в формате elasticsearch:

 {  "Name": "File",  "Args": {  "path": "c:/Projects/log.json",  "formatter": "Serilog.Formatting.Elasticsearch.ElasticsearchJsonFormatter, Serilog.Formatting.Elasticsearch"  }  }  

Вот строка из файла журнала:

 {"@timestamp":"2021-10-22T11:13:39.4325643 03:00","level":"Information","messageTemplate":"Now listening on: {address}","message":"Now listening on: "http://localhost:5001"","fields":{"address":"http://localhost:5001","SourceContext":"Microsoft.Hosting.Lifetime","MachineName":"MACHINENAME"}}  

Но это не работает. Я подозреваю, что мой td-агент.conf. Не могли бы вы привести мне, пожалуйста, какой-нибудь пример?

Или, может быть, проще переключиться на Filebeat или что-то другое?

Ответ №1:

Понял! Вот правильный td-agent.conf

 lt;systemgt;  log_level debug lt;/systemgt;  lt;sourcegt;  @type tail  path C:/Projects/log.json  pos_file C:/Projects/log.json.pos  tag log_test  emit_unmatched_lines true   lt;parsegt;  @type json  lt;/parsegt; lt;/sourcegt;  lt;match log_testgt;  @type elasticsearch  host localhost  port 9200  index_name appname-api-2021-10  type_name _doc  flush_interval 1s lt;/matchgt;