Fluentd не сбрасывает данные в эластичный поиск, но сбрасывает их при завершении работы.

У меня есть настройка fluentd + elastic search + kibana. Fluentd настроен на вывод в эластичный поиск с помощью этого подключаемого модуля: https://github.com/uken/fluent-plugin-elasticsearch. Проблема в том, что fluentd никогда не сбрасывает свои буферы для эластичного поиска во время работы, он просто сохраняет данные в буфере памяти. После завершения работы буфер очищается и эластичный поиск обновляется.

Эта проблема возникает, несмотря на настройки flush_interval 60s и buffer_chunk_limit 25k. Значения по умолчанию также вызывают ту же проблему.

Вывод файла журнала сборщика Fluentd и cfg:

    2014-07-11 11:45:44 +0100 [info]: fluent/supervisor.rb:202:supervise: starting fluentd-0.10.48
2014-07-11 11:45:44 +0100 [info]: fluent/supervisor.rb:304:read_config: reading config file path="/etc/fluent/fluent.conf"
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered buffer plugin 'file'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered buffer plugin 'memory'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'debug_agent'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'exec'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'forward'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'gc_stat'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'http'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'monitor_agent'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'object_space'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'status'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'tcp'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'unix'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'syslog'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered input plugin 'tail'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'copy'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'exec'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'exec_filter'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'file'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'forward'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'null'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'roundrobin'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'stdout'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'tcp'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'unix'
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'test'
2014-07-11 11:45:44 +0100 [info]: fluent/engine.rb:87:block in configure: gem 'fluent-plugin-elasticsearch' version '0.3.0'
2014-07-11 11:45:44 +0100 [info]: fluent/engine.rb:87:block in configure: gem 'fluentd' version '0.10.48'
2014-07-11 11:45:44 +0100 [info]: fluent/engine.rb:91:configure: using configuration file: <ROOT>
  <source>
    type forward
    port 24224
    bind 0.0.0.0
  </source>
  <source>
    type syslog
    port 5544
    protocol_type tcp
    bind 0.0.0.0
    tag index.syslog
  </source>
  <match index.**>
    type elasticsearch
    logstash_format true
    host localhost
    port 9200
    include_tag_key true
    tag_key tag
  </match>
</ROOT>
2014-07-11 11:45:44 +0100 [info]: fluent/engine.rb:101:block in configure: adding source type="forward"
2014-07-11 11:45:44 +0100 [info]: fluent/engine.rb:101:block in configure: adding source type="syslog"
2014-07-11 11:45:44 +0100 [info]: fluent/engine.rb:117:block in configure: adding match pattern="index.**" type="elasticsearch"
2014-07-11 11:45:44 +0100 [trace]: fluent/plugin.rb:72:register_impl: registered output plugin 'elasticsearch'
2014-07-11 11:45:44 +0100 [info]: plugin/in_forward.rb:75:listen: listening fluent socket on 0.0.0.0:24224
2014-07-11 11:45:45 +0100 [debug]: plugin/in_syslog.rb:183:listen: listening syslog socket on 0.0.0.0:5544 with tcp
2014-07-11 11:45:45 +0100 [trace]: plugin/in_forward.rb:189:initialize: accepted fluent socket from '10.18.80.20:57119': object_id=70254255494700
2014-07-11 11:45:45 +0100 [trace]: plugin/in_forward.rb:245:on_close: closed fluent socket object_id=70254255494700
2014-07-11 11:45:46 +0100 [trace]: plugin/in_forward.rb:189:initialize: accepted fluent socket from '10.18.80.20:57120': object_id=70254256323480
2014-07-11 11:45:46 +0100 [trace]: plugin/in_forward.rb:245:on_close: closed fluent socket object_id=70254256323480
2014-07-11 11:45:47 +0100 [trace]: plugin/in_forward.rb:189:initialize: accepted fluent socket from '10.18.80.20:57121': object_id=70254256319280
2014-07-11 11:45:47 +0100 [trace]: plugin/in_forward.rb:245:on_close: closed fluent socket object_id=70254256319280
.......

Может ли кто-нибудь помочь объяснить, почему fluentd не сливается с эластичным поиском? Спасибо.


person Benjamin Goodacre    schedule 11.07.2014    source источник


Ответы (3)


После долгого устранения неполадок я обнаружил, что в конкретной установленной версии ruby ​​была ошибка, из-за которой поток зависал при запуске. Проблема не возникала при выключении, так как это называлось по-другому. Это конкретная ошибка рубина 2.0.0-p353; следующий выпуск ruby ​​2.0.0-p451 устраняет проблему.

https://groups.google.com/forum/#!msg/fluentd/t2uKfttiYCw/P8zy5kZpEIIJ

person Benjamin Goodacre    schedule 08.09.2014

Существуют ли буферы fluentd в / var / spool / fluentd? Они растут?

Не могли бы вы проверить журнал ElasticSearch?

grep --color FrameException /var/log/elasticsearch/elasticsearch.log
org.elasticsearch.common.netty.handler.codec.frame.TooLongFrameException: HTTP content length exceeded 655360000 bytes.
person Community    schedule 05.09.2014

Глядя на ваш вставленный стандартный вывод, не похоже, что "flush_interval" установлен для плагина out_elasticsearch:

<match index.**>
  type elasticsearch
  logstash_format true
  host localhost
  port 9200
  include_tag_key true
  tag_key tag
</match>

Можете ли вы попробовать вставить строку «flush_interval 60s» в приведенную выше конфигурацию, подождать минуту или около того и посмотреть, отображаются ли данные в Elasticsearch?

person Kiyoto Tamura    schedule 11.07.2014
comment
Спасибо за вашу помощь, но это не помогло. Я оставил строку, чтобы показать, что используется значение по умолчанию. - person Benjamin Goodacre; 14.07.2014
comment
Понятно. Спасибо за разъяснения. Как вы думаете, можно ли запустить Fluentd с параметром -vv verbose и поделиться выводом журнала? Это может помочь решить проблему - person Kiyoto Tamura; 17.07.2014
comment
Это то, что я уже добавил выше. [трассировка] добавляется с -vv - person Benjamin Goodacre; 22.07.2014
comment
У вас есть что-нибудь, кроме последнего списка, который вы наклеили? Показанные журналы предназначены для запуска Fluentd и приема пары сообщений через in_forward. - person Kiyoto Tamura; 26.07.2014
comment
В журнале больше нет полезной информации, только повторение строк журнала трассировки из in_forward. - person Benjamin Goodacre; 28.07.2014
comment
Патологическая возможность: возникла проблема с Elasticsearch. Можете ли вы использовать out_copy и скопировать результаты в stdout следующим образом: ‹индекс соответствия. **› тип copy ‹store› тип stdout ‹/store› ‹store› тип elasticsearch logstash_format true host localhost port 9200 include_tag_key true tag_key ‹tag ‹/store›‹ tag ‹/store› ‹tag ‹/store› /соответствие> - person Kiyoto Tamura; 08.08.2014