将访问日志发送到 Splunk
API7 网关可以将访问日志直接发送到 Splunk,具体方式是通过 splunk-hec-logging 插件使用 HTTP Event Collector(HEC)协议。无需单独部署日志转发器,即可在 Splunk 中集中分析日志、配置告警和创建监控面板。
本指南介绍集成流程。有关完整的插件参数和元数据参考,请参阅 splunk-hec-logging。
如果需要收集 Kubernetes Pod 中的网关错误日志,而不是从路由传输请求访问日志,请参阅将 Kubernetes 错误日志发送到 Splunk。
前置条件
- 正在运行的 API7 网关部署。
- 已启用 HTTP Event Collector(HEC)的 Splunk 实例。
- 已在 Splunk 中生成 HEC 令牌。
- 从控制台获取令牌。
步骤一:在 Splunk 中启用 HEC
- 在 Splunk 中,进入 Settings > Data Inputs > HTTP Event Collector。
- 点击 New Token 并完成以下配置:
- Name:描述性名称,例如
api7-gateway。 - Source type:
_json。 - Index:选择或创建用于存储网关日志的索引,例如
main。
- Name:描述性名称,例如
- 保存并记录 HEC 令牌。
HEC 端点 URL 通常为 https://<SPLUNK_HOST>:8088/services/collector/event。
步骤二:启用插件
可以在单个路由上启用 splunk-hec-logging(仅记录选定流量),也可以将其配置为全局规则(记录网关组中的所有流量)。请选择以下一种方式。
选项 A:按路由启用
- Admin API
- ADC
# 为上游创建服务
curl -k "https://localhost:7443/apisix/admin/services/splunk-service?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "splunk-service",
"upstream": {
"type": "roundrobin",
"nodes": [
{ "host": "httpbin.org", "port": 80, "weight": 1 }
]
}
}'
# 创建使用该服务并启用插件 的路由
curl -k "https://localhost:7443/apisix/admin/routes/splunk-route?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "splunk-route",
"service_id": "splunk-service",
"paths": ["/anything/*"],
"plugins": {
"splunk-hec-logging": {
"endpoint": {
"uri": "https://splunk.example.com:8088/services/collector/event",
"token": "YOUR_HEC_TOKEN"
}
}
}
}'
adc.yaml
services:
- name: splunk-service
routes:
- name: splunk-route
uris:
- /anything/*
plugins:
splunk-hec-logging:
endpoint:
uri: "https://splunk.example.com:8088/services/collector/event"
token: "YOUR_HEC_TOKEN"
upstream:
type: roundrobin
nodes:
- host: httpbin.org
port: 80
weight: 1
adc sync -f adc.yaml