日志未通过Fluentd刷新到Elasticsearch容器

时间:2017-06-15 13:26:11

标签: elasticsearch docker fluentd

我有一个运行2个conainers的本地设置 -

一个用于Elasticsearch(设置用于开发,详见此处 - https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)。我按照文章中的指示运行 - docker run -p 9200:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.4.1

另一个作为Fluentd聚合器(使用此基本图像 - https://hub.docker.com/r/fluent/fluentd/)。我的fluent.conf用于测试目的如下:

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

<match **>
    @type elasticsearch
    host 172.17.0.2    # Verified internal IP address of the ES container
    port 9200
    user elastic
    password changeme
    index_name fluentd
    buffer_type memory
    flush_interval 60
    retry_limit 17
    retry_wait 1.0
    include_tag_key true
    tag_key docker.test
    reconnect_on_error true
</match>

我从命令开始 - docker run -p 24224:24224 -v /data:/fluentd/log vg/fluentd:latest

当我运行我的进程(生成日志)并运行这两个容器时,我在Fluentd容器的stdout末尾看到以下内容 -

2017-06-15 12:16:33 +0000 [info]: Connection opened to Elasticsearch cluster => {:host=>"172.17.0.2", :port=>9200, :scheme=>"http", :user=>"elastic", :password=>"obfuscated"}

但是,除此之外,我看不到任何日志。当我登录http://localhost:9200时,我只看到Elasticsearch欢迎消息。

我知道日志正在到达Fluentd容器,因为当我将fluent.conf更改为重定向到文件时,我会按预期看到所有日志。在我的Elasticsearch设置中我做错了什么?如何才能在我的浏览器/ Kibana中正确看到所有索引?

1 个答案:

答案 0 :(得分:1)

您似乎正走在正确的轨道上。只需检查在elasticsearch中创建的索引,如下所示:

curl 'localhost:9200/_cat/indices?v'

文档: https://www.elastic.co/guide/en/elasticsearch/reference/1.4/_list_all_indexes.html

在那里你可以看到每个索引名称。所以选择一个并在其中搜索:

curl 'localhost:9200/INDEXNAME/_search'

文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html

然而我建议您使用kibana以获得更好的人类体验。只需启动它,默认情况下它会在localhost中搜索弹性。在界面的配置中输入您现在知道的索引名称,并开始使用它。