96SEO 2026-09-08 20:57 2
其实,
当 AI 的浪潮席卷整个互联网领域以后作为一个拥有十年工作经验的老运维。内心不免产生迷茫,曾经我在面对“AI 能写代码、测试、操作 Windows、Linux”时既有抗拒也有恐惧——担心自己这份平凡的技术工作会被取代。只是在真正使用 AI 并把它当成日常工作的助手后我发现它可以为我们提供合理建议。并在合理边界内完成繁琐任务,从而明显提高效率。今天我们就用 AI 搭建一个告警分析管道,帮助排查程序故障的根本原因。
SRE 常见痛点:

我是一名 SRE,对监控与告警程序相当熟悉。AI 若跑偏,我能快速拉回其轨迹。此项目的目标是:让 AI 在安全边界内自动完成告警分类、根因分析与排查建议。让运维团队摆脱重复性工作,更专注于业务价值。
┌──────────────┐ ┌───────────────┐ ┌──────────────┐ ┌──────────────┐
│ Promeus │────▶│ Alertmanager │────▶│ Go Webhook │────▶│ Ollama │
│ │ │ │ │ : │ │ qwen2.:7b │
└──────────────┘ └───────────────┘ └──────┬───────┘ └──────────────┘
▲ ▲
┌─────────────────▼─────────────────┐
▼ ▼
┌───────────┐ ┌───────────┐
│ MySQL │ │ 公司微信 │
│ 持久化 │ │ 通知 │
└───────────┘ └───────────┘
主要链路:
| IP | 操作程序 | 作用 |
|---|---|---|
| 192.x.x.x 部署 Ollama & Webhook | Windows Server 2022 / Ubuntu 22.04 LTS | 运行 Ollama 模型和 Go Webhook 服务 |
| 192.x.y.y 部署监控网站 | CentOS 7 / Ubuntu 20.04 LTS | Promeus + Alertmanager + Grafana 等监控组件 |
在正式运行完整监控管道前。我先用 Go 写了一个 log_classifier 程序,用来验证 Ollama + qwen2.:7b 在日志分类方面的效果。从主要思路是来看,给模型一条日志,通过约束 Prompt 强制返回固定 JSON 格式。接下来解析结果即可快速定位异常原因和修复建议。
const systemPrompt = `你是一个资深的运维/SRE告警分析专家。老实说,使用者会给你一条程序告警日志。请判断它属于哪个类别、评估严重等级,并给出一句话原因。要求:.
再看字段定义,- "category":类别,只能从以下枚举中选一个:磁盘存储 / CPU内存 / 网络 / 应用错误 / 数据库 / 安全 / 中间件 / 其他
- "severity":严重等级。只能从 critical / warning / info 中选一个
- "reason":一句话说明为什么归到这个类别
各类别精确边界:
- 磁盘存储:仅宿主机磁盘使用率/空间超标。- CPU内存:仅宿主机层面的 CPU/内存/磁盘IO 指标超标,如 load average 过高、内存使用率%、swap 耗尽。从注意来看,进程内的堆/栈溢出不算此类。- 网络:网络连通性、延迟、丢包、DNS、端口不通。- 应用错误:应用程序自身异常——OutOfMemoryError/heap/stack 溢出、panic、exception、业务报错、5xx、进程崩溃重启。只要异常发生在某个服务进程内,就选此类,而不要选 CPU内存。- 数据库:关系型/主存储的异常,仅限 MySQL / PostgreSQL / Oracle / MongoDB 等的慢查询、死锁、连接数满、主从延迟。- 中间件:缓存/消息队列/网关的异常,仅限 Redis / Kafka / RabbitMQ / Nginx / Elasticsearch 等的连接超时、拒绝、集群异常。Redis 相关问题一律归此处,不要归数据库。- 安全:认证失败、暴力、越权访问、漏洞扫描、异常登录。失败的暴力尝试给 warning;登录成功或已入侵给 critical。- 其他:以上都不匹配的兜底类。铁律的观点是,- 見到 "OutOfMemory/heap/panic/exception" 且带 PID 或服务名 → 应用错误。绝不选 CPU内存,- 見到 "redis/kafka/mq/nginx/elasticsearch" 的连接类问题 → 中间件,绝不选 数据库。老实说,- 僅當是宿主機的 load average / 内存使用率% / 磁盘占用率% 数值超标 → 才選 CPU內存。再看示例输出,{"category":"磁盘存储","severity":"warning","reason":"根分区使用率超过阈值"}`
func classify {
reqBody := ollamaReq{
Model这方面,model,Stream: false,Format: "json"。
Temperature: /* 默认 */,Messages: chatMsg{
从{Role来看,"system",Content: systemPrompt},{Role: "user",Content: logLine},},}
data,_ := json.Marshal
req,err := http.NewRequest)
if err!= nil { return result{}。err }
req.Header.Set
client := &http.Client{Timeout: /* 秒数 */}
resp,err := client.Do
if err!= nil { return result{},err }
defer resp.Body.Close
body。_ := io.ReadAll
var or ollamaResp
if err := json.Unmarshal;err,= nil {
return result{}。fmt.Errorf)
}
var r result
if err := json.Unmarshal,&r);err,= nil {
// 回退策略:直接返回原文作为 reason
return result{Category:"解析失败",Severity:"info",Reason:or.Message.Content},nil
}
return r。nil }
This snippet demonstrates how to constrain model’s output format and parse it reliably.
`Promeus` 收集指标后触发告警;`Alertmanager`,并将结果写入 MySQL。同时通过公司微信推送通知,以便现场运维人员快速定位并处理问题。
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
const analysisPrompt = `你是一个资深的SRE/AIOps根因分析专家。使用者会给你一条Promeus告警,请完成:
1. 分类
2. 分析最可能根因
3. 给出建议排查/修复步骤
字段定义的观点是,- category : 磁盘存储 | CPU内存 | 网络 | 应用错误 | 数据库 | 中间件 | 安全 | 其他
- severity : critical|warning|info
- summary : 一句话概括该告警
- root_causes : 字符串数组
- actions : 字符串数组
说到示例输出,{"category":"CPU内存","severity":"critical"。"summary":"db-master-CPU负载18%,超过阈值8%已达5分钟","root_causes":,"actions":}`
func analyzeWithOllama {
reqBody:=ollamaReq{
Model这方面,model,Stream:false,Format:'json',Temperature:'默认',Messages:,}
至于data,_,=json.Marshal
从req,_来看,=http.NewRequest)
req.Header.Set
client的观点是,=& http.Client{Timeout:& * time.Second}
说到resp,_,=client.Do
defer resp.Body.Close
body。_这方面,=io.ReadAll
var or ollamaResp
if err:=json.Unmarshal;err,=nil{
return analysisResult{}。fmt.Errorf)
}
var ar analysisResult
if err:=json.Unmarshal,&ar);err,说起来,=nil{
return analysisResult{Category:'解析失败',Severity:'info',Summary:string},string。nil
}
return ar,string,nil
}
func formatAlert string {
// 将 Promeus 告警转换为易读文本,用于发送到公司微信或邮件等渠道。}
> 怎么说呢,⚠️ 告警名称: 说起来,
- 状态驳驳驳驳驳驳驳驳驳
- 等级\t
- 实例\t 按理说,
- iTime\t
- eaiotAnalysisResults\t
- jkIMessage\t
点击查看详细内容… --- 如果你想看到完整模板请自行打开源文件
.
- #1 本项目基于 Go 标准库 + Ollama + MySQL 实现了完整从报警触发到根因分析再到通知的一整套流程。但代码结构尚待调整,可考虑采用 Eino 框架进一步解耦。
- #2 日志采集方面仍以简单文件读取为主,未来计划接入 FluentBit/Fargate 等真实业务场景实现多租户、多源日志聚合。
- #5 虽然本次实验采用了 qwen2.:7b 的纯 CPU 推理。但若配备 GPU 或切换至更轻量级模型,将进一步提高实时性和准确率。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback