17.11.5 监控数据留存、归档与审计

监控数据留存、归档与审计是保障合规性、可追溯性与成本可控的核心环节。本节给出分层留存、归档流程、审计与治理的可执行规范,并提供可操作的安装、配置、排错与练习示例。

留存策略与分层存储#

  • 明确生命周期:热数据(7~30天)、温数据(90~180天)、冷数据(1~3年)。
  • 热数据保留高分辨率采样(15s/30s),温/冷数据使用下采样或聚合指标。
  • Prometheus 本地留存 + 长期存储(Thanos/Mimir/Cortex),按业务重要性分级。
  • 核心SLA指标可单独设定更长保留周期与更高分辨率。
文章图片

归档流程与标准#

  • 归档规则:按日/周/月滚动,生成只读快照与索引。
  • 归档格式:TSDB块/Parquet,保留元数据(标签、采集规则、版本)。
  • 入库校验:块完整性、时间范围、标签一致性。
  • 归档介质:对象存储或低成本存储,配置生命周期策略。

示例:本地留存与对象存储归档#

1) Prometheus 本地留存配置(热数据 15 天)
文件:/etc/prometheus/prometheus.yml

global:
  scrape_interval: 15s
  evaluation_interval: 30s

storage:
  tsdb:
    retention_time: 15d

2) Thanos Sidecar 归档到 MinIO(温/冷数据)
文件:/etc/thanos/objstore.yml

type: S3
config:
  bucket: prometheus-archive
  endpoint: minio.monitoring.svc:9000
  access_key: minioadmin
  secret_key: minioadmin
  insecure: true

启动示例(systemd):

cat >/etc/systemd/system/thanos-sidecar.service <<'EOF'
[Unit]
Description=Thanos Sidecar
After=network.target

[Service]
ExecStart=/usr/local/bin/thanos sidecar \
  --tsdb.path=/var/lib/prometheus \
  --prometheus.url=http://127.0.0.1:9090 \
  --objstore.config-file=/etc/thanos/objstore.yml
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now thanos-sidecar
systemctl status thanos-sidecar --no-pager

预期效果:
- Prometheus 本地只保留 15 天
- 归档块上传到对象存储 prometheus-archive bucket

归档校验命令示例#

# 检查 TSDB 块完整性(Prometheus 内置工具)
promtool tsdb analyze /var/lib/prometheus

# 检查 Thanos 对象存储状态
thanos tools bucket inspect --objstore.config-file=/etc/thanos/objstore.yml

审计要求与追溯#

  • 审计范围:数据删除、留存策略变更、告警规则修改、查询权限变更。
  • 审计日志字段:操作者、时间、对象、变更内容、审批单号。
  • 支持审计检索:按时间、用户、指标、规则查询与导出。
  • 关键数据访问与删除必须双人复核或工单审批。

示例:Prometheus 配置变更审计#

# 1) 变更前校验
promtool check config /etc/prometheus/prometheus.yml

# 2) 变更记录(git版本化)
cd /etc/prometheus
git add prometheus.yml
git commit -m "retention_time: 15d -> 30d (change-REQ-20241001)"

# 3) 重载配置并记录审计
curl -X POST http://127.0.0.1:9090/-/reload
logger -t prometheus-audit "user=ops action=reload file=prometheus.yml ticket=REQ-20241001"

数据治理与合规控制#

  • 标签规范化:业务线、环境、敏感级别、保留策略标识。
  • 敏感指标脱敏:避免用户信息进入标签或指标值。
  • 定期清理无效指标与废弃标签,降低基数膨胀风险。
  • 定期合规评估(等保/审计要求)。

标签治理示例#

文件:/etc/prometheus/rules/label_sanitize.yml

groups:
- name: label_sanitize
  rules:
  - record: job:up:filtered
    expr: label_replace(up, "user", "masked", "user", ".*")

运维实施要点#

  • 制定留存矩阵表与变更流程,纳入配置管理。
  • 监控容量与归档延迟,设定阈值告警。
  • 归档与清理任务可追踪、可回滚。
  • 定期演练审计与恢复流程。

容量与归档延迟监控示例#

# /etc/prometheus/rules/storage_alerts.yml
groups:
- name: storage_alerts
  rules:
  - alert: TSDB_Disk_Usage_High
    expr: (node_filesystem_avail_bytes{mountpoint="/var/lib/prometheus"} /
           node_filesystem_size_bytes{mountpoint="/var/lib/prometheus"}) < 0.2
    for: 10m
    labels:
      severity: warning
    annotations:
      summary: "Prometheus TSDB disk usage high"

  - alert: Thanos_Sidecar_Upload_Stuck
    expr: increase(thanos_sidecar_uploads_failed_total[15m]) > 0
    for: 15m
    labels:
      severity: critical
    annotations:
      summary: "Thanos sidecar upload failures detected"

安装与排错要点#

安装要点(最小化)#

# Prometheus 二进制安装示例
useradd -r -s /sbin/nologin prometheus
tar -xzf prometheus-2.47.0.linux-amd64.tar.gz
cp prometheus-2.47.0.linux-amd64/prometheus /usr/local/bin/
mkdir -p /etc/prometheus /var/lib/prometheus
chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

常见排错#

# 1) 归档上传失败:检查对象存储连通性
curl -s http://minio.monitoring.svc:9000/minio/health/live

# 2) TSDB 块损坏:定位坏块
promtool tsdb analyze /var/lib/prometheus | grep -i "corrupt"

# 3) Thanos 读取不到历史数据
# 检查 store/compactor 组件日志
journalctl -u thanos-store -n 200 --no-pager
journalctl -u thanos-compactor -n 200 --no-pager

练习#

1) 将本地留存从 15d 调整为 30d,并提交审计记录。
2) 部署 Thanos Sidecar 归档到 MinIO,并验证对象存储中新增 TSDB 块。
3) 人为制造上传失败(关闭 MinIO),观察告警触发并恢复。
4) 清理一个废弃标签,验证 PromQL 查询结果变化并记录变更单号。