这篇说说云原生网关如何将请求日志上报到 Ckafka 或自建 Kafka 。
一、操作场景
提供自建的 Kafka 以及对应的 topic 或使用腾讯云 Ckafka 产品, 根据下述操作,就可以将云原生网关的流量日志落盘到该 Kafka 实例上。
二、操作步骤
1. 登录 TSF 控制台。
2. 在左侧导航栏单击云原生网关 ,选择需要操作的网关实例,进入实例详情页后,选择插件管理 > 系统插件。
3. 安装最新版本 tse-kafka-log 插件。
4. 进入云原生网关实例,切换页面到 基本信息 > konga 控制台,开启公网访问地址,获取账号和密码后,进入 konga 管理控制台
启用后,你的客户端可以使用系统分配的地址和端口通过外网访问实例,生效时间大约需要 1 分钟。
·IP 白名单可以提供一定保护,请确保白名单设置的安全性。
·初次开通公网绑定策略,存在延时,请你耐心等待。
·IP 组合中包含0.0.0.0,将允许所有外网 IP 访问,请谨慎操作
5. 进入 konga 管理控制台页面后,单击侧边导航栏 SERVICES,选择需要的 service 并进入详情页。
6. 在 TSF Kafka Log 下方点击 ADD PLUGIN 出现填写信息的弹窗
7. 填写 Kafka server 地址以及 topic,其中 bootstrap servers 填写 kafka 的 server 地址,topic 是 kafka 的 topic 名字。
注意:1. topic 是填写 topic 的名字,而不是 ID。
注意:2. 插件配置的详细字段说明,在步骤9中。
8. 该插件绑定 service 后,在已创建的服务器请求 service,消费 Kafka 后可以查看消费到当前请求的日志内容(JSON 格式)。
9. tse-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 |
三、参考
更多相关说明请参见 konga 插件文档。