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 查询结果变化并记录变更单号。