使用Python SDK时,如何获取Splunk搜索结果的完整内容?
我可以从一次性查询中获得结果,但无法获得原始字段的全部内容使用Python SDK时,如何获取Splunk搜索结果的完整内容?,python,splunk,Python,Splunk,我可以从一次性查询中获得结果,但无法获得原始字段的全部内容 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
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字段或其大小限制的文档。我的猜测是,这是由于在事件原始数据中插入了特殊标记,以在Splunk UI前端突出显示匹配的搜索词造成的。很可能,您的搜索字符串指定了在截断点处原始数据中存在的匹配文字项。这不是SDK结果获取方法的适当默认行为,并且当前打开了一个bug来修复此问题(内部参考DVPL-1519) 幸运的是,避免这个问题相当简单:只需将
segmentation='none'
作为参数传递给作业。results()方法:
(…)oneshotsearch\u results=service.jobs.oneshot(search\u string,segmentation='none')
(……)
请注意,service.jobs()方法的“segmentation”参数仅在Splunk 5.0及更高版本上可用。这解决了问题,感谢hexx!有关于这些结果字段的文档吗?关于
jobs.oneshot()
方法的参数有一些很好的信息,尽管我可以看到“segmentation”参数没有列在那里!我会把它修好的。该信息确实存在于/services/search/jobs/{SID}/events
端点的Splunk REST API引用中,由jobs.oneshot()
调用的job.results()
方法最终会命中该端点。不,这会再次被破坏,即使使用segmented='none',也会被截断为119个字符:(“U raw”,119,,,2013-05-08 16:09:11040+0000[SWF活动地址:attNsgActivitiesTaskList1]信息c.s.r.h.s.a.n.ATTNSGMSRequestAdapter-”)如果sdk发生更改,我会进行pip安装-U