2013-05-06 5 views
2

Я могу получить результаты запроса one_shot, но я не могу получить полный контент поля _raw.Как получить полный контент результата поиска Splunk при использовании SDK Python?

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 или их ограничениям по размеру.

ответ

2

Мое лучшее предположение заключается в том, что в исходных данных события выделяются специальные теги, чтобы выделить согласованные условия поиска в интерфейсе интерфейса Splunk UI. По всей вероятности, ваша строка поиска указывает соответствующий литеральный термин, присутствующий в необработанных данных, прямо в точке усечения. Это неправильное поведение по умолчанию для метода получения результатов SDK, и в настоящее время исправлена ​​ошибка, чтобы исправить это (внутренняя ссылка DVPL-1519).

К счастью, избежать этой проблемы достаточно тривиально: Один просто нужно пройти segmentation='none' в качестве аргумента к job.results() метод:

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

Обратите внимание, что аргумент «segmentation» для метода service.jobs() доступен только на Splunk 5.0 и далее.

+1

Это решило проблему, спасибо hexx! Есть ли какая-либо документация по этим полям результатов? – sophe

+0

Существует некоторая хорошая информация о параметрах метода 'jobs.oneshot()' [здесь, на dev.splunk.com] (http://docs.splunk.com/DocumentationStatic/PythonSDK/1.0/client.html#splunklib. client.Jobs.oneshot), хотя я вижу, что параметр «segmentation» там не указан! Я исправлю это. Информация существует в ссылке API Splunk REST для конечной точки '/ services/search/jobs/{SID}/events', в которой метод' job.results() ', вызываемый' jobs.oneshot() ', в конечном счете хиты. – hexx

+0

Нет, это сломано снова, усекается на 119 символов даже с сегментированным = 'none': ('_raw', 119, '2013-05-08 16: 09: 11,040 + 0000 [SWF Activity attNsgActivitiesTaskList1 1] INFO csrhsanAttNsgSmsRequestAdapter - ') Я сделал установку pip -U в случае изменения sdk – sophe