Files
Roog (顾新培) 7b627090f3 main:优化任务管理及队列监控性能
变更内容:
- 优化任务出队逻辑,采用 BLMOVE 提升队列操作的原子性和可靠性。
- 在 JobManager 中新增任务锁续租、超时任务回收、ACK/NACK 状态管理功能。
- 实现任务队列和死信队列监控指标收集,为系统性能分析提供数据支持。
- 扩展 Worker 模块,增加锁续租逻辑及任务回收调度。
- 更新测试用例,覆盖任务管理和队列指标的新增逻辑。
- 补充 metrics.yaml 文件,添加队列相关的监控指标定义。
- 更新依赖,补充 Redis 支持及相关库版本规范。
2026-02-03 18:18:02 +08:00
..

Monitoring 目录说明

本目录包含所有监控和日志收集相关的配置文件。

目录结构

monitoring/
├── alerts/                          # Prometheus 告警规则
│   └── rules.yaml                   # 告警规则配置
├── grafana/                         # Grafana 配置
│   ├── datasources/                 # 数据源自动配置
│   │   ├── prometheus.yaml          # Prometheus 数据源
│   │   └── loki.yaml                # Loki 数据源
│   └── dashboards/                  # 仪表板自动加载
│       ├── provider.yaml            # Dashboard provider 配置
│       ├── dashboard.json           # 指标监控仪表板
│       └── logs-dashboard.json      # 日志监控仪表板
├── loki.yaml                        # Loki 日志存储配置
├── promtail.yaml                    # Promtail 日志采集配置
└── prometheus.yml                   # Prometheus 指标收集配置

配置文件说明

Prometheus 配置

文件: prometheus.yml

Prometheus 指标收集配置,包括:

  • 抓取间隔: 5 秒
  • 目标: app 服务的 /metrics 端点
  • 告警规则: 从 alerts/ 目录加载

Loki 配置

文件: loki.yaml

Loki 日志存储配置,包括:

  • 存储方式: 本地文件系统
  • 日志保留期: 7 天
  • 摄入速率限制: 10MB/s
  • 自动压缩和清理

关键配置:

limits_config:
  retention_period: 168h  # 7 天
  ingestion_rate_mb: 10   # 10MB/s

Promtail 配置

文件: promtail.yaml

Promtail 日志采集配置,支持两种模式:

模式 1: Docker stdio 收集(默认)

  • 通过 Docker API 自动发现容器
  • 过滤带有 logging=promtail 标签的容器
  • 自动解析 JSON 日志

模式 2: 文件收集(备用)

  • /var/log/app/*.log 读取日志文件
  • 支持日志轮转
  • 需要设置 LOG_FILE_ENABLED=true

Grafana Provisioning

数据源 (grafana/datasources/)

自动配置 Grafana 数据源:

  • prometheus.yaml: Prometheus 数据源(默认)
  • loki.yaml: Loki 数据源

仪表板 (grafana/dashboards/)

自动加载 Grafana 仪表板:

  • provider.yaml: Dashboard provider 配置
  • dashboard.json: 指标监控仪表板HTTP 请求、算法执行等)
  • logs-dashboard.json: 日志监控仪表板(日志流、错误日志等)

告警规则

文件: alerts/rules.yaml

Prometheus 告警规则,包括:

  • 高错误率告警
  • 高延迟告警
  • 服务不可用告警

修改配置

调整日志保留期

编辑 loki.yaml:

limits_config:
  retention_period: 72h  # 改为 3 天

重启 Loki:

cd deployment
docker-compose restart loki

调整指标抓取间隔

编辑 prometheus.yml:

global:
  scrape_interval: 10s  # 改为 10 秒

重启 Prometheus:

cd deployment
docker-compose restart prometheus

添加新的告警规则

编辑 alerts/rules.yaml,添加新规则:

groups:
  - name: my_alerts
    rules:
      - alert: MyAlert
        expr: my_metric > 100
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "我的告警"

重启 Prometheus:

cd deployment
docker-compose restart prometheus

添加新的仪表板

  1. 在 Grafana UI 中创建仪表板
  2. 导出为 JSON
  3. 保存到 grafana/dashboards/my-dashboard.json
  4. 重启 Grafana或等待自动重载
cd deployment
docker-compose restart grafana

验证配置

检查 Prometheus 配置

# 访问 Prometheus UI
open http://localhost:9090

# 检查目标状态
open http://localhost:9090/targets

# 检查告警规则
open http://localhost:9090/alerts

检查 Loki 配置

# 检查 Loki 健康状态
curl http://localhost:3100/ready

# 查询标签
curl -s "http://localhost:3100/loki/api/v1/label/job/values" | jq

检查 Grafana 配置

# 访问 Grafana UI
open http://localhost:3000

# 检查数据源
curl -s -u admin:admin http://localhost:3000/api/datasources | jq

# 检查仪表板
curl -s -u admin:admin http://localhost:3000/api/search | jq

故障排查

Prometheus 无法抓取指标

  1. 检查 app 服务是否运行: docker-compose ps app
  2. 检查 metrics 端点: curl http://localhost:8111/metrics
  3. 查看 Prometheus 日志: docker-compose logs prometheus

Loki 无法接收日志

  1. 检查 Promtail 是否运行: docker-compose ps promtail
  2. 查看 Promtail 日志: docker-compose logs promtail
  3. 检查容器标签: docker inspect <container> | grep Labels

Grafana 数据源未加载

  1. 检查 provisioning 目录挂载: docker-compose config | grep grafana -A 10
  2. 查看 Grafana 日志: docker-compose logs grafana
  3. 手动重启 Grafana: docker-compose restart grafana

相关文档

性能建议

日志量控制

  • 调整日志级别为 WARNING 或 ERROR
  • 过滤掉不必要的日志(如健康检查)
  • 减少日志保留期

指标优化

  • 增加抓取间隔(如 15s 或 30s
  • 减少指标基数(避免高基数标签)
  • 定期清理旧数据

存储优化

  • 监控磁盘使用: docker-compose exec loki du -sh /loki
  • 定期备份重要数据
  • 考虑使用对象存储S3/OSS作为后端

总结

本目录包含完整的监控和日志收集配置:

Prometheus - 指标收集和告警 Loki - 日志存储和查询 Promtail - 日志采集 Grafana - 可视化和仪表板

所有配置都支持自动加载,无需手动配置。