Splunk - 没有结果,但搜索是正确的

时间:2015-02-17 09:19:27

标签: splunk

编辑:

检查搜索并面对失败搜索的日志与成功搜索,似乎失败的搜索作业不解析搜索字符串。我有一个日志说:

Generating search operator is null, short-circuiting data generation

相反,在成功搜索时,我有搜索解析过程的日志。我想在此重复一遍,搜索具有相同的代码。

问题:

仪表板突然没有返回任何内容。我打开了搜索工具,它不再返回任何内容。但是,如果我按下按钮再次运行搜索,它确实会返回预期的数据。

仅在我的远程虚拟Windows主机上发生这种情况。在我的Linux私人计算机上,相同的splunk版本相同的索引,都可以。

我尝试重新安装splunk并清除var \ run \ splunk \ dispatch文件夹,但没有成功。

似乎问题在于我在许多仪表板上进行的子搜索。这是一个有许多连接的搜索。如果我删除其中一个,它就可以了。但我当然需要这一切。

索引没问题,因为我还使用它们来填充同一页面中的输入。

子搜索是这样的:

  [search index=A ID_A="$id_a$" ID_B="$id_b$" | 
  dedup ID_A | 
  join ID_B 
    [search index=B AND ID_C="$id_c$" | 
    dedup ID_B | 
    join ID_C 
      [search index=C AND ID_D="$id_d$" | 
      dedup ID_C | 
      table ID_C] | 
    table ID_B] | 
  table ID_A]

如您所见,它是来自数据库的数据,而不是日志数据。如果我删除了ID_C上的连接,它就可以工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

似乎你的一个子搜索是在limits.conf中定义的秒数之后悄悄地执行harikiri。
对于来自SQL世界的人来说,使用JOIN很有吸引力,但是很简单,功能很少就是答案,因为它的方式慢了。 我建议您将此作为起点

(index=A "$id_a$" OR $id_b$ ID_A="$id_a$" ID_B="$id_b$") OR (index=B $id_c$ ID_C="$id_c$") OR (index=C "$id_d$" ID_D="$id_d$")
| dedup ID_A by ID_C, ID_B

重复数据删除条款需要一些工作,因为我无法想象您的下划线数据

阅读本文将对您将来有很大帮助, http://docs.splunk.com/Documentation/Splunk/latest/SearchReference/SQLtoSplunk

答案 1 :(得分:0)

首先,我同意Joao的看法 - 这里没有足够的信息来真正回答这个问题。

但是,我在自己的应用开发中已经多次看到过这种情况。它不可避免地是由权限引起的。第一个是应用程序的上下文(这是最常见的)。如果您有一个props.conf和/或transforms.conf,它们会在您的搜索应用中定义一些字段提取,但这些字段提取尚未导出到您正在使用的应用中,那么它们将无法使用。在您的情况下,可能由于某种原因未定义ID_ *。您可以通过向应用添加搜索信息中心参考并在那里运行搜索来检查这一点。

第二个原因是仪表板可能使用快速模式而不是智能模式或详细模式。如果您在“搜索”页面中;在右侧是一个指示模式的下拉菜单。当你第一次在搜索中打开时 - 它说什么?点击“搜索”后,它会说什么?

最后,Search Inspector是您的朋友。当您在面板上看不到结果时 - 打开面板并查看日志和细分。了解搜索检查员可能是您最好的朋友。

您需要重新运行的原因是,当您在搜索页面中打开搜索时(可能使用"在搜索中打开"面板底部的链接),它会使用缓存的信息在调度目录中。当您单击搜索时,它会生成一个新搜索。

答案 2 :(得分:0)

splunk的免费版本具有最大搜索限制。还要与您的组织联系,以查看您是否拥有正确的权利。