跳到主要内容
版本:3.10.x

API7 网关 AI Agent Skill:plugin kafka logger

本页提供 plugin kafka logger 场景的 API7 企业版操作指南。请保留下方命令、字段、配置项和 API 路径的原样,并根据实际网关环境替换示例值。

Overview

The kafka-logger plugin pushes request/response logs to Apache Kafka topics. It supports multiple brokers, SASL authentication, async/sync producing, custom log formats, and batch processing for efficient delivery.

When to Use

  • Stream access logs to Kafka for downstream processing
  • Feed real-time API analytics pipelines
  • Integrate with Kafka-based logging infrastructure
  • Need SASL-authenticated Kafka clusters

Plugin Configuration Reference

Core Parameters

FieldTypeRequiredDefaultDescription
brokersarrayYesKafka broker list
brokers[].hoststringYesBroker hostname or IP
brokers[].portintegerYesBroker port (1-65535)
kafka_topicstringYesTarget Kafka topic
keystringNoPartition key for routing
timeoutintegerNo3Connection timeout in seconds

SASL Authentication

FieldTypeRequiredDefaultDescription
brokers[].sasl_configobjectNoSASL config per broker
brokers[].sasl_config.mechanismstringNo"PLAIN"PLAIN, SCRAM-SHA-256, or SCRAM-SHA-512
brokers[].sasl_config.userstringYes*SASL username (*if sasl_config set)
brokers[].sasl_config.passwordstringYes*SASL password (*if sasl_config set)

Producer Configuration

FieldTypeDefaultDescription
producer_typestring"async"async (batched) or sync (immediate)
required_acksinteger11 (leader ack) or -1 (all replicas)
producer_batch_numinteger200Messages per Kafka batch
producer_batch_sizeinteger1048576Batch size in bytes (1MB)

Log Format Options

FieldTypeDefaultDescription
meta_formatstring"default"default (JSON) or origin (raw HTTP)
log_formatobjectCustom log format with $variable syntax
include_req_bodybooleanfalseInclude request body
include_req_body_exprarrayConditional request body logging

Step-by-Step: Ship Logs to Kafka

1. Create a route with kafka-logger

Enable logging for gateway group default:

a7 route create --gateway-group default -f - <<'EOF'
{
"id": "kafka-logged-api",
"uri": "/api/*",
"plugins": {
"kafka-logger": {
"brokers": [
{"host": "kafka-1", "port": 9092},
{"host": "kafka-2", "port": 9092}
],
"kafka_topic": "api7-logs",
"batch_max_size": 100
}
},
"upstream": {
"type": "roundrobin",
"nodes": [{"host": "backend", "port": 8080, "weight": 1}]
}
}
EOF

2. Global logging for a gateway group

Apply a Global Rule for all traffic in the prod group:

a7 global_rule create --gateway-group prod -f - <<'EOF'
{
"id": "kafka-logger-global",
"plugins": {
"kafka-logger": {
"brokers": [{"host": "kafka-broker", "port": 9092}],
"kafka_topic": "prod-logs",
"batch_max_size": 500
}
}
}
EOF

Common Patterns

SASL-authenticated Kafka cluster

{
"plugins": {
"kafka-logger": {
"brokers": [
{
"host": "kafka.example.com",
"port": 9092,
"sasl_config": {
"mechanism": "SCRAM-SHA-256",
"user": "api7-user",
"password": "secret-password"
}
}
],
"kafka_topic": "secure-logs",
"required_acks": -1
}
}
}

Custom log format

{
"plugins": {
"kafka-logger": {
"brokers": [{"host": "kafka", "port": 9092}],
"kafka_topic": "api-logs",
"log_format": {
"@timestamp": "$time_iso8601",
"client_ip": "$remote_addr",
"method": "$request_method",
"uri": "$request_uri",
"status": "$status",
"latency": "$request_time"
}
}
}
}

Partition by route ID

{
"plugins": {
"kafka-logger": {
"brokers": [{"host": "kafka", "port": 9092}],
"kafka_topic": "api-logs",
"key": "$route_id"
}
}
}

Troubleshooting

SymptomCauseFix
No messages in KafkaBroker unreachableVerify broker host/port; check firewall from gateway nodes
SASL auth failureWrong credentials or mechanismVerify user/password; ensure mechanism matches Kafka config
Messages delayedLarge batch/timeout settingsReduce inactive_timeout and producer_time_linger
Messages droppedBuffer overflowIncrease producer_max_buffering; add more brokers
Topic not foundTopic doesn't existCreate topic manually in Kafka or enable auto-creation
Config not appliedWrong gateway group specifiedEnsure --gateway-group matches the desired cluster

Config Sync Example

version: "1"
gateway_group: default
routes:
- id: kafka-logged-api
uri: /api/*
plugins:
kafka-logger:
brokers:
- host: kafka-1
port: 9092
- host: kafka-2
port: 9092
kafka_topic: api7-logs
producer_type: async
required_acks: 1
batch_max_size: 200
inactive_timeout: 5
upstream:
type: roundrobin
nodes:
- host: backend
port: 8080
weight: 1

This page is generated from a7-plugin-kafka-logger/SKILL.md in the api7/a7 repository. Browse all skills on the AI Agent Skills page.