如何导出Graylog日志

如何导出Graylog日志

SOC Prime Team
SOC Prime Team linkedin icon 关注

Graylog将其消息保存在OpenSearch或Elasticsearch中,因此您有两种途径。使用经过访问令牌认证的Graylog REST API,或者直接使用脚本查询后端索引(默认情况下为graylog_*)。无论哪种方式,您都会得到JSON。原始行在message中,对于某些输入则在full_message中。Graylog网页界面导出的格式不是LogTotal今天能读取的格式。

Graylog是一个流行的开放日志管理平台,通常是团队首次设置的中央日志系统。Prime Core为Graylog提供了23,274个检测规则,映射到671个MITRE ATT&CK技术。以下是如何导出消息、清理消息,并在LogTotal中免费调查它们的方法。

免费开始

在您开始之前

一个访问令牌。 在Graylog中,打开您的用户设置并创建一个令牌。使用API时,您通过<token>:token认证:将令牌用作用户名,单词’token’用作密码。

后端访问权限,如果您直接访问。 Graylog后面的OpenSearch或Elasticsearch集群通常无法从外部访问。请运行它的人为您设置一个只读帐户。

流和索引集。 Graylog将消息路由到流中,并且流映射到具有自己前缀和保留的索引集。了解哪个索引集保存着您的数据。

选项1:Graylog REST API

GL="https://graylog.example.com"

curl -sS -u "$GL_TOKEN:token" -H 'Accept: application/json' -G "$GL/api/search/universal/absolute"
  --data-urlencode 'query=source:web-03'
  --data-urlencode 'from=2026-10-19T00:00:00.000Z'
  --data-urlencode 'to=2026-10-20T00:00:00.000Z'
  --data-urlencode 'limit=10000'
  | jq -c '.messages[].message' > graylog_web03_1019.jsonl

较新的Graylog版本更偏好使用Views搜索API。对于大规模导出,选项2更为可靠。

选项2:查询后端索引

这与我们指向Graylog索引的方式相同:

import json, os
from opensearchpy import OpenSearch, helpers

client = OpenSearch("https://opensearch.example.com:9200",
                    http_auth=("reader", os.environ["OS_PASSWORD"]), verify_certs=True)
query = {"query": {"bool": {"filter": [
    {"term": {"source": "web-03"}},
    {"range": {"timestamp": {"gte": "2026-10-19 00:00:00.000", "lt": "2026-10-20 00:00:00.000"}}},
]}}}

with open("graylog_web03_1019.jsonl", "w") as out:
    for hit in helpers.scan(client, index="graylog_*", query=query, size=1000):
        out.write(json.dumps(hit["_source"]) + "n")

Graylog将时间戳存储为UTC格式的yyyy-MM-dd HH:mm:ss.SSS,这就是范围使用该格式的原因。对于后端运行Elasticsearch,使用elasticsearch客户端以同样方式。

上传、清理并在LogTotal中审核

  1. 上传。 打开 logtotal.com 并将文件放入。
  2. 清理。 
  3. 审核。 

当出错时

症状可能的原因Fix
401错误来自API令牌认证写错使用<token>:token
搜索端点404错误端点在您的版本中不可用使用选项2或Views API
后端查询没有返回内容索引前缀错误,或时间戳格式错误检查索引集;使用yyyy-MM-dd HH:mm:ss.SSS格式
后端无法访问集群未暴露请求只读访问或使用API

FAQ

Message还是full_message?

Message总是存在。full_message在某些输入中如GELF出现,并可以包含更多细节。若两者都有请导出两者。

这适用于Graylog Cloud吗?

API途径适用。托管计划通常无法直接访问后端。

加入 SOC Prime 的 Detection as Code 平台 以提高对与您的业务最相关的威胁的可见性。为了帮助您开始并带来即时价值,现在与 SOC Prime 专家预约会议。