故障排除指南
**本文档引用的文件** - [[bi-analysis/cmd/bi-analysis/main.go]](../file/bi-analysis/cmd/bi-analysis/main.go) - [[bi-analysis/configs/application-dev.yaml]](../file/bi-analysis/configs/application-dev.yaml) - [[bi-common/observability/logger/logger.go]](../file/bi-common/observability/logger/logger.go) - [[bi-common/registry/nacos/client.go]](../file/bi-common/registry/nacos/client.go) - [[bi-common/registry/nacos/discovery.go]](../file/bi-common/registry/nacos/discovery.go) - [[bi-common/registry/nacos/registry.go]](../file/bi-common/registry/nacos/registry.go) - [[bi-common/mq/kafkax/consumer.go]](../file/bi-common/mq/kafkax/consumer.go) - [[bi-common/mq/kafkax/config.go]](../file/bi-common/mq/kafkax/config.go) - [[bi-common/database/gormx/config.go]](../file/bi-common/database/gormx/config.go) - [[bi-basic/cmd/server/main.go]](../file/bi-basic/cmd/server/main.go) - [[bi-intra/charts/grafana/README.md]](../file/bi-intra/charts/grafana/readme.md) - [[mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]](../file/mcp-server-starrocks/src/mcp-server-starrocks/db-client.py) - [[scripts/port-forward.sh]](../file/scripts/port-forward.sh) - [[_bmad/bmm/testarch/knowledge/log.md]](../file/bmad/bmm/testarch/knowledge/log.md) - [[_bmad/bmm/testarch/knowledge/error-handling.md]](../file/bmad/bmm/testarch/knowledge/error-handling.md)
目录
简介
本指南面向BI分析平台的运维与开发人员,提供系统性的故障诊断方法与调试技巧。内容涵盖启动失败(依赖服务不可用、配置错误、端口冲突)、性能问题(慢查询、内存/CPU异常)、网络连接问题(服务发现、负载均衡、防火墙)、日志分析与错误解读、各服务模块特定故障模式与解决方案,以及应急响应流程与常用诊断命令。
项目结构
BI分析平台由多语言、多模块构成,包含Go微服务、Python MCP服务、前端与可视化组件,并通过Nacos进行配置与服务治理,Kafka负责消息流,GORM/StarRocks负责数据访问,Grafana提供可观测性。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-basic/cmd/server/main.go]
- [bi-common/registry/nacos/client.go]
- [bi-common/mq/kafkax/consumer.go]
- [bi-common/database/gormx/config.go]
- [bi-intra/charts/grafana/README.md]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
章节来源
核心组件
- 应用启动与配置
- Kratos应用通过Nacos配置源加载Bootstrap配置,初始化日志、雪花ID、服务注册与业务wireApp。
- bi-basic同样采用Nacos配置源与统一日志初始化。
- 服务注册与发现
- Nacos客户端封装配置中心与服务发现能力;服务注册/注销与健康实例发现均基于SDK。
- 消息队列
- Kafka消费者支持健康检查、优雅关闭、单分区/消费者组模式、批量与超时配置。
- 数据访问
- GORM配置含连接池、慢查询阈值、TLS与DSN拼装,支持StarRocks优化。
- 观测性
- Grafana通过ARMS Prometheus采集指标,支持ACK集群内置与自定义ServiceMonitor。
- 查询分析
- Python MCP服务可收集StarRocks查询dump、profile与分析文本,辅助定位慢查询。
章节来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/registry/nacos/client.go]
- [bi-common/mq/kafkax/consumer.go]
- [bi-common/database/gormx/config.go]
- [bi-intra/charts/grafana/README.md]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
架构总览
下图展示启动阶段的关键交互:应用解析Nacos配置、初始化日志与注册、构建业务服务并启动。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-analysis/configs/application-dev.yaml]
- [bi-common/observability/logger/logger.go]
- [bi-common/registry/nacos/client.go]
章节来源
详细组件分析
启动与配置组件
- 配置加载
- 通过Nacos配置源加载application-*.yaml,扫描为Bootstrap结构,随后初始化日志与雪花ID。
- 日志初始化
- 支持stdout/file/both输出、JSON/text格式、级别过滤、阿里云日志桥接与清理。
- 服务注册
- 将Nacos注册器注入Kratos,实现服务注册与注销、健康实例发现与订阅。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/observability/logger/logger.go]
- [bi-common/registry/nacos/client.go]
章节来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/observability/logger/logger.go]
- [bi-common/registry/nacos/client.go]
服务发现与注册
- 注册/注销
- 解析Endpoint,提取主机与端口,按serviceName.scheme注册/注销。
- 发现
- 健康实例与全部实例发现,支持订阅回调。
- 负载均衡
- 选择一个健康实例作为目标。
图表来源
章节来源
Kafka消费者
- 健康检查
- 通过Ping校验Broker连通性与可用Broker列表。
- 运行模式
- 支持单分区与消费者组模式;优雅关闭监听系统信号并等待处理完成。
- 统计与延迟
- 提供Lag、Stats等指标辅助定位积压。
图表来源
章节来源
数据库与慢查询定位
- DSN与TLS
- 支持MySQL/StarRocks,自动拼装DSN,StarRocks优化建议与TLS参数。
- 慢查询阈值
- GORM日志级别与慢查询阈值可配置,便于识别慢SQL。
- Python查询分析
- 通过MCP服务收集query dump、profile与分析文本,辅助定位执行计划问题。
图表来源
章节来源
依赖关系分析
- 配置与日志
- 应用通过Nacos配置源加载Bootstrap,再初始化日志与雪花ID。
- 服务治理
- Nacos提供配置中心与服务发现,消费者与注册器均依赖其SDK。
- 数据与消息
- 数据访问依赖GORM配置;消息消费依赖Kafka消费者封装。
- 可观测性
- Grafana通过ARMS Prometheus采集指标,支持ACK内置与自定义ServiceMonitor。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-analysis/configs/application-dev.yaml]
- [bi-common/observability/logger/logger.go]
- [bi-common/registry/nacos/client.go]
- [bi-common/mq/kafkax/config.go]
- [bi-common/mq/kafkax/consumer.go]
- [bi-common/database/gormx/config.go]
- [bi-intra/charts/grafana/README.md]
章节来源
性能考量
- 指标采集
- Grafana通过ARMS Prometheus采集节点、容器与业务指标,支持自定义ServiceMonitor。
- 数据库
- GORM慢查询阈值与日志级别可调;StarRocks连接池优化建议启用。
- 消息队列
- 消费者组模式提升扩展性;合理设置批大小、超时与隔离级别。
- Python查询分析
- 使用MCP服务收集profile与analyze结果,定位热点SQL与执行瓶颈。
章节来源
- [bi-intra/charts/grafana/README.md]
- [bi-common/database/gormx/config.go]
- [bi-common/mq/kafkax/config.go]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
故障排除指南
启动失败排查
- 依赖服务不可用
- Nacos配置中心不可达:检查Nacos地址、端口、命名空间与DataId;确认网络连通与鉴权。
- Kafka不可达:使用消费者Ping检查Broker连通性。
- StarRocks不可达:检查DSN、TLS与网络策略。
- 配置错误
- application-*.yaml缺失或字段不合法:核对nacos.server、client.group、config.data_ids。
- 日志配置非法:检查日志级别、输出方式与文件路径。
- 端口冲突
- 通过端口转发脚本进行连通性验证,避免端口占用导致启动失败。
章节来源
- [bi-analysis/configs/application-dev.yaml]
- [bi-common/registry/nacos/client.go]
- [bi-common/mq/kafkax/consumer.go]
- [bi-common/database/gormx/config.go]
- [scripts/port-forward.sh]
性能问题定位
- 慢查询
- 开启GORM慢查询日志,结合阈值定位热点SQL;必要时启用StarRocks优化参数。
- 使用MCP服务收集query dump与profile,分析执行计划。
- 内存/CPU过载
- 通过Grafana查看Pod/节点指标,结合业务指标判断是否为热点接口或批处理峰值。
- 调整Kafka消费者批大小、超时与并发,缓解瞬时压力。
- 连接池问题
- 检查数据库连接池参数(最大打开/空闲连接、生命周期),避免连接泄漏或抖动。
章节来源
- [bi-common/database/gormx/config.go]
- [bi-common/database/gormx/config.go]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- [bi-intra/charts/grafana/README.md]
- [bi-common/mq/kafkax/config.go]
网络连接问题
- 服务发现失败
- 使用DiscoverService/SelectOneHealthyInstance确认健康实例是否存在;检查Group与Cluster配置。
- 负载均衡异常
- 核对消费者组模式与分区分配;关注重平衡与心跳间隔。
- 防火墙/网络策略
- 使用Ping与端口转发脚本验证连通性;检查入站/出站策略与安全组。
章节来源
日志分析与错误解读
- 日志配置
- 使用本地与阿里云日志桥接,确保错误与关键路径均有落盘与上报。
- 敏感信息保护
- 避免直接记录敏感字段;必要时仅输出摘要或预览。
- 错误上下文
- 记录请求上下文(endpoint、method、status、用户ID等),便于复现与追踪。
章节来源
- [bi-common/observability/logger/logger.go]
- [_bmad/bmm/testarch/knowledge/log.md]
- [_bmad/bmm/testarch/knowledge/error-handling.md]
各服务模块特定故障模式与解决方案
- Nacos配置中心
- 现象:无法拉取配置或注册失败。
- 排查:校验地址、端口、命名空间、DataId与鉴权;检查SDK日志。
- Kafka消费者
- 现象:无消息消费、积压严重。
- 排查:确认消费者组、分区分配、批大小与超时;使用Lag/Stats观察延迟。
- 数据库
- 现象:连接失败、慢查询增多。
- 排查:检查DSN/TLS、连接池参数与慢查询阈值;必要时启用StarRocks优化。
- Grafana/指标
- 现象:面板无数据或延迟高。
- 排查:确认ServiceMonitor配置、Job标签与采集周期。
章节来源
- [bi-common/registry/nacos/client.go]
- [bi-common/mq/kafkax/consumer.go]
- [bi-common/database/gormx/config.go]
- [bi-intra/charts/grafana/README.md]
应急响应流程与紧急修复
- 快速止损
- 降级非关键链路、临时关闭热点接口、限流与熔断。
- 修复步骤
- 依据日志与指标定位根因;回滚最近变更;修复配置或代码;验证后恢复。
- 回归验证
- 通过端到端测试与关键指标回归,确保问题彻底解决。
[本节为通用流程说明,不直接分析具体文件]
常用诊断命令与工具
- 端口连通性
- 使用端口转发脚本进行连通性验证。
- Nacos
- 检查配置发布/删除/监听状态;确认命名空间与DataId。
- Kafka
- 消费者Ping、Stats/Lag查看、单分区/消费者组模式切换。
- 数据库
- 检查DSN/TLS参数与连接池;开启慢查询日志。
- Grafana
- 校验ServiceMonitor与Job标签,确认采集与存储。
章节来源
- [scripts/port-forward.sh]
- [bi-common/registry/nacos/client.go]
- [bi-common/mq/kafkax/consumer.go]
- [bi-common/database/gormx/config.go]
- [bi-intra/charts/grafana/README.md]
结论
本指南提供了从启动、网络、性能到日志与应急响应的完整排障路径。建议在日常运维中结合Grafana指标、Kafka消费者Stats与GORM慢查询日志,形成“配置—注册—消息—数据—观测”的闭环,快速定位并解决问题。
附录
- 关键文件索引
- 启动入口与配置:[bi-analysis/cmd/bi-analysis/main.go]
- Nacos配置样例:[bi-analysis/configs/application-dev.yaml]
- 日志初始化:[bi-common/observability/logger/logger.go]
- 服务发现与注册:[bi-common/registry/nacos/discovery.go], [bi-common/registry/nacos/registry.go]
- Kafka消费者:[bi-common/mq/kafkax/consumer.go]
- 数据库配置:[bi-common/database/gormx/config.go]
- 指标采集:[bi-intra/charts/grafana/README.md]
- 查询分析:[mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- 端口转发:[scripts/port-forward.sh]
- 日志与错误处理最佳实践:[_bmad/bmm/testarch/knowledge/log.md], [_bmad/bmm/testarch/knowledge/error-handling.md]