fischerX/infra/monitoring
fischer af4de6b86a feat: FischerX开发底座初始化提交
- 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+文档
2026-05-25 09:50:16 +08:00
..
alertmanager feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
grafana feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
loki feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
prometheus feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
promtail feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
README.md feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00
docker-compose.yml feat: FischerX开发底座初始化提交 2026-05-25 09:50:16 +08:00

README.md

FischerX 监控告警系统

完整的可观测性解决方案,包括指标监控、日志聚合和链路追踪。

架构概览

  • Prometheus: 时序数据库和指标采集
  • Grafana: 可视化仪表板
  • AlertManager: 告警管理和通知
  • Loki: 日志聚合
  • Promtail: 日志采集
  • Jaeger: 链路追踪
  • Node Exporter: 系统指标采集

快速开始

启动监控栈

cd infra/monitoring
docker-compose up -d

访问服务

配置说明

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.ts
  • apps/web/src/lib/web-vitals.ts
  • apps/web/src/components/error-boundary.tsx
  • apps/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

  1. 检查目标服务是否正常运行
  2. 检查网络连接Docker网络配置
  3. 查看Prometheus日志docker logs fischerx-prometheus

Grafana无法连接数据源

  1. 确认Prometheus/Loki/Jaeger容器正在运行
  2. 检查数据源配置中的URL是否正确
  3. 查看Grafana日志docker logs fischerx-grafana

没有收到告警

  1. 检查AlertManager配置
  2. 验证告警规则是否被Prometheus加载
  3. 检查抑制规则是否阻止了告警
  4. 查看AlertManager日志docker logs fischerx-alertmanager

生产环境建议

  1. 数据持久化: 配置外部卷挂载,防止数据丢失
  2. 高可用: 配置Prometheus联邦和AlertManager集群
  3. 告警路由: 根据严重程度路由到不同团队
  4. 安全: 配置认证和HTTPS
  5. 备份: 定期备份Grafana仪表板和Prometheus数据
  6. 监控监控系统: 配置监控基础设施自身的监控

扩展资源