AIOps2.0全链路自愈运维系统搭建

动手前先备好这些组件

搭建AIOps2.0全链路自愈运维系统的前提是一套能采集指标、设定告警并自动执行修复命令的工具链。
以下是你需要准备的环境:

  • 一台 Linux 服务器(CentOS 7+ 或 Ubuntu 20.04+,建议 2 核 4G 以上)
  • Docker 和 Docker Compose(用于快速拉起 Prometheus 和 Alertmanager)
  • 基本的 Shell / Python 编程能力(只需能写简单脚本)
  • 目标业务服务的访问权限(比如需要重启 Nginx、清理日志等)

如果还没有 Docker,执行以下命令安装:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker

让Prometheus学会“报警”的关键配置

Prometheus 负责采集服务器指标,Alertmanager 负责处理告警并触发自愈。
先用 Docker 启动它们:

mkdir -p /opt/prometheus /opt/alertmanager
cd /opt/prometheus

创建 prometheus.yml:

global:
  scrape_interval: 15s
rule_files:
  - "rules/*.yml"
alerting:
  alertmanagers:
    - static_configs:
        - targets: ['alertmanager:9093']
scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

创建 rules/node_alerts.yml:

groups:
  - name: node_alerts
    rules:
      - alert: HighCpuUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "CPU 使用率超过 80%"

然后启动容器(使用 docker-compose.yml):

version: '3'
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./rules:/etc/prometheus/rules
    ports:
      - "9090:9090"
  alertmanager:
    image: prom/alertmanager
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
    ports:
      - "9093:9093"

Alertmanager 的配置文件 alertmanager.yml 需要指定自愈的 webhook 地址:

route:
  receiver: 'webhook'
receivers:
  - name: 'webhook'
    webhook_configs:
      - url: 'http://localhost:5000/selfheal'

执行 docker-compose up -d 启动所有服务。

自愈脚本——让服务器自己修自己

用 Python 写一个简单的 webhook 服务,接收告警并执行修复命令。
创建 /opt/selfheal/app.py:

from flask import Flask, request, jsonify
import subprocess
import json

app = Flask(__name__)

@app.route('/selfheal', methods=['POST'])
def selfheal():
    data = request.json
    alerts = data.get('alerts', [])
    for alert in alerts:
        alert_name = alert['labels']['alertname']
        if alert_name == 'HighCpuUsage':
            # 示例:重启高消耗进程(实际需要根据业务调整)
            subprocess.run(['systemctl', 'restart', 'nginx'])
            return jsonify({'status': 'fix executed'})
    return jsonify({'status': 'no action'})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

安装依赖并运行:

pip install flask
python app.py &

可以用 curl 测试 webhook 是否正常:

curl -X POST http://localhost:5000/selfheal -H "Content-Type: application/json" -d '{"alerts":[{"labels":{"alertname":"HighCpuUsage"}}]}'

新手最容易踩的四个坑

  1. 告警规则表达式写错:先用 Prometheus 的表达式浏览器(http://服务器IP:9090/graph)验证指标是否存在、值是否合理。
  2. webhook 地址写错:Alertmanager 容器内部无法通过 localhost 访问宿主机的 Python 服务,需要将 url 改为宿主机的实际 IP(如 http://192.168.1.100:5000/selfheal)。
  3. 脚本权限不足:如果自愈脚本需要 systemctl restart 等特权命令,务必用 sudo 或在 Python 中配置免密码 sudo。
  4. 告警重复触发:使用 for: 2m 避免短时波动触发多次修复,同时在脚本中增加去重逻辑。

亲手触发一次故障,看系统如何自愈

在服务器上模拟 CPU 高负载:

dd if=/dev/zero of=/dev/null &

等待 2 分钟后,Prometheus 告警规则触发,Alertmanager 将告警推送到你的 webhook 服务,脚本自动执行重启 Nginx 或清理进程。
通过 journalctl -u nginx 查看是否被重启过。

验证成功后,用 killall dd 停止压力。
至此,AIOps2.0全链路自愈运维系统的基础搭建就完成了。
后续你可以根据业务需要扩展更多指标和修复规则。

分享到:
上一篇
AI Agent自动处理服务器故障根因分析
下一篇
Prometheus+Grafana监控大屏查看中转流量
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意