【问题标题】:Query Message ID with the Graylog REST API使用 Graylog REST API 查询消息 ID
【发布时间】:2021-11-18 12:32:52
【问题描述】:

我正在尝试通过 Graylog 的 REST API 查询日志消息。我当前使用的查询如下所示:

header = {"X-Requested-By": "OS-AD", "Content-Type": "application/json", "Accept": "text/csv"}
query = {
    "query_string": {"type": "elasticsearch", "query_string": "*"},
    "streams": ["61406557e62e6244b6bbded5"],
    "timerange": {
        "type": "absolute",
                "from": start,
                "to": end
    }
}

它是在 python 中实现的,这就是为什么 API 调用被分成两个不同的字典,但我想你明白了。 从此,我得到了一个 csv 格式的响应(如目前所预期的那样),其中包含三列:“时间戳”、“源”和“消息”。尽管在 Graylog 本身中,我看到了一些其他参数,例如 level、facility_num 和 facility 以及单个消息 ID。我认为消息 ID 通常也被称为永久链接。
这对我来说也是最重要的,因为它对我进一步处理日志有很大帮助,其他的是很好的补充,但我真的不需要它们。
有什么方法可以更改我的查询,以便它还返回其他参数,更具体地说是消息 ID?
我真的无法从 API 文档中提取太多信息,因为它们对我来说非常神秘......

【问题讨论】:

    标签: python rest permalinks graylog2 graylog


    【解决方案1】:

    显然,我只是使用了错误的 API 端点。我现在使用的返回message_id 的是/api/search/universal/absolute。我将请求的“字段”参数设置为“gl2_message_id,timestamp,message”。
    我的 Python 脚本中的整体查询如下所示:

    params = {
        "query": "*",
        "from": start.strftime(DATETIME_FORMAT),
        "to": end.strftime(DATETIME_FORMAT),
        "fields": "gl2_message_id,timestamp,message",
        "sort": "asc"
    }
    

    这样,我成功地获得了一个以消息 ID、时间戳和消息为列的 csv 文件。 在这种情况下,我的主要问题是授权问题,因为我一开始没有访问此 Endpoint 的权限。
    我在 Graylog 社区论坛中提出的问题的链接:
    https://community.graylog.org/t/query-message-id-with-rest-api

    代表提问者发帖

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2018-07-09
      • 2017-05-22
      相关资源
      最近更新 更多