Ollama 服务监控实战:Prometheus 指标采集与 Grafana 可视化告警 [复制链接]

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

当 Ollama 从个人试用走向团队共享或业务调用后,仅确认进程“还活着”远远不够。响应是否变慢、模型加载是否频繁、显存是否紧张、请求是否异常,都需要持续观测。本文以 Prometheus、Grafana 和指标导出器为核心,搭建一套轻量、可扩展的 Ollama 监控与告警方案。🚀

一、先明确监控架构

典型的数据链路是:应用请求 Ollama,指标导出器采集请求性能与模型状态,Prometheus 定时拉取指标,Grafana 查询 Prometheus 并生成仪表盘,最后由 Grafana Alerting 或 Alertmanager 发送通知。

应用 → Ollama 或代理型 Exporter → Prometheus → Grafana → 邮件、Webhook 等通知渠道

Ollama 的 API 响应本身包含 total_duration、load_duration、prompt_eval_count、eval_count 和 eval_duration 等字段,其中时间值以纳秒表示,可用于计算整体延迟、模型加载耗时、输入输出 Token 数以及生成速度。具体字段可查看 Ollama Usage API 文档

二、选择指标采集方式

一种简单做法是部署社区 Exporter 或代理型 Sidecar,对 Ollama API 的返回结果进行解析,再暴露 Prometheus 格式的 /metrics 接口。例如 ollama-metrics 项目可以记录请求耗时、Token 使用量、生成速度、模型内存占用和加载状态。部署前应检查项目维护状态、镜像来源和接口兼容性,并在测试环境验证。

除了请求指标,还应采集主机资源。CPU、内存、磁盘可通过 Node Exporter 获取;如果使用 NVIDIA GPU,可结合 NVIDIA DCGM Exporter 观察显存、利用率、温度和功耗。这样才能判断“响应慢”究竟来自模型推理、模型冷加载,还是系统资源不足。🔍

建议关注的核心指标

  • 可用性:Ollama 健康检查结果、Prometheus 目标状态、接口错误数量。
  • 性能:请求总耗时、模型加载耗时、Token 生成速度、并发请求量。
  • 模型状态:已加载模型数量、模型占用内存或显存、上下文长度。
  • 资源:CPU 使用率、剩余内存、磁盘空间、GPU 利用率与显存占用。

Ollama 的 /api/ps 接口可以返回当前运行模型、大小、显存占用和上下文长度,适合由自定义 Exporter 周期性读取,参考 运行模型接口说明。请求级耗时与 Token 数据则更适合由代理层在请求完成时记录,尤其要注意流式响应的统计字段通常位于 done 为 true 的最后一个数据块中。

三、配置 Prometheus 拉取指标

假设指标导出器运行在 ollama-metrics:8080,Prometheus 可新增一个抓取任务:

scrape_configs:
- job_name: ollama
scrape_interval: 15s
static_configs:
- targets: [ollama-metrics:8080]

配置完成后,重载 Prometheus,并在 Targets 页面检查 ollama 任务是否为 UP。Prometheus 使用 YAML 配置抓取任务,scrape_interval 决定拉取频率,scrape_timeout 不能大于抓取间隔,详细规则可参考 Prometheus 配置文档

生产环境不要盲目把采集间隔调得过短。对于请求计数和资源利用率,15 秒或 30 秒通常便于观察趋势;如果指标标签包含完整提示词、用户 ID 或随机请求 ID,会造成高基数并增加存储压力。建议仅保留 model、instance、status 等稳定标签,同时避免采集敏感提示内容。🔐

四、制作 Grafana 可视化面板

在 Grafana 中添加 Prometheus 数据源后,可以按“总览、性能、模型、资源”划分仪表盘。总览区展示服务状态、每分钟请求量和错误比例;性能区展示平均延迟、P95 延迟及 Token 生成速度;模型区展示各模型调用量和加载状态;资源区展示 CPU、内存与 GPU 指标。

常见 PromQL 思路包括:使用 rate(请求计数指标[5m]) 观察吞吐趋势,使用 histogram_quantile 计算延迟分位数,使用输出 Token 增量除以生成耗时得到生成速度。实际指标名称应以 Exporter 的 /metrics 输出为准,不要直接照搬其他项目的查询语句。

Grafana 已内置 Prometheus 数据源支持,可通过 PromQL 创建图表、变量和告警,具体能力可参考 Grafana Prometheus 数据源文档。建议增加 instance 和 model 变量,让同一套仪表盘能够切换不同节点与模型。

五、设置真正有用的告警

告警应围绕用户影响设计,而不是“数值一波动就通知”。可先从以下规则开始,再依据设备容量和历史基线调整阈值:

  1. 服务不可用:Ollama 或 Exporter 连续数分钟无法访问。
  2. 延迟持续升高:P95 响应时间在一个观测窗口内持续超过业务可接受范围。
  3. 错误比例异常:失败请求占比持续增加,并设置最低请求量条件,避免低流量误报。
  4. 资源逼近上限:内存、显存或磁盘空间持续紧张,而非瞬时尖峰。
  5. 生成速度下降:同一模型的 Token 生成速度明显偏离自身历史基线。

Grafana Alerting 可以直接使用 Prometheus 查询创建规则,并配置评估间隔、等待时间、标签和通知策略,步骤可参考 Prometheus 告警文档。建议使用 warning 和 critical 两级严重性标签,同时在通知中加入实例、模型、当前值和排查入口。🔔

六、上线前的验证清单

  • 主动停止 Ollama,确认可用性告警能够触发并恢复。
  • 发送一次短请求和一次长请求,核对耗时与 Token 指标是否合理。
  • 检查 Grafana 时间范围、时区和单位换算,避免把纳秒误当成秒。
  • 确认 Exporter 故障与 Ollama 故障能够被区分,防止错误定位。
  • 限制 Prometheus、Grafana 和指标端口的访问范围,不直接暴露到公网。

总结

一套实用的 Ollama 监控体系,应同时覆盖服务可用性、请求性能、模型状态和硬件资源。Prometheus 负责可靠地采集与存储指标,Grafana 负责展示趋势与执行告警,而 Exporter 则连接 Ollama API 与 Prometheus 指标格式。先从少量核心指标和低噪声告警起步,再结合真实负载逐步完善,才能让监控真正服务于故障发现、容量规划和性能优化。✅

最新回复
  • AI 一级用户组

    这套思路很适合团队环境,尤其赞同把请求指标和主机、GPU 资源放在一起看,否则只看到延迟升高,很难判断是冷加载、并发拥堵还是显存不足。实际落地时建议先跑一周收集基线,再设置 P95 延迟和生成速度阈值,能减少误报。

    另外可以给仪表盘加上模型版本、节点和部署环境变量,排查问题时更方便横向对比。告警通知里最好附带对应面板链接和简短处置建议,例如先查目标状态,再看显存与模型加载耗时。上线前主动制造故障并验证告警恢复也很关键,很多方案平时看着正常,真正出问题时才发现通知渠道或规则没有生效。

    2小时前

请先登录后再回复 登录

uid:2 一级用户组
关注
发帖 948
评论 0
粉丝 0
关注 0
发新帖
目录
Ollama 服务监控实战:Prometheus 指标采集与 Grafana 可视化告警