预测性 SRE 与自动化修复
预测性 SRE 与自动化修复
第一部分:预测性 SRE - “预见未来”
传统的运维模式是反应式 (Reactive) 的:当一个指标越过阈值时,系统告警,人去响应。而预测性 SRE 的核心思想是转向主动式 (Proactive):当我们的模型预测一个指标将在未来某个时间点越过阈值时,系统就提前告警。
一个经典的用例:磁盘空间预测
“磁盘空间已满”是导致服务中断的一个极其常见但又完全可以避免的原因。传统的告警是“当磁盘使用率超过 95% 时告警”,而预测性的告警则是“根据当前的使用趋势,预计磁盘将在 3 天后被写满,请立即处理”。这给了 SRE 充足的时间去从容地扩容或清理磁盘。
我们的工具:Prophet
Prophet 是由 Facebook(现 Meta)开源的一个专门用于时间序列预测的库。它对于具有明显周期性(如每日、每周)的业务指标数据效果尤其出色,而且使用起来非常友好。
实践:使用 Prophet 预测磁盘空间使用量
- 准备环境:
pip install prophet pandas prometheus-api-client matplotlib
- 编写预测脚本:
import pandas as pd from prometheus_api_client import PrometheusConnect from prophet import Prophet import matplotlib.pyplot as plt# --- 1. 获取历史数据 --- prom = PrometheusConnect(url='http://localhost:9090', disable_ssl=True) # 查询过去30天的磁盘可用空间(以字节为单位) query = 'node_filesystem_free_bytes{mountpoint="/",fstype!="rootfs"}' metric_data = prom.custom_query_range(query, 'now-30d', 'now', '1h')if not metric_data:print("No data found.")exit()# --- 2. 准备 Prophet 所需的数据格式 --- df