慧知开源充电桩多协议微服务平台慧知开源充电桩多协议微服务平台
首页
介绍
快速了解
多协议模块
GitHub
首页
介绍
快速了解
多协议模块
GitHub
  • 文档

    • 介绍
    • 快速了解
    • 环境部署
    • 项目介绍
    • 后台手册
    • 前端手册
    • 组件文档
    • 更新日志
  • 微服务

    • 服务网关
    • 认证中心
    • 注册中心
    • 配置中心
    • 服务调用
    • 服务监控
    • 系统接口
    • 链路追踪
    • 熔断和降级
    • 分布式文件
    • 分布式事务
    • 分布式日志
    • 应用容器部署
  • 多协议模块

    • 系统概述
    • 技术栈与依赖
    • 开发者指南
    • 部署与配置
    • 消息队列集成
    • 缓存架构
    • 监控与运维
    • 安全机制
    • 数据模型与数据库设计
    • 架构设计
      • 架构设计
      • 微服务架构
      • 数据流分析
      • 架构模式
    • API接口参考
      • API接口参考
      • gRPC API
      • REST API
    • 核心模块详解
      • 核心模块详解
      • 协议处理框架
      • 设备管理模块
      • 协议实现模块
        • 云快充协议实现
        • 核心架构与初始化
        • 上行消息处理
        • 下行消息处理
        • 绿能协议实现
        • 核心架构
        • 下行消息处理
  • 其他

    • 常见问题
    • 捐赠支持

MultiProtocol 监控与运维手册

目录

  1. 概述
  2. 日志管理系统
  3. 性能监控体系
  4. 消息队列监控
  5. 系统资源监控
  6. 故障排查指南
  7. 运维最佳实践
  8. 监控集成方案

概述

MultiProtocol是一个高性能的充电站协议处理平台,采用微服务架构设计,支持多种充电设备协议的接入和处理。本手册详细介绍了系统的监控与运维机制,帮助运维人员有效监控系统状态、及时发现和解决问题。

日志管理系统

Log4j2配置详解

系统采用Log4j2作为日志框架,提供了灵活的日志配置和强大的日志管理能力。

配置结构分析

graph TD
A["Log4j2配置"] --> B["属性配置"]
A --> C["Appender配置"]
A --> D["Logger配置"]
B --> B1["LOG_DIR - 日志目录"]
B --> B2["LOG_PATTERN - 输出格式"]
C --> C1["Console - 控制台输出"]
C --> C2["RollingFile - 文件轮转"]
D --> D1["Root Logger"]
D --> D2["Async Logger"]
D --> D3["业务模块Logger"]

图表来源

  • [log4j2.xml](file://mp-app-bootstrap/src/main/resources/log4j2.xml#L1-L72)
  • [log4j2.xml](file://mp-protocol-bootstrap/src/main/resources/log4j2.xml#L1-L66)

日志级别配置

系统支持多层级的日志级别配置:

Logger名称默认级别环境变量用途
Root LoggerINFO-全局基础日志
com/witos.mpINFO-核心框架日志
com/witos.mp.appTRACEAPP_LOG_LEVEL应用层详细日志
com/witos.mp.protocolTRACEPROTOCOLS_LOG_LEVEL协议处理日志

输出格式配置

日志输出格式包含以下关键信息:

  • 时间戳:精确到毫秒
  • TraceId:分布式追踪标识
  • 线程名:便于问题定位
  • 日志级别:ERROR、WARN、INFO、DEBUG
  • 类名:类的简短名称
  • 日志消息:实际日志内容
  • 异常堆栈:完整异常信息

日志轮转策略

系统采用复合轮转策略:

flowchart TD
A["日志文件"] --> B{"文件大小检查"}
B --> |超过1GB| C["触发SizeBasedTriggeringPolicy"]
B --> |时间检查| D{"时间轮转检查"}
D --> |超过24小时| E["触发TimeBasedTriggeringPolicy"]
C --> F["执行文件轮转"]
E --> F
F --> G["删除超过10GB历史日志"]
G --> H["保留最新日志文件"]

图表来源

  • [log4j2.xml](file://mp-app-bootstrap/src/main/resources/log4j2.xml#L25-L45)

章节来源

  • [log4j2.xml](file://mp-app-bootstrap/src/main/resources/log4j2.xml#L1-L72)
  • [log4j2.xml](file://mp-protocol-bootstrap/src/main/resources/log4j2.xml#L1-L66)

性能监控体系

StatsFactory核心架构

系统通过StatsFactory提供统一的性能指标收集机制,支持多种监控指标类型。

classDiagram
class StatsFactory {
<<interface>>
+createStatsCounter(key, statsName, tags) StatsCounter
+createDefaultCounter(key, tags) DefaultCounter
+createMessagesStats(key, tags) MessagesStats
+createTimer(key, tags) Timer
+createGauge(key, number, tags) T
}
class DefaultStatsFactory {
-MeterRegistry meterRegistry
-Boolean metricsEnabled
-Double[] timerPercentiles
+createStatsCounter() StatsCounter
+createDefaultCounter() DefaultCounter
+createMessagesStats() MessagesStats
+createTimer() Timer
+createGauge() T
}
class StatsCounter {
-AtomicInteger counter
-Counter micrometerCounter
+increment() void
+add(delta) void
+get() int
+clear() void
}
class MessagesStats {
<<interface>>
+incrementTotal() void
+incrementSuccessful() void
+incrementFailed() void
+getTotal() int
+getSuccessful() int
+getFailed() int
+reset() void
}
class StatsTimer {
-String name
-Timer timer
-int count
-long totalTime
+record(timeMs) void
+getAvg() double
+reset() void
}
StatsFactory <|-- DefaultStatsFactory
DefaultStatsFactory --> StatsCounter
DefaultStatsFactory --> MessagesStats
DefaultStatsFactory --> StatsTimer
MessagesStats <|-- DefaultMessagesStats

图表来源

  • [DefaultStatsFactory.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/DefaultStatsFactory.java#L1-L127)
  • [DefaultCounter.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/DefaultCounter.java#L1-L40)
  • [MessagesStats.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/MessagesStats.java#L1-L36)
  • [StatsTimer.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/StatsTimer.java#L1-L47)

关键性能指标

API请求监控

系统通过StatsTimer跟踪API请求的延迟性能:

指标名称计算方式用途
平均响应时间totalTime / count评估系统响应性能
请求总数累计计数监控系统负载
成功率successfulCount / totalCount评估系统稳定性

QPS监控

通过DefaultCounter实现每秒查询率统计:

sequenceDiagram
participant Client as 客户端
participant Controller as 控制器
participant StatsFactory as 统计工厂
participant Counter as 计数器
Client->>Controller : 发送请求
Controller->>StatsFactory : 创建计数器
StatsFactory->>Counter : increment()
Counter->>Counter : 原子递增
Controller->>Controller : 处理业务逻辑
Controller-->>Client : 返回响应

图表来源

  • [DefaultCounter.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/DefaultCounter.java#L20-L35)

缓存命中率监控

系统通过缓存访问统计计算命中率:

指标计算公式监控意义
命中率hitCount / (hitCount + missCount)缓存效率评估
命中次数hitCounter.get()缓存有效性
未命中次数missCounter.get()缓存优化方向

章节来源

  • [DefaultStatsFactory.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/DefaultStatsFactory.java#L1-L127)
  • [DefaultCounter.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/DefaultCounter.java#L1-L40)
  • [StatsTimer.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/StatsTimer.java#L1-L47)
  • [MessagesStats.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/MessagesStats.java#L1-L36)
  • [DefaultMessagesStats.java](file://mp-infrastructure-stats/src/main/java/com/witos/mp/infrastructure/stats/DefaultMessagesStats.java#L1-L57)

消息队列监控

Kafka消费者统计

系统提供详细的Kafka消费者组监控功能,实时跟踪消息处理状态。

flowchart TD
A["KafkaConsumerStatsService"] --> B["消费者组注册"]
B --> C["定时统计任务"]
C --> D["获取消费者偏移量"]
D --> E["获取主题末尾偏移量"]
E --> F["计算消息滞后量"]
F --> G{"存在滞后消息?"}
G --> |是| H["记录滞后统计"]
G --> |否| I["跳过统计"]
H --> J["输出日志"]
I --> K["等待下次调度"]
J --> K

图表来源

  • [KafkaConsumerStatsService.java](file://mp-infrastructure-queue/src/main/java/com/witos/mp/infrastructure/queue/kafka/KafkaConsumerStatsService.java#L40-L100)

消息滞后监控指标

指标名称含义监控阈值建议
消费者组IDKafka消费者组标识实时监控
主题名称消息主题按业务划分
分区编号Kafka分区标识单分区监控
已消费偏移量当前消费位置跟踪消费进度
末尾偏移量主题最新消息位置监控消息增长
消息滞后量未消费消息数量超过1000需关注

消费者组健康检查

系统自动监控消费者组的健康状态:

sequenceDiagram
participant Scheduler as 统计调度器
participant AdminClient as Kafka管理客户端
participant Consumer as Kafka消费者
participant Logger as 日志系统
Scheduler->>AdminClient : 获取消费者组偏移量
AdminClient-->>Scheduler : 返回偏移量信息
Scheduler->>Consumer : 获取主题末尾偏移量
Consumer-->>Scheduler : 返回末尾偏移量
Scheduler->>Scheduler : 计算消息滞后量
alt 存在滞后消息
Scheduler->>Logger : 记录滞后统计
else 正常状态
Scheduler->>Scheduler : 跳过记录
end

图表来源

  • [KafkaConsumerStatsService.java](file://mp-infrastructure-queue/src/main/java/com/witos/mp/infrastructure/queue/kafka/KafkaConsumerStatsService.java#L60-L90)

章节来源

  • [KafkaConsumerStatsService.java](file://mp-infrastructure-queue/src/main/java/com/witos/mp/infrastructure/queue/kafka/KafkaConsumerStatsService.java#L1-L161)

系统资源监控

系统指标采集

系统通过SystemUtil类提供底层系统资源监控能力。

classDiagram
class SystemUtil {
-HardwareAbstractionLayer HARDWARE
+getMemoryUsage() Optional~Integer~
+getTotalMemory() Optional~Long~
+getCpuUsage() Optional~Integer~
+getCpuCount() Optional~Integer~
+getDiscSpaceUsage() Optional~Integer~
+getTotalDiscSpace() Optional~Long~
-toPercent(used, total) int
}
class ServiceInfoProvider {
<<interface>>
+getServiceInfo() ServiceInfo
+generateNewServiceInfoWithCurrentSystemInfo() ServiceInfo
+isMonolith() boolean
}
class DefaultServiceInfoProvider {
-String serviceId
-String serviceType
-ServiceInfo serviceInfo
-String hostAddress
-int restPort
-int grpcPort
+getServiceInfo() ServiceInfo
+generateNewServiceInfoWithCurrentSystemInfo() ServiceInfo
}
ServiceInfoProvider <|-- DefaultServiceInfoProvider
DefaultServiceInfoProvider --> SystemUtil

图表来源

  • [SystemUtil.java](file://mp-infrastructure-util/src/main/java/com/witos/mp/infrastructure/util/SystemUtil.java#L1-L98)
  • [DefaultServiceInfoProvider.java](file://mp-infrastructure-queue/src/main/java/com/witos/mp/infrastructure/queue/discovery/DefaultServiceInfoProvider.java#L84-L112)

资源监控指标

CPU监控

指标获取方式监控意义
CPU使用率HARDWARE.getProcessor().getSystemCpuLoad()系统负载评估
CPU核心数HARDWARE.getProcessor().getLogicalProcessorCount()并发能力参考

内存监控

指标获取方式监控意义
内存使用率(total - available) / total * 100内存压力评估
总内存容量HARDWARE.getMemory().getTotal()内存资源配置

磁盘监控

指标获取方式监控意义
磁盘使用率(total - usable) / total * 100磁盘空间压力
总磁盘容量Files.getFileStore().getTotalSpace()存储资源规划

章节来源

  • [SystemUtil.java](file://mp-infrastructure-util/src/main/java/com/witos/mp/infrastructure/util/SystemUtil.java#L1-L98)

故障排查指南

常见故障场景

服务无法启动

症状表现:

  • 应用启动失败
  • 端口绑定错误
  • 依赖服务不可用

排查步骤:

flowchart TD
A["服务启动失败"] --> B{"检查端口占用"}
B --> |端口被占用| C["修改端口配置"]
B --> |端口正常| D{"检查依赖服务"}
D --> |数据库不可用| E["检查数据库连接"]
D --> |Redis不可用| F["检查Redis连接"]
D --> |Kafka不可用| G["检查Kafka集群"]
D --> |依赖正常| H["检查配置文件"]
C --> I["重启服务"]
E --> I
F --> I
G --> I
H --> I

诊断命令:

# 检查端口占用
netstat -tlnp | grep :8080

# 检查进程状态
ps aux | grep mp

# 查看启动日志
tail -f logs/mp-app.log

消息积压问题

症状表现:

  • Kafka消费者滞后增加
  • 消息处理延迟
  • 系统响应变慢

排查流程:

sequenceDiagram
participant Admin as 管理员
participant Monitor as 监控系统
participant Kafka as Kafka集群
participant Consumer as 消费者组
Admin->>Monitor : 触发积压检查
Monitor->>Kafka : 查询消费者偏移量
Kafka-->>Monitor : 返回偏移量信息
Monitor->>Kafka : 查询主题末尾偏移量
Kafka-->>Monitor : 返回末尾偏移量
Monitor->>Monitor : 计算滞后量
alt 滞后量过大
Monitor->>Admin : 发送告警通知
Admin->>Consumer : 检查消费者处理能力
Consumer-->>Admin : 返回处理状态
else 滞后量正常
Monitor->>Admin : 记录正常状态
end

解决措施:

  1. 增加消费者实例数量
  2. 优化消息处理逻辑
  3. 调整批处理大小
  4. 检查消费者组重新平衡

高延迟问题

症状表现:

  • API响应时间增加
  • 用户体验下降
  • 系统吞吐量降低

分析方法:

排查维度检查项目解决方案
应用层GC日志分析调整JVM参数
数据库层慢SQL分析添加索引优化
网络层连接池配置增加连接数
缓存层缓存命中率优化缓存策略

章节来源

  • [app-service.yml](file://mp-app-bootstrap/src/main/resources/app-service.yml#L1-L432)
  • [protocol-service.yml](file://mp-protocol-bootstrap/src/main/resources/protocol-service.yml#L1-L35)

运维最佳实践

日常维护任务

数据库备份策略

flowchart TD
A["数据库备份"] --> B["全量备份"]
A --> C["增量备份"]
B --> D["每周日执行"]
C --> E["每日凌晨执行"]
D --> F["保留4周"]
E --> G["保留7天"]
F --> H["归档存储"]
G --> H
H --> I["异地备份"]
I --> J["定期验证"]

系统健康检查清单

检查项目检查频率关注指标告警阈值
服务可用性实时响应时间>1000ms
CPU使用率5分钟平均值>80%
内存使用率5分钟平均值>85%
磁盘使用率1小时占用比例>90%
错误率实时错误数量/总请求数>5%

配置管理规范

  1. 环境隔离:开发、测试、生产环境配置严格分离
  2. 版本控制:所有配置文件纳入版本控制系统
  3. 变更审批:重大配置变更需经过审批流程
  4. 回滚准备:每次配置变更都应准备回滚方案

性能优化建议

JVM调优参数

# 生产环境推荐配置
JAVA_OPTS: >
  -Xms2g -Xmx4g
  -XX:+UseG1GC
  -XX:MaxGCPauseMillis=200
  -XX:+HeapDumpOnOutOfMemoryError
  -XX:HeapDumpPath=/logs/
  -Djava.awt.headless=true

数据库连接池优化

参数推荐值说明
maximumPoolSize64最大连接数
minimumIdle10最小空闲连接
connectionTimeout30000连接超时时间
idleTimeout600000空闲连接超时

章节来源

  • [app-service.yml](file://mp-app-bootstrap/src/main/resources/app-service.yml#L1-L432)

监控集成方案

Prometheus集成

系统内置Prometheus指标导出功能,支持与主流监控系统集成。

指标暴露配置

management:
  endpoints:
    web:
      exposure:
        include: 'prometheus,health'
  endpoint:
    health:
      show-details: always

关键监控指标

指标名称类型说明
mp_api_requests_totalCounterAPI请求总数
mp_api_requests_duration_secondsHistogramAPI请求耗时分布
mp_cache_hit_rateGauge缓存命中率
mp_queue_lagGauge消息队列滞后量
mp_system_cpu_usageGaugeCPU使用率
mp_system_memory_usageGauge内存使用率

Grafana仪表板

系统概览面板

graph LR
A["Grafana仪表板"] --> B["系统资源监控"]
A --> C["应用性能监控"]
A --> D["业务指标监控"]
B --> B1["CPU使用率"]
B --> B2["内存使用率"]
B --> B3["磁盘空间"]
C --> C1["API响应时间"]
C --> C2["错误率"]
C --> C3["QPS"]
D --> D1["充电订单量"]
D --> D2["设备在线率"]
D --> D3["支付成功率"]

告警规则配置

groups:
  - name: mp-alerts
    rules:
      - alert: HighCpuUsage
        expr: mp_system_cpu_usage > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU使用率过高"
          
      - alert: HighMemoryUsage
        expr: mp_system_memory_usage > 85
        for: 3m
        labels:
          severity: critical
        annotations:
          summary: "内存使用率过高"

Docker监控

容器化部署监控

graph TD
A["Docker Compose"] --> B["应用容器"]
A --> C["Kafka集群"]
A --> D["监控组件"]
B --> B1["Mp应用"]
B --> B2["协议处理服务"]
C --> C1["Kafka Broker"]
C --> C2["Zookeeper"]
D --> D1["Prometheus"]
D --> D2["Grafana"]
D --> D3["Kafka Exporter"]

图表来源

  • [docker-compose.kafka.yml](file://docker/docker-compose.kafka.yml#L1-L67)

章节来源

  • [app-service.yml](file://mp-app-bootstrap/src/main/resources/app-service.yml#L80-L85)
  • [protocol-service.yml](file://mp-protocol-bootstrap/src/main/resources/protocol-service.yml#L25-L30)
  • [docker-compose.kafka.yml](file://docker/docker-compose.kafka.yml#L1-L67)
最近更新:: 2026/5/1 15:39
Contributors: feng
Prev
缓存架构
Next
安全机制