将Zabbix飞书告警与本地OLLAMA大模型集成的完整技术方案:

架构拓扑

一、环境准备

1.1 系统要求

  • Linux 服务器(推荐 Ubuntu 20.04+)
  • Docker 与 NVIDIA 驱动(如需 GPU 加速)
  • Python 3.9+(用于告警脚本)
  • Zabbix Server 6.x+
  • 飞书企业账号与 Webhook 地址

1.2 安装依赖

sudo apt update
sudo apt install -y docker.io python3-pip nginx
pip3 install requests diskcache prometheus_client

二、部署 OLLAMA 服务

2.1 启动容器

docker run -d --gpus=all \
  -p 11434:11434 \
  -v ollama:/root/.ollama \
  --name ollama \
  ollama/ollama

2.2 下载模型

docker exec ollama ollama pull llama3

可替换为 deepseek-r1:8b 等模型。

三、配置 Nginx 网关(推荐)

3.1 配置文件

nginx

# /etc/nginx/conf.d/ollama_gateway.conf
server {
    listen 11435;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:11434;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_connect_timeout 5s;
        proxy_read_timeout 15s;
        proxy_send_timeout 15s;

        limit_req zone=ollama burst=40 nodelay;
        proxy_next_upstream error timeout http_502 http_503 http_504;
    }
}
limit_req_zone $binary_remote_addr zone=ollama:10m rate=20r/s;

3.2 重启服务

sudo systemctl restart nginx

四、告警脚本配置

4.1 脚本路径

/usr/lib/zabbix/alertscripts/feishu_ollama.py

五、Zabbix 配置

5.1 媒体类型

  • 类型:脚本
  • 脚本:feishu_ollama.py
  • 参数:

    代码

    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
    

5.2 动作模板

  • 问题产生时

    主题: {TRIGGER.NAME}
    消息: 主机:{HOST.NAME} 严重度:{TRIGGER.SEVERITY} 事件ID:{EVENT.ID} 详情:{ITEM.NAME}:{ITEM.VALUE}
    
  • 问题恢复时

    主题: {TRIGGER.NAME} 已恢复
    消息: 主机:{HOST.NAME} 事件ID:{EVENT.ID} 状态:OK
    

六、安全加固

6.1 启用认证

docker run ... \
  -e OLLAMA_AUTH="basic" \
  -e OLLAMA_ORIGINS="http://zabbix-server-ip:*" \
  ollama/ollama

6.2 创建用户

docker exec ollama ollama auth add --username zabbix --password StrongPass123!

6.3 脚本中添加认证

python

auth = ("zabbix", "StrongPass123!")
requests.post(..., auth=auth)

七、高可用与健康检查

7.1 多节点配置

python

OLLAMA_NODES = [
    "http://ollama-node1:11434",
    "http://ollama-node2:11434",
    "http://ollama-node3:11434"
]

7.2 systemd 健康检查

ini

# /etc/systemd/system/ollama-health.service
[Unit]
Description=OLLAMA Health Check
After=network.target

[Service]
ExecStart=/usr/local/bin/ollama_healthcheck.sh
Restart=always

[Install]
WantedBy=multi-user.target

ollama_healthcheck.sh

#!/bin/bash
URL="http://127.0.0.1:11434/api/tags"
if ! curl -s --max-time 2 $URL | grep -q "llama3"; then
  systemctl restart ollama
fi

八、智能降级策略

  • 负载过高时跳过分析

python

if os.getloadavg()[0] > 5.0:
    return "🔻 系统负载过高,已跳过AI分析"
  • 失败回退机制

python

try:
    analysis = get_ollama_analysis(alert_message)
except Exception:
    analysis = requests.get("http://backup-ai-service/analyze").text

九、验证与调试

9.1 手动测试

python3 feishu_ollama.py https://飞书webhook地址 "测试主题" "CPU负载超过90%"

9.2 查看日志

docker logs --tail 100 ollama

9.3 Prometheus 指标

  • ollama_analysis_duration
  • ollama_model_mem_usage

十、模型优化与定制

10.1 Modelfile 示例

dockerfile

FROM llama3
SYSTEM """
你是一个专注于运维场景的AI助手,需要:
- 使用中文输出
- 优先推荐自动化处置方案
- 对磁盘、网络、CPU问题有专业判断
"""

创建模型:

docker exec ollama ollama create myops -f Modelfile

10.2 GPU 资源隔离

docker run ... --gpus '"device=0:0"'

总结

本文覆盖了:

  • 部署:OLLAMA 容器 + 模型下载
  • 网关:Nginx 限流与熔断
  • 脚本:增强版 Python 脚本
  • Zabbix:媒体类型与动作模板
  • 安全:认证与来源限制
  • 高可用:多节点 + systemd 健康检查
  • 降级:负载感知与回退机制
  • 验证:手动测试与监控指标
  • 优化:Modelfile 定制与 GPU 隔离
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2026-01-13 11:48:58

results matching ""

    No results matching ""