将 Kubernetes 的错误日志转发至 Splunk
在生产环境中,及时收集和分析错误日志对于维护系统稳定性和协助故障排查至关重要。
本指南介绍了如何从运行在 Kubernetes 环境中的多个 API7 网关实例中收集错误日志,并将其发送至 Splunk 进行集中式的日志管理。为了实现这一目标,你将使用 Splunk OpenTelemetry Collector for Kubernetes,这是一个专门用于从 Kubernetes Pod 收集日志的解决方案。
前提条件
- 在 Kubernetes 集群中部署 API7 网关。
- 安装 Splunk。
部署 Splunk
你可以选择使用 Splunk 的云服务或在本地部署 Splunk。如果你已经部署了 Splunk,则可以跳过此步骤,直接进入创建 Splunk HEC Token。
为 Splunk 创建一个 docker-compose 文件:
docker-compose.yaml
services:
splunk:
image: splunk/splunk:8.2.3
container_name: splunk
hostname: splunk
environment:
- SPLUNK_START_ARGS=--accept-license
- SPLUNK_PASSWORD=yourpassword123
- SPLUNK_HEC_TOKEN=your-hec-token
ports:
- "8000:8000"
- "8088:8088"
- "8089:8089"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000"]
interval: 30s
timeout: 10s
retries: 3
restart: unless-stopped
启动 Splunk:
docker compose up -d
创建 Splunk HEC Token
转到 Settings > Data inputs:
选择 HTTP Event Collector:
创建一个新的 token:
创建 Splunk 索引
要在 Splunk 中创建用于收集错误日志的索引(Index),请转到 Indexes:

例如,你可以创建一个名为 gateway_error_logs 的索引:

部署 Splunk OpenTelemetry Collector for Kubernetes
为 Helm chart 创建一个 values 文件:
values.yaml
clusterName: "my-cluster"
splunkPlatform:
endpoint: "https://{Your_Splunk_Host}:8088/services/collector/event"
token: "your-hec-token"
index: "gateway_error_logs"
insecureSkipVerify: true
logsEnabled: true
metricsEnabled: false
tracesEnabled: false
logsEngine: "otel"
logsCollection:
containers:
enabled: true
excludeAgentLogs: true
extraOperators:
# https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/stanza/docs/operators/README.md
- type: "filter"
expr: 'not (body matches "(?i)(error|exception|fail|fatal)")'
agent:
resources:
limits:
cpu: 1
memory: 512Mi
requests:
cpu: 200m
memory: 256Mi
要了解有关 Splunk OpenTelemetry Collector for Kubernetes 高级配置的更多信息,请参阅官方 Helm chart 配置文件。
安装 Splunk OpenTelemetry Collector for Kubernetes:
helm repo add splunk-otel-collector https://signalfx.github.io/splunk-otel-collector-chart
helm repo update
helm upgrade --install my-splunk-otel-collector -n logging --create-namespace -f values.yaml splunk-otel-collector-chart/splunk-otel-collector
验证日志收集
在 API7 网关中生成任意错误日志。在 Splunk 管理控制台中,搜索 index="gateway_error_logs" "[error]" 即可查看相应的错误日志:
