使用Python SDK时,如何获取Splunk搜索结果的完整内容?

时间:2013-05-06 22:35:53

标签: python splunk

我可以从one_shot查询中获得结果,但我无法获得_raw字段的完整内容。

import splunklib.client as client
import splunklib.results as results

def splunk_oneshot(search_string, **CARGS):
    # Run a oneshot search and display the results using the results reader

    service = client.connect(**CARGS)
    oneshotsearch_results = service.jobs.oneshot(search_string)

    # Get the results and display them using the ResultsReader
    reader = results.ResultsReader(oneshotsearch_results)
    for item in reader:
        for key in item.keys():
            print(key, len(item[key]), item[key])

这为_raw提供了以下内容:

('_raw', 120, '2013-05-03 22:17:18,497+0000 [SWF Activity  attNsgActivitiesTaskList1 19] INFO  c.s.r.h.s.a.n.AttNsgSmsRequestAdapter - ')

所以此内容被截断为120个字符。我需要搜索结果的整个值,因为我需要在其上运行一些字符串比较。我没有找到关于ResultsReader字段或其大小限制的任何文档。

1 个答案:

答案 0 :(得分:2)

我最好的猜测是,在原始数据事件中插入特殊标记以突出显示Splunk UI前端中匹配的搜索词。很可能,您的搜索字符串指定了在截断点处原始数据中存在的匹配字面值。这不是SDK结果获取方法的合适默认行为,并且当前存在修复此问题的错误(内部参考DVPL-1519)。

幸运的是,避免这个问题是相当简单的:只需要将segmentation='none'作为参数传递给job.results()方法:

(...)
oneshotsearch_results = service.jobs.oneshot(search_string,segmentation='none')
(...)

请注意,service.jobs()方法的'segmentation'参数仅适用于Splunk 5.0及更高版本。