81

我设置了 elasticsearch 和 Kibana 来索引我们的应用程序(错误)日志。问题是 Kibana 没有在“发现”选项卡中显示任何数据。

现在的情况

  • Elasticsearch 启动并运行,响应 API
  • 直接在 Elasticsearch 上执行查询http://elasticserver.com:9200/applogs/_search?q=*会返回大量结果(请参阅下文,了解单个找到的记录的外观)
  • Kibana 启动并运行,甚至发现applogsElasticsearch 暴露的索引
  • Kibana 还显示applogs文档的正确属性和数据类型
  • “发现”选项卡不显示任何结果......即使将时间段设置为几年......

有任何想法吗??

下面是Kibana 看到applogs索引的方式:

在此处输入图像描述

弹性搜索查询结果对象如下所示:

{
_index: "applogs",
_type: "1",
_id: "AUxv8uxX6xaLDVAP5Zud",
_score: 1,
_source: {
   appUid: "esb.Idman_v4.getPerson",
   level: "trace",
   message: "WS stopwatch is at 111ms.",
   detail: "",
   url: "",
   user: "bla bla bla",
   additionalInfo: "some more info",
   timestamp: "2015-03-31T15:08:49"
 }
},

..以及我在发现选项卡中看到的内容

在此处输入图像描述

4

12 回答 12

157

对于有这样问题的

更改右上角的时间范围。

默认情况下,它仅显示最后 15 分钟的数据。

于 2015-06-11T12:45:16.510 回答
30

我想将此作为评论,但不幸的是,我无法提供我不足的回购来这样做。因此,正如@Ngeunpo 所建议的那样,这就是您在创建索引时向索引添加时间字段的方式在此处输入图像描述:如果您在创建索引时没有这样做,我建议您删除该索引并重新创建它。gif 中的索引名称logstash-*类似于您的索引applogs。在这种情况下,字段@timestamp添加为时间字段。让我知道这个是否奏效。

编辑:图片提供:这个精彩的 ELK 设置指南

于 2015-07-15T18:29:30.843 回答
10

Kibana 不理解时间戳字段,如果它的格式不正确。您在配置索引模式时通过单击时间字段名称选择的时间戳需要是:

"timestamp":"2015-08-05 07:40:20.123"

那么你应该像这样更新你的索引映射:

curl -XPUT 'http://localhost:9200/applogs/1/_mapping' -d'
{
  "1": {
    "timestamp": {
      "enabled": true,
      "type": "date",
      "format": "yyyy-MM-dd HH:mm:ss.SSS",
      "store": true
    }
  }
}'

看到这个问题和答案

更新

如果你使用的是 ES 2.X,你可以"format"这样设置"epoch_millis"

curl -XPUT 'http://localhost:9200/applogs/1/_mapping' -d'
{
  "1": {
    "timestamp": {
      "type": "date",
      "format": "epoch_millis",
      "store": true,
      "doc_values": true
    }
  }
}'
于 2015-12-07T08:18:24.433 回答
6

ELK 创建索引或模式的示例图像

试试这个:取消点击“索引包含基于时间的事件”复选框,然后提供您的索引名称,然后检查“发现”它是否包含数据

于 2017-01-05T13:09:53.683 回答
4

我有同样的问题,这对我有用:

  1. 从“设置”选项卡中删除索引。
  2. 重启 Kibana
  3. 然后在设置中重新添加

我敢肯定,时间序列的问题也可能是一个问题,但是如果“发现”选项卡中实际上没有显示任何字段,那么您可能会遇到与原始记者和我所遇到的问题相同的问题。

于 2015-06-19T12:19:07.310 回答
3

我可能遇到了同样的问题 - 我在仪表板中看到数据,但发现结果为 0。转到管理 > 索引模式 > 刷新归档列表按钮(仅带有刷新图标的按钮)为我解决了这个问题。

于 2017-11-14T08:32:03.453 回答
2

我遇到了同样的问题,@tAn- 的评论帮助我解决了这个问题。将日期字段更改为 @timestamp 就可以了。谢谢!

下一步应该是找出我的自定义日期字段有问题。

于 2016-08-08T19:29:43.430 回答
1

我有同样的问题,但现在它工作正常。问题在于@timestamp。实际上我已经将文件上传到elasticsearch使用,logstash因此它会自动生成一个@timestamp 字段。Kibana将时间范围与此@timestamp 进行比较,即实际事件发生的时间。即使我在添加新索引模式页面中取消选择“索引包含基于时间的事件”选项,kibana也会自动考虑@timestamp 字段。所以切换时间范围kibana基于@timestamp 字段为我工作。您还可以通过添加不带时间戳的索引模式进行检查并取消选择“索引包含基于时间的事件”选项。看看会发生什么..现在不会有任何时间范围选择选项kibana发现页面,您很可能会在发现页面中获得结果。这些都是我的观察,不确定,这个解决方案是否适合你的情况..你可以尝试..我使用的是 ES 1.5x、logstash 1.5.1 和 kibana 4.1.0

于 2015-06-20T11:40:22.617 回答
1

我也遇到了同样的错误。这主要是因为时间格式。基本上,请确保您的数据有有效的时间范围(右上角的过滤器)。无论如何,就我而言,我使用纪元时间格式作为时间戳,但它不起作用。所以我改为epoch_millisec,它就像一个魅力。

总之,请确保 Kibana 可以理解您的日期时间格式。默认情况下需要epoch_millisec,而不仅仅是 epoch。

于 2017-08-24T08:36:47.070 回答
1

在我的情况下,以前一切正常,然后从 2 月 1 日开始我看不到最新数据(实际上,如果我回顾一个月,我可以看到)。事实证明,我的自定义时间字段的映射格式不正确。我的映射格式是YYYY-MM-DD'T'HH:mm:ss.SSSZ. 问题是它DD被解释为一年中的一天,我想要一个月中的一天dd。更改映射和重新索引解决了这个问题。

于 2018-02-01T22:13:55.970 回答
1

In my case, I set time from server log. and the time was different with UTC(the log's time was future comparing to UTC time) so, when I search logs with filter of days/months/years ago. there was no log because it was future time. so, when I use Today filter. or with future time. It showed the logs. after, changing the time zone. it's fixed

于 2021-01-31T11:59:31.083 回答
0

我有同样的问题,所以,如上面的解决方案之一所示,我去设置并删除了以前的索引并使用@timestamp 创建了一个新索引。

但这并没有解决问题。所以,我调查了这个问题,发现在部署之后,没有任何东西进入 Kibana。

因此,我进入服务器,发现索引已损坏。所以我刚刚停止了实例/服务器上的 logstash 和 elasticsearch 并重新启动了服务。瞧,它成功地重新启动了服务,kibana 又回来了。

为什么会这样?

有人可能突然停止了服务器,导致索引损坏。

于 2017-09-07T06:47:03.130 回答