本文介绍云原生 API 网关 Kong 如何将请求日志上报到 Ckafka 或自建 Kafka 。
操作场景
操作步骤
1. 安装最新版本 tse-kafka-log 插件。 微服务引擎 Kong 控制台,选择需要的网关实例,单击插件管理 > 系统插件。
如果已经安装,可以忽略此步骤。
2. 进入云原生 API 网关的 Kong 实例的基本信息 > Konga 控制台,查看 Kong 管理控制台地址并进入。
3. 进入 Kong 管理控制台页面后,单击侧边导航栏 SERVICES,选择需要的 service 并进入详情页。
4. 选择 Plugins 并单击 Add Plugin,在 Other 栏中选择添加 Tse Kafka Log。
5. 填写 kafka server 地址以及 topic,其中 bootstrap servers 填写 kafka 的 server 地址,topic 是 kafka 的 topic 名字。
6. 该插件绑定 service 后,请求 service,消费 kafka 后可以查看消费到当前请求的日志内容(json 格式)。
7. ts
e-kafka-log 插件配置字段详细说明
注意:
在 Konga 的页面中,配置项键的_会被隐藏掉,例如:bootstrap_servers 会显示为 bootstrap servers。
配置项键 | 是否必填 | 默认值 | 说明 |
bootstrap_servers | 是 | 无 | 数组,一般的 bootstrap_servers 地址是9092端口,例如:10.0.90.16:9092 |
topic | 是 | 无 | topic 的名字,而不是 ID |
max_body_size | 否 | 8192 | 请求和响应的最大 body 大小,超过此大小的 body 会被截断 |
log_req_body | 否 | false | 是否打印请求 body |
log_res_body | 否 | false | 是否打印响应 body |
base64_req_body_encoding | 否 | 无 | 数组。当请求 Header:content-encoding 符合其中一个,会把请求的 body进行 base64 encode |
base64_res_body_encoding | 否 | 无 | 数组。当响应 Header:content-encoding 符合其中一个,会把响应的 body进行 base64 encode |
log_req_headers | 否 | true | 是否打印请求 headers |
log_res_headers | 否 | true | 是否打印响应 headers |
exclude_req_headers | 否 | 无 | 数组。打印请求 headers 中,删除指定的 header |
exclude_res_headers | 否 | 无 | 数组。打印响应 headers 中,删除指定的 header |
skip_expr_in_access | 否 | 无 | 高级,在 access 阶段运行一个 lua 代码,判断是否跳过打印日志。return true 就是跳过 |
skip_expr_in_body_filter | 否 | 无 | 高级,在 body filter 阶段运行一个lua代码,判断是否跳过打印日志。return true 就是跳过 |
http_log_mode | 否 | default | default/close/custom。default 为内置的日志字段,close 为关闭日志,custom 为自定义日志 |
http_log_custom_format | 否 | {} | 七层自定义的日志格式。例如{"cip": "$remote_addr", "host": "$host"},跟 CLS 日志保持一致 |
stream_log_mode | 否 | default | default/close/custom。default 为内置的日志字段,close 为关闭日志,custom 为自定义日志 |
stream_log_custom_format | 否 | {} | 四层自定义的日志格式。例如{"cip": "$remote_addr", "protocol": "$protocol"},跟 CLS日 志保持一致 |
batch_size | 否 | 100 | 消息缓存队列长度,默认100 |
retry_count | 否 | 3 | 消息发送重试次数,失败时候会重试 |
flush_timeout | 否 | 2000 | 发送的超时时间,单位 ms |
compressor | 否 | Lz4 | 消息压缩算法,默认用 Lz4 |