【发布时间】:2017-02-14 04:38:24
【问题描述】:
在我们测试 ESK 堆栈并了解这一切的工作原理时,我的设置如下:
运行 filebeat 的客户端服务器 (CS) 将输出发送到在站点聚合器节点 (AN) 上运行的 logstash。
AN 使用一些过滤器运行 logstash,然后转发到我们的 Elasticsearch/Kibana 节点 (ESK) 上的 rabbitmq。
ESK 运行 rabbitmq,logstash 从 rabbitmq 中提取消息,然后将输出发送到 elasticsearch(不进行过滤)。 Kibana 是我们的可视化工具(显然),而且我们对 elasticsearch 还很陌生,所以我们没有直接用它做太多事情。
问题来了:
CS 生成一条消息。它肯定会被发送到 AN,logstash 将其过滤并转发(在将其回显到 logstash.stdout 之后)。 ESK 上的 logstash 实例也会看到它(并将其写入 logstash.stdout)。我可以在两个 logstash 实例中看到消息。它们匹配并被适当地标记。但它们在 Kibana 中不可见。
我们的配置和来自两个日志的示例消息都在此处的要点形式:https://gist.github.com/wortmanb/ebd37b8bea278d06ffa058c1513ef940
这些消息会去哪里?它们没有出现在 Kibana 中——如果我过滤带有标签的消息:“puppet”,在我知道这些消息正在流动的时间范围内,我基本上什么也得不到。
有什么调试建议吗?
【问题讨论】:
-
您在 Elasticsearch 中看到您的日志了吗?您可以将手放在 Elasticsearch 中未索引的日志上吗?
-
是的 - puppetserver 日志消息没有进入那里。好吧,更重要的是,那些被标记为“_grokparsefailure”的正在进入。我成功解析的那些不是。我们偶尔会遇到无法解析的多行堆栈转储——我还没有处理过这些。我通过在 Kibana 中搜索来源:“/var/log/puppetlabs/puppetserver/puppetserver.log”找到了这些。
-
就你的架构,你真的需要rabbitmq吗?您可以直接将您的日志从聚合器节点 (AN) 的 logstash 传输到 Elasticsearch/Kibana 节点 (ESK) 的 ES。或者,可能存在此处未详细说明的约束强制此架构。
标签: elasticsearch logstash kibana