4. 基础配置入门:配置文件结构、核心参数说明、日志与监控配置、首次启动配置

Risk Gateway 回放对比模块的配置体系是确保对比任务稳定、可追溯、可调试的基石。本章将带你拆解配置文件的骨架,理解每个核心参数的含义,并完成首次启动的完整配置流程。

4.1 配置文件结构

Risk Gateway 采用 YAML 作为默认配置格式,支持多环境隔离。一个标准的配置文件由四个顶级区块组成:gateway、replay、comparison 和 monitoring。

📁 配置文件层级(典型路径:conf/risk-gateway.yml)
# risk-gateway.yml  — 回放对比模块主配置
gateway:
  mode: "replay"               # 运行模式:replay | live | hybrid
  instance_id: "rg-node-01"    # 节点唯一标识
  listen_port: 8080            # 服务监听端口

replay:
  source: "kafka"              # 流量来源:kafka | file | grpc
  topic: "risk-events-live"    # 源主题
  offset: "latest"             # 消费偏移:latest | earliest | timestamp
  rate_limit: 1000             # 每秒最大回放事件数

comparison:
  engine: "diffy"              # 对比引擎:diffy | custom
  tolerance: 0.05              # 数值容忍度(5%)
  ignore_fields:               # 忽略对比的字段列表
    - "trace_id"
    - "timestamp"
  output: "elasticsearch"      # 结果输出:elasticsearch | file | console

monitoring:
  metrics_port: 9090           # Prometheus 指标端口
  log_level: "info"            # 日志级别:debug | info | warn | error
  log_file: "/var/log/rg/replay.log"
  health_check: true           # 启用健康检查端点
💡 最佳实践:将敏感信息(如 Kafka 密码、ES 地址)通过环境变量注入,避免明文写入配置文件。Risk Gateway 支持 ${ENV_VAR} 语法。

4.2 核心参数说明

下表列出了回放对比模块最关键的参数及其推荐值,帮助你快速定位配置项的作用。

参数路径 类型 默认值 说明
gateway.mode string replay 运行模式:replay 仅回放,live 实时对比,hybrid 混合
replay.source string kafka 流量数据源,支持 kafka、file(本地文件)、grpc
replay.rate_limit int 500 每秒最大回放事件数,防止压垮下游系统
comparison.tolerance float 0.0 数值字段的容忍比例(0.05 表示允许 5% 偏差)
comparison.ignore_fields list [] 对比时忽略的字段列表,常用于时间戳、追踪 ID 等易变字段
monitoring.metrics_port int 9090 Prometheus 指标暴露端口,用于接入监控系统
monitoring.log_level string info 日志输出级别,生产环境建议 warn 或 info
⚠️ 避坑指南:comparison.tolerance 设置为 0 时,任何微小的浮点偏差都会导致对比失败。对于金融风控场景,建议至少设置为 0.001(0.1%),避免因精度问题产生大量误报。

4.3 日志与监控配置

完善的日志与监控是排查回放对比问题的“眼睛”。Risk Gateway 内置了结构化日志和 Prometheus 指标输出,只需简单配置即可接入现有可观测体系。

4.3.1 日志配置详解

日志配置支持按模块独立控制级别,并自动轮转归档。

monitoring:
  log_level: "info"
  log_file: "/var/log/rg/replay.log"
  log_max_size: "100MB"        # 单个日志文件最大大小
  log_max_backups: 10          # 保留的旧日志文件数
  log_max_age: 30              # 日志保留天数
  log_format: "json"           # 输出格式:json | text
  log_fields:                  # 自定义结构化字段
    app: "risk-gateway"
    env: "production"

4.3.2 监控指标与健康检查

开启 health_check: true 后,Risk Gateway 会在 /health 端点暴露以下关键指标:

  • replay_events_total — 已回放事件总数
  • comparison_mismatch_total — 对比不一致事件总数
  • replay_lag_seconds — 回放延迟(秒)
  • comparison_duration_milliseconds — 单次对比耗时(毫秒)
日志与监控数据流架构 回放对比引擎 结构化日志 Prometheus 指标 健康检查端点 日志文件 / ELK Grafana / 告警 负载均衡器 数据流

4.4 首次启动配置

完成配置文件编写后,按照以下步骤完成 Risk Gateway 的首次启动与验证。

  1. 环境检查:确保 Java 11+、Kafka/文件数据源可达、Elasticsearch 或输出目标可用。
  2. 配置文件校验:使用内置命令检查 YAML 语法与参数合法性。
# 校验配置文件
./risk-gateway --validate --config conf/risk-gateway.yml

# 预期输出:Configuration validation passed.
  1. 启动服务:前台启动观察日志,确认无异常。
./risk-gateway --config conf/risk-gateway.yml

# 启动后关键日志示例
[INFO] [main] RiskGateway - Starting Risk Gateway in REPLAY mode
[INFO] [main] ReplaySource - Connected to Kafka topic: risk-events-live
[INFO] [main] ComparisonEngine - Diffy engine initialized, tolerance=0.05
[INFO] [main] HealthCheck - Health endpoint available at /health
  1. 验证健康检查:访问 http://localhost:8080/health,确认返回 {"status":"UP"}。
  2. 检查指标端点:访问 http://localhost:9090/metrics,确认 Prometheus 指标正常暴露。
🔧 首次启动常见问题:
  • Kafka 连接超时:检查 replay.source 配置中的 bootstrap.servers 是否可达。
  • 对比结果为空:确认 comparison.ignore_fields 没有误过滤关键字段。
  • 日志不输出:检查 log_file 路径是否有写入权限。
首次启动配置流程 环境检查 配置文件校验 启动服务 验证健康检查 检查指标端点 启动后关键检查项 • 日志无 ERROR 级别输出 • /health 返回 UP 状态 • /metrics 暴露 replay_events_total • 对比结果写入目标存储

4.5 配置模板速查

以下是一个可直接用于生产环境的精简配置模板,覆盖了最常用的参数组合。

gateway:
  mode: "replay"
  instance_id: "rg-prod-01"
  listen_port: 8080

replay:
  source: "kafka"
  topic: "risk-events-prod"
  offset: "latest"
  rate_limit: 2000

comparison:
  engine: "diffy"
  tolerance: 0.01
  ignore_fields:
    - "trace_id"
    - "timestamp"
    - "request_id"
  output: "elasticsearch"

monitoring:
  metrics_port: 9090
  log_level: "warn"
  log_file: "/var/log/rg/replay.log"
  health_check: true
✅ 配置检查清单:
  • 确认 gateway.mode 与业务场景匹配(回放/实时/混合)。
  • 确认 replay.rate_limit 不超过下游系统处理能力。
  • 确认 comparison.ignore_fields 包含所有易变字段。
  • 确认 monitoring.log_level 在生产环境设置为 warn 或 info。
  • 确认 monitoring.health_check 已开启,便于负载均衡探测。