- Monorepo架构(pnpm + Turborepo) - 前端:Next.js + TypeScript + Tailwind CSS + Shadcn UI - 后端:NestJS + Prisma + PostgreSQL + Redis - 核心模块:用户管理、认证授权、权限控制、文件存储 - 业务模块:支付系统、消息通知、内容管理 - 基础设施:Docker、K8s、Terraform、CI/CD - 监控告警:Prometheus + Grafana + Loki + Jaeger - CLI工具:@fischerx/cli - 文档体系:9大类30+文档 |
||
|---|---|---|
| .. | ||
| alertmanager | ||
| grafana | ||
| loki | ||
| prometheus | ||
| promtail | ||
| README.md | ||
| docker-compose.yml | ||
README.md
FischerX 监控告警系统
完整的可观测性解决方案,包括指标监控、日志聚合和链路追踪。
架构概览
- Prometheus: 时序数据库和指标采集
- Grafana: 可视化仪表板
- AlertManager: 告警管理和通知
- Loki: 日志聚合
- Promtail: 日志采集
- Jaeger: 链路追踪
- Node Exporter: 系统指标采集
快速开始
启动监控栈
cd infra/monitoring
docker-compose up -d
访问服务
- Grafana: http://localhost:3001
- 默认账号: admin
- 默认密码: fischerx123
- Prometheus: http://localhost:9090
- AlertManager: http://localhost:9093
- Jaeger: http://localhost:16686
- Node Exporter: http://localhost:9100/metrics
配置说明
Prometheus
Prometheus配置文件位于 prometheus/prometheus.yml,包括:
- 采集目标配置
- 告警规则加载
- 外部标签配置
告警规则位于 prometheus/rules/ 目录:
system-alerts.yml: 系统级告警(CPU、内存、磁盘等)application-alerts.yml: 应用级告警(错误率、延迟等)
Grafana
- 数据源配置位于
grafana/provisioning/datasources/ - 仪表板配置位于
grafana/provisioning/dashboards/ - 预配置的仪表板位于
grafana/dashboards/
AlertManager
配置文件位于 alertmanager/alertmanager.yml,包括:
- 告警路由配置
- 接收者配置(邮件、webhook)
- 抑制规则配置
Loki & Promtail
- Loki配置位于
loki/loki-config.yml - Promtail配置位于
promtail/promtail-config.yml
应用集成
后端 (NestJS)
后端已集成:
- Prometheus指标采集
- HTTP请求监控(延迟、错误率、QPS)
- OpenTelemetry链路追踪
相关文件:
services/api/src/modules/monitoring/services/api/src/tracing.ts
环境变量:
# 链路追踪端点
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
# 启用/禁用tracing
OTEL_ENABLED=true
前端 (Next.js)
前端已集成:
- Web Vitals性能指标
- 错误边界和全局错误捕获
- OpenTelemetry浏览器追踪
相关文件:
apps/web/src/lib/telemetry.tsapps/web/src/lib/web-vitals.tsapps/web/src/components/error-boundary.tsxapps/web/src/providers/monitoring-provider.tsx
环境变量:
# 链路追踪端点
NEXT_PUBLIC_OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
告警规则
系统告警
| 告警名称 | 触发条件 | 严重程度 |
|---|---|---|
| HighCPUUsage | CPU使用>80%持续5分钟 | warning |
| HighMemoryUsage | 内存使用>85%持续5分钟 | warning |
| HighDiskUsage | 磁盘使用>90%持续5分钟 | critical |
| HostUnreachable | 主机不可达>1分钟 | critical |
应用告警
| 告警名称 | 触发条件 | 严重程度 |
|---|---|---|
| HighErrorRate | 错误率>5%持续2分钟 | warning |
| HighLatency | P95延迟>1秒持续3分钟 | warning |
| ApiHealthCheckFailed | API健康检查失败>1分钟 | critical |
| HighRequestRate | QPS>1000持续5分钟 | info |
仪表盘
系统概览
- CPU、内存、磁盘使用率
- 网络流量
- 系统负载
应用监控
- 请求速率 (QPS)
- 错误率
- P50/P95/P99延迟分布
- HTTP状态码分布
常见问题
Prometheus目标状态为Down
- 检查目标服务是否正常运行
- 检查网络连接(Docker网络配置)
- 查看Prometheus日志:
docker logs fischerx-prometheus
Grafana无法连接数据源
- 确认Prometheus/Loki/Jaeger容器正在运行
- 检查数据源配置中的URL是否正确
- 查看Grafana日志:
docker logs fischerx-grafana
没有收到告警
- 检查AlertManager配置
- 验证告警规则是否被Prometheus加载
- 检查抑制规则是否阻止了告警
- 查看AlertManager日志:
docker logs fischerx-alertmanager
生产环境建议
- 数据持久化: 配置外部卷挂载,防止数据丢失
- 高可用: 配置Prometheus联邦和AlertManager集群
- 告警路由: 根据严重程度路由到不同团队
- 安全: 配置认证和HTTPS
- 备份: 定期备份Grafana仪表板和Prometheus数据
- 监控监控系统: 配置监控基础设施自身的监控