大模型AIOps实战:用开源模型搭建日志异常检测流水线

大模型AIOps实战的核心不是把模型接进监控就完事,而是让模型稳定地读日志、给出可核验的判断,并把结果送到值班人员能看到的地方。
下面这套流程适合已经有一台 Linux 服务器、希望用本地开源模型做日志异常初筛的运维新手,不依赖云厂商付费接口。

先明确适用条件与准备清单

这套方案适合日志量中等(每天几十 MB 到几百 MB)、已有基础监控但缺少语义级告警的场景。
如果日志量特别大,建议先做采样再送模型,否则推理成本会明显上升。

准备条件:

  • 一台 4 核 8G 以上 Linux 服务器,磁盘预留 20G 以上给模型文件
  • 已安装 Docker,用于运行本地模型服务
  • Python 3.9 以上,用于写采集和调用脚本
  • 一个能接收告警的渠道,例如企业微信机器人或邮件

部署本地模型服务

这里用 Ollama 作为模型运行环境,它把模型下载和接口暴露做了封装,适合快速验证。
在服务器上执行:

curl -fsSL https://ollama.com/install.sh | sh
systemctl enable --now ollama
ollama pull qwen2.5:7b

拉取完成后验证接口是否正常:

curl http://127.0.0.1:11434/api/tags

返回 JSON 中能看到模型名称,说明服务已就绪。
如果拉取很慢,可以先换用更小的模型做流程验证,确认链路通了再换大模型。

编写日志采集与模型调用脚本

核心思路是:定时读取新增日志,截取最近一段窗口,拼成提示词发给模型,让模型只回答是否存在异常及原因。
新建脚本 /opt/aiops/check_log.py:

import json, subprocess, urllib.request

LOG_FILE = "/var/log/nginx/error.log"
PROMPT_TPL = "你是运维助手,只判断下面日志是否存在异常,异常则输出异常级别和一句话原因,正常则只输出 NORMAL:\n{log}"

def tail_log(path, lines=80):
    return subprocess.check_output(["tail", "-n", str(lines), path], text=True)

def ask_model(text):
    payload = json.dumps({
        "model": "qwen2.5:7b",
        "prompt": PROMPT_TPL.format(log=text),
        "stream": False
    }).encode()
    req = urllib.request.Request(
        "http://127.0.0.1:11434/api/generate",
        data=payload,
        headers={"Content-Type": "application/json"}
    )
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.loads(resp.read())["response"].strip()

if __name__ == "__main__":
    log_text = tail_log(LOG_FILE)
    result = ask_model(log_text)
    print(result)

先手动运行一次:

python3 /opt/aiops/check_log.py

预期结果是模型返回 NORMAL 或一段异常描述。
如果返回空内容或超时,先检查模型服务是否在运行、日志路径是否存在。

接入定时任务与告警

脚本能跑通后,用 cron 每 10 分钟执行一次,并把异常结果推送到告警渠道。
编辑 crontab:

crontab -e

加入一行:

*/10 * * * * /usr/bin/python3 /opt/aiops/check_log.py >> /var/log/aiops_check.log 2>&1

然后在脚本中判断结果,如果不等于 NORMAL 就调用 webhook。
推送部分建议单独封装函数,避免把密钥写死在主逻辑里。
验证方式:手动制造一条错误日志,观察 /var/log/aiops_check.log 是否出现异常描述,并确认告警渠道收到消息。

避坑与常见问题

  • 模型响应慢导致任务堆积:cron 不会等上一次执行完,可在脚本开头加文件锁,例如 flock -n /tmp/aiops.lock。
  • 日志截取窗口过大:一次送太多行会拖慢推理,建议先用 tail 控制行数,再逐步调整。
  • 模型输出不稳定:提示词里明确要求“只输出 NORMAL 或异常描述”,减少自由发挥。
  • 权限问题:cron 运行用户可能读不到日志文件,确保执行用户对日志路径有读权限。

效果验证与后续优化

验证分三步:先看脚本单次输出是否符合预期,再看 cron 日志是否按时产生记录,最后确认告警渠道能收到异常通知。
三步都通过,说明大模型AIOps实战的最小闭环已经跑通。
后续可以把日志来源从单文件扩展到多个服务,并为不同服务设置不同的提示词模板,减少误报。

分享到:
上一篇
大模型自动化运维配置:零基础搭建智能巡检与告警
下一篇
大模型MLOps实践:从环境准备到模型上线的完整流程
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意