在我们测试ESK堆栈并了解所有这些工作原理时,我的设置如下:
运行filebeat的客户端服务器(CS)将输出发送到在站点聚合器节点(AN)上运行的logstash。
AN使用一些过滤器运行logstash,然后在我们的Elasticsearch / Kibana节点(ESK)上转发到rabbitmq。
ESK运行rabbitmq,logstash从rabbitmq中提取消息,然后将输出发送到elasticsearch(不进行过滤)。 Kibana是我们的可视化(很明显),我们对弹性搜索都很新,所以我们没有直接使用它。
问题在于:
CS会生成一条消息。它肯定会被发送到AN,其中logstash过滤它并将它开启(在将它回显到logstash.stdout之后)。 ESK上的logstash实例也可以看到它(并将其写入logstash.stdout)。我可以在两个logstash实例中看到消息。它们匹配并被适当标记。但它们在Kibana中不可见。
我们的配置和来自两个日志的示例消息都在这里以gist形式出现:https://gist.github.com/wortmanb/ebd37b8bea278d06ffa058c1513ef940
这些消息可以在哪里发生?他们没有出现在Kibana中 - 如果我过滤带有标签的消息:“puppet”,当我知道这些消息流动时,我在时间框架内基本上什么都没有。
有任何调试建议吗?
答案 0 :(得分:1)
问题是您使用日期过滤器解析日志的日期,默认情况下,该日期过滤器会替换@timestamp
字段,该字段用于根据日期进行过滤。
当我知道这些消息流动时,我在时间框架内基本上什么都没有。
因此,消息不在流动的时间范围内,而是在编写时间范围内。
您可以看到“_grokparsefailure”日志,因为它们的日期未被解析,然后@timestamp
是Logstash中的接收日期。
因此,您需要将时间范围更改为包括日志日期的时间范围。