跳到主要内容

splunk-hec-logging

splunk-hec-logging 插件将请求和响应上下文信息序列化为 Splunk 事件数据格式 并分批推送到 Splunk HTTP 事件收集器 (HEC)。该插件还支持自定义日志格式。

示例

以下示例展示了如何在不同场景下配置 splunk-hec-logging 插件。

要跟随示例操作,请完成以下步骤以设置 Splunk:

完成以下步骤以设置 Splunk:

  1. 安装 Splunk。默认情况下,Splunk Web 应在 localhost:8000 上运行。
  2. 参阅在 Splunk Web 中设置和使用 HTTP Event Collector,创建 HTTP Event Collector。
  3. 导航到 Settings > Data Inputs,并记下 Token 值。
  4. HTTP Event Collector > Global Settings 中启用所有 Token,并记下收集器端口;默认端口为 8088

要验证设置,请使用你的令牌执行以下命令:

curl "http://localhost:8088/services/collector/event" \
-H "Authorization: Splunk <replace-with-your-token>" \
-d '{"event": "hello world"}'

你应该看到 success 响应。

推送日志到 Splunk

以下示例展示了如何在路由上启用 splunk-hec-logging 插件,该插件记录客户端请求并将日志推送到 Splunk。

创建一个路由如下:

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "splunk-route",
"uri": "/anything",
"plugins": {
"splunk-hec-logging": {
"endpoint": {
"uri": "http://127.0.0.1:8088/services/collector/event",
"token": "example-splunk-hec-token"
}
}
},
"upstream": {
"nodes": {
"httpbin.org:80": 1
},
"type": "roundrobin"
}
}'

❶ 配置 Splunk HTTP 收集器端点。对于 Kubernetes,请使用集群内 Service 地址,例如 http://splunk-hec.aic.svc.cluster.local:8088/services/collector/event

❷ 替换为你的收集器令牌。

发送一些请求到该路由:

curl -i "http://127.0.0.1:9080/anything"

你应该收到 HTTP/1.1 200 OK 响应。

导航到 Splunk Web 并在左侧菜单中选择 Search & Reporting。在搜索框中输入 source="apache-apisix-splunk-hec-logging" 并搜索来自 APISIX 的事件。你应该看到与你的请求对应的事件,如下所示:

使用插件元数据记录请求和响应头

以下示例展示了如何使用 插件元数据内置变量 自定义日志格式,以记录请头和响应头中的特定信息。

在 APISIX 中,插件元数据 用于配置同一插件的所有插件实例的通用元数据字段。当一个插件在多个资源中启用并需要统一更新其元数据字段时,这非常有用。

创建一个路由如下:

curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "splunk-route",
"uri": "/anything",
"plugins": {
"splunk-hec-logging": {
"endpoint": {
"uri": "http://127.0.0.1:8088/services/collector/event",
"token": "example-splunk-hec-token"
}
}
},
"upstream": {
"nodes": {
"httpbin.org:80": 1
},
"type": "roundrobin"
}
}'

配置 splunk-hec-logging 的插件元数据:

curl "http://127.0.0.1:9180/apisix/admin/plugin_metadata/splunk-hec-logging" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"log_format": {
"host": "$host",
"@timestamp": "$time_iso8601",
"route_id": "$route_id",
"client_ip": "$remote_addr",
"env": "$http_env",
"resp_content_type": "$sent_http_Content_Type"
}
}'

❶ 记录自定义请求头 env

❷ 记录响应头 Content-Type

发送带有 env 头的请求到该路由:

curl -i "http://127.0.0.1:9080/anything" -H "env: dev"

导航到 Splunk Web 并在左侧菜单中选择 Search & Reporting。在搜索框中输入 source="apache-apisix-splunk-hec-logging" 并搜索事件。你应该看到最新的事件对应你的请求,类似于以下内容: