K8s AIOps 算法落地优先选3σ、Prophet、孤立森林、DBSCAN、XGBoost,覆盖 80% 场景
我直接给你最精简、能立刻落地的版本:
5 个算法 = 覆盖 K8s AIOps 80% 场景
每个算法只给:作用 + 用在哪 + 最简代码,你照着用就行。
1. 3σ 原则(动态阈值)
定位:最简单、最稳、最先落地
- 做什么:指标突增、突降、异常波动
- K8s 场景:CPU/内存/磁盘/网络 异常
- 优势:不用训练、秒上线
import numpy as np
def detect_3sigma(data):
mu = np.mean(data)
sigma = np.std(data)
upper = mu + 3*sigma
lower = mu - 3*sigma
return [x for x in data if x > upper or x < lower], upper, lower
2. Prophet(时序预测)
定位:资源预测、容量规划
- 做什么:预测未来 CPU/内存/Pod 负载
- K8s 场景:防 OOM、防拥堵、自动扩缩容依据
- 优势:自带节假日、周期,适配 K8s 流量规律
from prophet import Prophet
model = Prophet()
model.fit(df) # ds, y 时间序列
future = model.make_future_dataframe(periods=24, freq='h')
forecast = model.predict(future)
3. 孤立森林(Isolation Forest)
定位:多维度指标异常检测
- 做什么:K8s 节点 / Pod 综合异常
- 场景:CPU+内存+磁盘+网络 一起判断
- 优势:高维数据强、无监督、不用标异常
from pyod.models.iforest import IForest
clf = IForest(contamination=0.05)
clf.fit(X) # X=[[cpu, mem, disk, net], ...]
anomaly_score = clf.decision_scores_
label = clf.labels_ # 0正常 1异常
4. DBSCAN(告警聚类)
定位:雪崩告警去重、找根告警
- 做什么:把一堆相似告警聚成一类
- K8s 场景:Node 挂 → 一堆 Pod 告警 → 聚成 1 个根因
- 优势:不用指定簇数量,适合告警文本聚类
from sklearn.cluster import DBSCAN
db = DBSCAN(eps=0.5, min_samples=2, metric='cosine')
clusters = db.fit_predict(alert_vectors)
5. XGBoost(根因排序 Top5)
定位:根因分析核心
- 做什么:看哪些特征最“导致故障”
- K8s 场景:Pod 重启 → 输出 OOM/节点故障/磁盘满 权重
- 优势:可解释、工业级稳定
import xgboost as xgb
model = xgb.XGBClassifier()
model.fit(X, y)
importance = model.feature_importances_ # 根因得分
这 5 个组合 = 完整 K8s AIOps 能力
- 3σ → 指标异常
- Prophet → 预测未来负载
- 孤立森林 → 多维综合异常
- DBSCAN → 告警聚类降噪
- XGBoost → 根因 TopN
真正覆盖:80% K8s 故障场景
- Pod 重启
- Node NotReady
- 资源打爆
- 网络抖动
- 磁盘满
- 告警风暴
- 根因定位
浙公网安备 33010602011771号