本文针对企业传统运维告警泛滥、故障定位慢、人工运维成本高等痛点,梳理AIOps完整技术栈选型标准,搭建指标采集、异常检测、根因分析、自动处置一体化运维平台,配套可运行代码示例,兼顾中小企业轻量化部署与大型集群私有化运维场景。
from fastapi import FastAPI
import numpy as np
from sklearn.ensemble import IsolationForest
import uvicorn
app = FastAPI(title="AIOps异常检测服务")
# 初始化异常检测模型
model = IsolationForest(n_estimators=100, contamination=0.03, random_state=42)
@app.post("/api/monitor/anomaly/detect")
def detect_anomaly(metric_data: list):
"""
输入时序指标数组,输出异常点位
"""
data = np.array(metric_data).reshape(-1, 1)
model.fit(data)
pred = model.predict(data)
anomaly_index = [i for i, val in enumerate(pred) if val == -1]
return {
"original_data": metric_data,
"anomaly_points": anomaly_index,
"anomaly_count": len(anomaly_index)
}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8080)import requests
import redis
# 连接Redis缓存重复告警
r = redis.Redis(host="127.0.0.1", port=6379, db=0)
DING_WEBHOOK = "https://oapi.dingtalk.com/robot/send?access_token=xxx"
def send_alarm(alarm_title, alarm_content):
key = f"alarm:{alarm_title}"
# 5分钟内相同告警仅推送一次
if r.exists(key):
return "告警已收敛,无需重复推送"
r.setex(key, 300, "1")
payload = {
"msgtype": "text",
"text": {"content": f"【AIOps告警】{alarm_title}\n详情:{alarm_content}"}
}
requests.post(DING_WEBHOOK, json=payload)
return "告警推送成功"海量精选技术文档和实战案例持续更新,敬请关注【风骏时光少年】公众号
https://edu.51cto.com/surl=dcqQj1