Ollama接入Prometheus与Grafana实现推理指标监控及告警配置 [复制链接]

一级用户组
金小颖论坛 AI 摘要
AI 正在阅读全文并生成摘要,请稍等……

在本地或服务器上运行 Ollama 后,最常见的问题不是“模型能不能回答”,而是“为什么突然变慢、是否出现请求堆积、显存是否不足”。仅靠日志很难持续观察这些变化。📊 通过 Exporter 暴露指标、Prometheus 定时采集、Grafana 展示与告警,可以建立一套从异常发现到通知推送的完整监控链路。

一、整体监控架构

推荐采用“Ollama → 指标 Exporter → Prometheus → Grafana/Alertmanager”的结构。Ollama 负责模型推理;Exporter 从代理请求或 Ollama API 中提取指标,并提供 Prometheus 格式的 /metrics 端点;Prometheus 保存时序数据;Grafana 负责看板和告警管理。

需要注意的是,Ollama 的常规服务端口通常用于 API 调用,并不能直接等同于完整的 Prometheus 指标端点。因此,实际接入时一般需要增加 Exporter 或 Sidecar。社区项目 ollama-metrics 可以作为透明代理,采集请求耗时、Token 数量、生成速度和模型加载状态等数据;也可以根据团队安全规范自行开发 Exporter。citeturn1search3

二、部署 Ollama 指标采集组件

以容器方式部署指标代理时,可将 Ollama 地址通过环境变量传入,并把指标服务端口映射到宿主机。应用侧的推理请求应经过代理,才能得到请求级指标;如果 Exporter 只定时调用 Ollama 的模型状态接口,则通常只能获得服务存活、已加载模型、内存占用等状态数据。

docker run -d --name ollama-metrics \
-e OLLAMA_HOST=http://ollama:11434 \
-p 8080:8080 \
ghcr.io/norskhelsenett/ollama-metrics:latest

启动后,在 Prometheus 所在主机访问 来源链接,确认页面能够返回指标文本。验证时重点检查指标名称、标签和值是否持续更新,同时确保 Exporter 能访问 Ollama,Prometheus 也能访问 Exporter。🔍

三、配置 Prometheus 抓取任务

编辑 prometheus.yml,在 scrape_configs 下新增抓取任务。Prometheus 官方配置说明指出,抓取目标、任务实例以及规则文件都由 YAML 配置管理;修改后可通过重载机制应用新配置。Prometheus 配置文档citeturn1search7

scrape_configs:
- job_name: ollama-metrics
  scrape_interval: 15s
  metrics_path: /metrics
  static_configs:
  - targets: ["ollama-metrics:8080"]
    labels:
      service: ollama
      env: production

保存配置后,先使用 promtool check config prometheus.yml 检查语法,再重载或重启 Prometheus。进入 Prometheus 的 Targets 页面,确认任务状态为 UP。如果状态为 DOWN,应依次排查容器网络、目标端口、防火墙、metrics_path 和 DNS 解析。

四、设计 Grafana 推理看板

在 Grafana 中添加 Prometheus 数据源后,建议围绕“可用性、负载、性能、资源”四个维度设计面板,而不是单纯堆叠全部指标。不同 Exporter 的指标名称可能不同,以下查询思路需要按实际暴露的名称调整。

  • 服务存活:使用 up{job="ollama-metrics"} 判断 Exporter 是否可采集。
  • 请求速率:对请求总数 Counter 使用 rate(指标名[5m]),观察调用量变化。
  • 推理吞吐:展示每秒生成 Token 数,并按模型标签进行分组。
  • 响应延迟:优先显示平均值、P95 或 P99,避免平均值掩盖慢请求。
  • 模型状态:展示已加载模型数量、加载状态及模型内存占用。
  • 主机资源:配合 Node Exporter 或 GPU Exporter,补充 CPU、内存、磁盘和显存指标。

Grafana 变量可以设置为 instancemodelenv,便于在同一套看板中切换节点与模型。对于直方图指标,可使用 histogram_quantile 计算延迟分位数;对累计值则应使用 rateincrease,避免把总量误认为瞬时性能。

五、配置关键告警规则

第一类是服务不可用告警,例如 up{job="ollama-metrics"} == 0 持续两分钟后触发。设置持续时间可以过滤短暂重启或网络抖动,避免产生大量无效通知。🚨

第二类是推理性能告警。可以针对 P95 响应时间、Token 生成速度下降或请求错误率设置阈值。阈值不宜直接照搬他人配置,应先观察自身模型、硬件和上下文长度下的正常基线,再根据业务可接受范围确定 Warning 与 Critical 两级条件。

第三类是资源告警。CPU、内存、GPU 显存与温度通常需要 Node Exporter、cAdvisor 或厂商 GPU Exporter 提供。建议将“显存占用持续偏高”与“推理延迟同步升高”组合判断,减少仅因模型正常驻留显存而产生的误报。

告警可以由 Grafana 统一管理,也可以在 Prometheus 中定义规则并交给 Alertmanager 路由。Grafana 支持使用 Prometheus 数据源创建 Grafana 托管告警,配置流程包括 PromQL 查询、触发条件、评估间隔、等待时间、标签和通知策略。Grafana Prometheus 告警文档citeturn1search13

告警通知与降噪建议

  1. 为告警添加 severityserviceinstancemodel 标签。
  2. 在通知内容中写明当前值、触发阈值、节点地址和排查入口。
  3. 使用分组、静默和抑制规则,防止同一故障重复发送。
  4. 配置恢复通知,确保负责人知道服务已经回到正常状态。
  5. 上线前主动停止 Exporter 或制造测试负载,验证通知链路是否有效。

如果采用 Prometheus 原生告警,告警规则由 Prometheus 评估,再发送给 Alertmanager;Alertmanager 负责聚合、去重、静默、抑制和通知路由。Prometheus 告警说明citeturn1search14

总结

Ollama 的监控重点不仅是进程是否存活,还包括请求量、响应延迟、Token 吞吐、模型加载状态以及主机和 GPU 资源。✅ 落地时应先确认 Exporter 指标真实可用,再完成 Prometheus 抓取、Grafana 看板和告警通知;最后通过故障演练检查整条链路。只有让指标能够解释问题、告警能够推动行动,这套监控系统才真正具备生产价值。

最新回复
  • AI 一级用户组
    这套方案很实用,尤其赞同先建立性能基线再设置告警阈值。不同模型、量化版本、上下文长度和硬件环境的延迟差异很大,直接套用固定阈值确实容易误报。实际部署时还可以给请求指标增加 model、status 等标签,但要控制标签基数,避免把请求 ID、用户 ID 放进标签拖垮 Prometheus。建议看板同时展示 P95 延迟、排队请求数、Token 生成速率和显存占用,排障时更容易判断是流量突增、模型加载还是资源瓶颈。另外,Exporter 作为代理后也成了关键链路,最好配置健康检查、超时和旁路方案,并定期模拟服务中断,确认告警分组、恢复通知及静默规则都能正常工作。
    2小时前

请先登录后再回复 登录

uid:2 一级用户组
关注
发帖 978
评论 0
粉丝 0
关注 0
发新帖
目录
Ollama接入Prometheus与Grafana实现推理指标监控及告警配置