监控告警
**本文引用的文件** - [[tracer.go]](../file/bi-common/observability/logger/tracing/tracer.go) - [[tracer_test.go]](../file/bi-common/observability/logger/tracing/tracer-test.go) - [[ALIYUN_SLS.md]](../file/bi-common/observability/logger/aliyun-sls.md) - [[k8s-cluster.json]](../file/bi-intra/charts/grafana/dashboards/k8s-cluster.json) - [[apisix-prometheus-global-rule.json]](../file/bi-intra/apisix/apisix-prometheus-global-rule.json) - [[dingtalk_adapter.go]](../file/bi-notify/internal/biz/dingtalk-adapter.go) - [[notification.go]](../file/bi-notify/internal/biz/notification.go) - [[health.py]](../file/bi-chat/bi-chat/src/routes/health.py) - [[connection_health_checker.py]](../file/mcp-server-starrocks/src/mcp-server-starrocks/connection-health-checker.py) - [[metric_http.pb.go]](../file/bi-server/api/metric/v1/metric-http.pb.go) - [[metric_grpc.pb.go]](../file/bi-proto/metric/v1/metric-grpc.pb.go)
目录
简介
本文件面向BI分析平台的运维与开发团队,系统性梳理监控告警体系的配置与落地方案,覆盖应用监控(Prometheus指标采集)、可视化(Grafana仪表板)、日志采集与分析(阿里云SLS)、分布式追踪(OpenTelemetry)、关键性能指标(KPI)定义与策略、服务健康检查与依赖监控、容量规划、告警通知渠道(邮件、钉钉、飞书)、以及监控数据的长期存储与归档策略,并提供仪表板定制与阈值调优的实操指南。
项目结构
围绕监控告警的关键目录与文件如下:
- 分布式追踪与日志:bi-common/observability/logger 下的 OpenTelemetry 追踪初始化与阿里云SLS集成文档
- 仪表板与采集:bi-intra/charts/grafana/dashboards 提供K8s集群仪表板;apisix-prometheus-global-rule.json启用网关Prometheus插件
- 通知渠道:bi-notify 内部biz层提供钉钉、飞书适配器与统一通知接口
- 健康检查:bi-chat 的健康检查接口;mcp-server-starrocks 的数据库连接健康检查
- 指标服务:bi-server 提供指标HTTP端点;bi-proto 定义指标gRPC接口
图表来源
- [apisix-prometheus-global-rule.json]
- [k8s-cluster.json]
- [tracer.go]
- [ALIYUN_SLS.md]
- [dingtalk_adapter.go]
- [metric_http.pb.go]
- [health.py]
- [connection_health_checker.py]
章节来源
核心组件
- 分布式追踪(OpenTelemetry)
- 初始化TracerProvider,设置服务资源信息与AlwaysSample采样策略,便于日志与链路关联
- 支持单元测试验证初始化、全局Provider可用性与优雅关闭
- 日志采集与分析(阿里云SLS)
- 提供完整的SLS控制台配置、应用侧配置、环境变量注入、测试验证、查询与告警SQL、成本优化与故障排查
- 仪表板与指标采集(Prometheus + Grafana)
- 提供K8s集群仪表板模板,展示节点资源、CPU/内存使用率、Pod数量、网络带宽等
- Apisix网关开启Prometheus插件,统一采集网关指标
- 告警通知渠道(钉钉、飞书)
- 通知服务统一入口,适配器支持消息类型判定与渠道标识
- 健康检查与依赖监控
- 业务服务健康检查接口
- StarRocks连接健康检查线程与检查方法
- 指标服务
- HTTP与gRPC双栈指标服务端点,支持指标列表、创建、更新、删除
章节来源
- [tracer.go]
- [tracer_test.go]
- [ALIYUN_SLS.md]
- [k8s-cluster.json]
- [apisix-prometheus-global-rule.json]
- [dingtalk_adapter.go]
- [notification.go]
- [health.py]
- [connection_health_checker.py]
- [metric_http.pb.go]
- [metric_grpc.pb.go]
架构总览
下图展示监控告警系统在平台中的位置与交互关系:服务通过Prometheus暴露指标,Grafana消费指标并渲染仪表板;OpenTelemetry负责链路追踪,日志通过SLS集中存储与查询;告警规则由SLS或Prometheus/Alermanager触发,通知通道对接钉钉/飞书等。
图表来源
- [apisix-prometheus-global-rule.json]
- [k8s-cluster.json]
- [tracer.go]
- [ALIYUN_SLS.md]
- [dingtalk_adapter.go]
组件详解
分布式追踪(OpenTelemetry)
- 初始化流程
- 创建资源(服务名、版本、环境、实例ID)
- 构建TracerProvider并设置为全局Provider
- AlwaysSample采样策略,便于日志与链路关联
- 提供优雅关闭函数
- 测试要点
- 验证初始化无错误、全局Provider存在、Span上下文有效、多次关闭不panic
图表来源
章节来源
日志采集与分析(阿里云SLS)
- 控制台配置
- Project、Logstore、AccessKey、授权策略
- 应用配置
- 代码与配置文件两种方式,支持本地文件与SLS双输出
- 环境变量注入(systemd/Kubernetes Secret)
- 测试验证
- 启动日志、请求测试、上传状态观测
- 查询与告警
- 错误率、慢请求、日志量异常等SQL与阈值建议
- 最佳实践
- 生命周期管理、索引优化、日志采样、敏感信息脱敏、链路聚合、关键指标关注
图表来源
章节来源
仪表板与指标采集(Prometheus + Grafana)
- Prometheus采集
- Apisix网关启用Prometheus插件,统一采集网关指标
- Grafana仪表板
- K8s集群仪表板模板,包含节点资源、CPU/内存使用率、Pod数量、网络带宽等
- 支持百分比阈值与单位映射,便于直观监控
图表来源
章节来源
告警通知渠道(钉钉、飞书)
- 通知服务接口
- 统一事件分发入口,支持多平台配置与路由规则
- 钉钉适配器
- 渠道标识“dingtalk”,支持所有消息类型
- 飞书适配器
- 通过测试用例可见用户ID获取与平台配置加载
图表来源
章节来源
健康检查与依赖监控
- 业务服务健康检查
- 路由返回整体状态与子服务状态(如PostgreSQL、Milvus)
- StarRocks连接健康检查
- 初始化、启动、停止与检查方法,支持线程化后台检查
图表来源
章节来源
指标服务(指标HTTP与gRPC)
- HTTP端点
- GET/POST/PUT/DELETE /api/v1/metrics,支持列表、创建、更新、删除
- gRPC接口
- ListMetrics/CreateMetric/UpdateMetric/DeleteMetric,注册与拦截器处理
图表来源
章节来源
依赖关系分析
- 追踪与日志
- Tracing模块为全局Provider提供基础,SLS作为日志后端,二者共同支撑链路与日志关联
- 采集与展示
- Apisix网关Prometheus插件与业务服务指标端点汇聚至Prometheus,Grafana消费并渲染
- 通知与告警
- SLS与Prometheus/Alermanager均可触发告警,通知通道对接钉钉/飞书
图表来源
- [tracer.go]
- [ALIYUN_SLS.md]
- [apisix-prometheus-global-rule.json]
- [k8s-cluster.json]
- [dingtalk_adapter.go]
章节来源
- [tracer.go]
- [ALIYUN_SLS.md]
- [apisix-prometheus-global-rule.json]
- [k8s-cluster.json]
- [dingtalk_adapter.go]
性能考量
- 指标采集
- 采用AlwaysSample采样策略,保证链路ID生成,避免高采样导致日志与链路不一致
- Apisix网关Prometheus插件统一采集,减少重复埋点
- 日志处理
- SLS批处理与上传状态监控,结合采样与索引优化降低成本
- 热/温/归档生命周期管理,平衡查询频率与存储成本
- 可视化
- Grafana仪表板使用百分比阈值与单位映射,提升可读性与告警直观性
章节来源
故障排查指南
- SLS日志未上传
- 检查环境变量、本地日志错误、网络连通性、RAM权限与Project/Logstore名称
- 上传状态日志可辅助定位批次创建、成功/失败与重试次数
- 健康检查异常
- Postgres/Milvus连接失败或不可用,需检查依赖服务状态与网络
- StarRocks连接健康检查线程未初始化即调用会抛出运行时错误
- 通知渠道问题
- 钉钉/飞书配置缺失或无效,需核对平台配置与回调配置
章节来源
结论
本监控告警体系以OpenTelemetry链路追踪与阿里云SLS日志为核心,配合Prometheus与Grafana实现全栈可观测性;通过统一的通知服务对接钉钉/飞书,形成闭环的告警与处置流程。建议在生产环境中持续优化采样与索引策略、完善健康检查与依赖监控,并基于仪表板与阈值进行容量规划与成本控制。
附录
- 关键KPI建议
- QPS、错误率、P95/P99延迟、慢请求比例、日志量、上传成功率
- 阈值调优建议
- 从SLS告警SQL出发,结合业务SLA设定阈值;逐步收敛至稳定区间
- 仪表板定制
- 基于K8s集群仪表板模板扩展,增加业务服务维度与告警面板联动
章节来源