优化遥测数据传输
数据面(DP)定期向控制面(CP)报告其运行状态和指标数据,以实现集中的监控、管理和分析。为了减少网络传输开销,DP 在报告遥测数据时默认启用 Gzip 压缩。
本指南介绍了如何配置遥测数据传输和压缩级别,以在网络带宽占用和 CPU 消耗之间实现最佳平衡。
数据从 DP 到 CP 的传输
DP 定期向 CP 发送遥测指标,包括 API 流量、请求延迟、状态码、带宽和连接数等关键性能指标(KPI)。这些指标遵循 Prometheus 格式并为监控和告警奠定了基础。
自定义数据传输配置
默认情况下,DP 每 15 秒向 CP 报告一次遥测数据。你可以在网关的配置文件中自定义此频率及相关设置。
以下配置列出了所有遥测相关的选项及其默认值:
conf/config.yaml
api7ee:
telemetry:
# -- 是否启用向控制面报告遥测数据
enable: true
# -- 向控制面发送遥测数据的时间间隔(秒)
interval: 15
# -- 发送到控制面的指标数据的最大大小(字节,默认 32MB),超出的部分将被截断
max_metrics_size: 33554432
# -- 压缩前的最大批处理大小(字节,默认 4MB)
metrics_batch_size: 4194304
# -- gzip 压缩级别。-1 表示使用库的默认值(通常是 6),范围是 0-9;1 速度最快,9 压缩率最高
compression_level: -1
了解 Gzip 压缩级别
为了减少网络传输的开销,DP 默认在报告遥测数据时启用 Gzip 压缩。可配置的压缩级别允许用户在 CPU 消耗与网络带宽之间进行权衡。
默认情况下,Gzip 压缩级别设置为 -1。你可以通过网关配置文件中的 api7ee.telemetry.compression_level 参数来自定义压缩级别。
| 级别 | 描述 | 特征 |
|---|---|---|
| -1 | 使用 zlib 库默认设置 | 通常为级别 6 |
| 0 | 不压缩 | 仅打包数据;没有 CPU 消耗,数据体积最大。 |
| 1 | 最快压缩 | CPU 消耗最低,压缩率最低。 |
| 6 | 平衡压缩 | 在 CPU 消耗与压缩率之间实现最佳平衡。 |
| 9 | 最高压缩 | 压缩率最高,CPU 消耗最高。 |
禁用数据传输
要禁用遥测数据传输,可在配置文件中将 api7ee.telemetry.enable 参数设置为 false。请注意,禁用遥测将带来以下影响:
| 影响类别 | 详情 |
|---|---|
| 丧失可观测性 | 控制面将不再接收来自数据面的性能指标。监控仪表板和告警系统将会失效。 |
| 影响运维决策 | 运维团队将丢失评估服务健康、进行容量规划以及故障排查的关键数据来源。 |
| 合规风险 | 某些行业对系统监控和审计的合规要求可能将无法得到满足。 |
注意
除非有特殊需求(如调试场景或处于完全隔离的环境中),否则强烈建议不要禁用此功能。
压缩性能测试
本节提供了完整的测试流程,以在实际环境中验证不同压缩级别对数据大小和 CPU 性能的影响。
前提条件
在开始测试之前,请确保你的环境设置正确并满足以下要求。
准备 API7 企业版
确保:
- 一个 API7 企业版部署,包含一个 CP 和至少一个 DP(网关)。
- DP 能够正常向 CP 报告数据。
- 具有修改 DP 配置文件和重启容器的权限。
- 能够访问 DP 的日志和监控指标。