【问题标题】:How to pass 'time' query to splunk enterprises using Splunk-Python SDK?如何使用 Splunk-Python SDK 将“时间”查询传递给 splunk 企业?
【发布时间】:2019-03-07 14:17:20
【问题描述】:

我正在尝试从 Python(eclipse IDE)传递查询以从中提取数据 SPLUNK 企业的特定仪表板。我能够获取数据 通过传递所需的查询在我的控制台上打印但我不是 能够提取特定时间间隔的数据(比如如果我想要数据 1 小时、1 天、1 周或 1 个月)

我已经尝试了诸如“最早”、“最新”之类的命令以及我的查询,但每次它都会抛出一个错误,说明 "raise HTTPError(response) splunklib.binding.HTTPError: HTTP 400 Bad Request -- Search Factory : 未知搜索命令 'earliest'"

这是我的代码

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


HOST = "my hostname"
PORT = 8089
USERNAME = "my username"
PASSWORD = "my password"
service = client.connect(
host=HOST,
port=PORT, 
username=USERNAME,
password=PASSWORD)
rr = results.ResultsReader(service.jobs.export("search index=ccmjimmie | stats count(eval(resCode!=00200)) AS errored | chart sum(errored)|earliest=-1d"))

for result in rr:
    if isinstance(result, results.Message):
    # Diagnostic messages might be returned in the results
        print(result.type, result.message)
    elif isinstance(result, dict):
    # Normal events are returned as dicts
        print (result)
assert rr.is_preview == False

我在不使用时间查询的情况下得到的输出

OrderedDict([('sum(errored)', '1566')])
OrderedDict([('sum(errored)', '4404')])
OrderedDict([('sum(errored)', '6655')])
OrderedDict([('sum(errored)', '8992')])
etc...

此输出与预期相同,但不受时间限制。我想要相同的输出,但对于给定的时间间隔。并且时间间隔应该从上述 Python 代码中的搜索查询“serch.jobs.export()”中传递

请告诉我如何将“时间”查询与所需的查询一起传递。

非常感谢任何帮助!提前致谢!

【问题讨论】:

    标签: python python-requests splunk splunk-query


    【解决方案1】:

    您必须将最早的放在搜索的开头。示例 - 到现在为止 1 天:

    "search index=ccmjimmie early=-1d | stats count(eval(resCode!=00200)) AS 错误 | 图表总和(errored)"

    详情见这里:https://docs.splunk.com/Documentation/Splunk/7.2.4/SearchReference/SearchTimeModifiers

    【讨论】:

      【解决方案2】:

      我可能使用不同的流程通过 Python 运行 Splunk 查询并以 JSON 格式获取搜索结果。不过这样打发时间很方便。

      这里我是通过在 post 请求的请求正文中传递最早和最晚时间变量来实现的。

      post_data = { 'id' : unique_id,
                    'search' : search_query,
                    'earliest_time' : '1',
                    'latest_time' : 'now',
                  }
      

      您可以在此处找到完整的详细信息: https://stackoverflow.com/a/66747167/9297984

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多