【书生·浦语】internlm2-chat-1.8b实战教程:Ollama模型监控(Prometheus+Grafana)
【书生·浦语】internlm2-chat-1.8b实战教程:Ollama模型监控(Prometheus+Grafana)
想让你的大模型服务跑得又快又稳吗?光会部署可不够,你得知道它“身体”好不好。今天,我们就来聊聊怎么给部署在Ollama上的InternLM2-Chat-1.8B模型,装上一套“心电图”和“仪表盘”——也就是用Prometheus和Grafana来监控它。
想象一下,你正在用这个模型处理一个重要的对话任务,突然响应变慢了,或者干脆没反应了。你该怎么办?是模型本身的问题,还是服务器资源不够了?有了这套监控系统,你就能像看汽车仪表盘一样,实时看到模型的CPU、内存使用情况、请求响应时间、错误率等关键指标,问题出在哪一目了然。
这篇文章,我就手把手带你从零开始,搭建一套专为Ollama部署的InternLM2-Chat-1.8B模型设计的监控方案。即使你之前没接触过Prometheus和Grafana,跟着步骤走,也能轻松搞定。
1. 监控方案概览:为什么需要以及它能做什么
在深入动手之前,我们先花几分钟搞清楚,我们到底要建一个什么东西,以及它能给我们带来什么好处。
1.1 为什么需要监控Ollama模型?
你可能觉得,模型部署好了能跑起来不就行了?但对于一个需要持续提供服务的应用来说,这远远不够。监控能帮你解决以下几个核心问题:
- 问题定位与排障:当用户反馈“模型回答慢”或“出错了”,你可以立刻查看监控图表,判断是模型推理耗时激增,还是服务器内存不足导致了OOM(内存溢出),或是网络出现了波动。这能极大缩短排查时间。
- 性能优化依据:通过观察历史趋势,你可以了解模型的典型负载模式。比如,发现每天下午3点CPU使用率都会飙升,这可能意味着那个时段有定时任务或访问高峰,你可以据此考虑优化或扩容。
- 资源规划与成本控制:监控数据能告诉你,运行这个模型到底需要多少CPU和内存资源。这为你选择更合适的云服务器规格提供了数据支撑,避免资源浪费或不足。
- 服务可用性保障:你可以设置告警规则,当关键指标(如服务不可用、错误率过高)异常时,通过邮件、钉钉、微信等渠道及时通知你,实现主动运维,防患于未然。
1.2 技术栈介绍:Prometheus + Grafana
我们选择的方案是业界最流行的开源监控组合:
- Prometheus(普罗米修斯):它相当于一个高性能的“时间序列数据库”和“数据抓取器”。它的工作方式是主动去各个目标(这里就是Ollama服务)上“拉取”(Pull)监控指标数据,然后存储起来。它自带一套强大的查询语言(PromQL),可以用来灵活地查询和分析这些时序数据。
- Grafana(格拉法纳):它是一个功能强大的“数据可视化”平台。它本身不存储数据,而是作为一个华丽的“仪表盘”,从各种数据源(这里就是Prometheus)读取数据,然后以精美的图表形式展示出来。你可以自由地拖拽组件,定制属于自己的监控视图。
它们如何协作?简单来说,Ollama服务(从某个版本开始)会暴露一个包含自身运行指标的HTTP端点(比如http://localhost:11434/api/health或专门的/metrics端点)。Prometheus定期去这个端点抓取数据并存起来。Grafana则连接到Prometheus,将存储的数据画成我们看得懂的图表。
接下来,我们就开始一步步搭建这个系统。
2. 环境准备与组件部署
我们的操作将在同一个Linux服务器(或虚拟机)上进行。假设你已经按照常规方式安装并运行了Ollama,并且通过它成功加载了internlm2:1.8b模型。
2.1 确认Ollama指标端点
首先,我们需要确认你的Ollama版本是否支持暴露监控指标。较新版本的Ollama通常会提供健康检查或指标端点。
打开终端,使用curl命令测试一下:
# 测试Ollama服务是否健康(常用端点) curl http://localhost:11434/api/health # 尝试访问可能的指标端点(如果存在) curl http://localhost:11434/metrics如果/metrics端点返回一堆以# HELP和# TYPE开头,后面跟着类似ollama_http_request_duration_seconds这样的数据,那么恭喜你,Ollama已经内置了指标暴露功能。如果返回404,你可能需要查阅Ollama官方文档,确认如何启用或寻找替代的监控方法(例如通过cAdvisor监控容器资源)。
假设我们确认http://localhost:11434/metrics有数据输出,记下这个地址,后面Prometheus会用到。
2.2 安装与配置Prometheus
下载Prometheus: 访问 Prometheus官网下载页,选择适合你系统(通常是Linux)的版本。我们以使用
wget下载最新稳定版为例。# 进入一个工作目录,例如 /opt cd /opt # 下载Prometheus(版本号请替换为最新) wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz # 解压 tar xvf prometheus-2.48.0.linux-amd64.tar.gz # 创建一个软链接或重命名,方便使用 ln -s prometheus-2.48.0.linux-amd64 prometheus cd prometheus配置Prometheus: Prometheus的主配置文件是
prometheus.yml。我们需要修改它,告诉它去抓取Ollama的指标。# 备份原始配置文件 cp prometheus.yml prometheus.yml.bak # 使用vim或nano编辑配置文件 vim prometheus.yml在
scrape_configs:部分,添加一个新的抓取任务(job)。找到类似下面的部分进行修改:# 默认配置后,添加你的ollama job scrape_configs: # 默认的抓取自身指标的job - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] # 新增:抓取Ollama指标的job - job_name: 'ollama' static_configs: - targets: ['localhost:11434'] # Ollama服务的地址和端口 metrics_path: '/metrics' # 指标暴露的路径 scrape_interval: 15s # 每15秒抓取一次,可根据需要调整保存并退出编辑器。
启动Prometheus: 我们可以以后台服务的方式启动,这里先用简单的前台启动方式测试。
# 在前台启动,方便看日志 ./prometheus --config.file=prometheus.yml如果看到类似
Server is ready to receive web requests.的日志,说明启动成功。默认情况下,Prometheus的Web界面运行在http://localhost:9090。你可以打开浏览器访问这个地址。验证Prometheus是否抓取到数据: 在Prometheus的Web界面(
http://服务器IP:9090)中,点击顶部菜单栏的“Status” -> “Targets”。 你应该能看到两个目标(Targets):prometheus状态为UP,ollama状态也应为UP。如果ollama是DOWN,请检查Ollama服务是否运行,以及prometheus.yml中的targets地址是否正确。在“Graph”页面的查询框里,输入
up并执行,应该能看到两条记录,job="prometheus"和job="ollama"的值都为1,这表示抓取成功。
2.3 安装与配置Grafana
安装Grafana: 根据你的Linux发行版,安装方式不同。以Ubuntu/Debian为例,可以使用官方仓库安装。
# 安装依赖 sudo apt-get install -y software-properties-common wget # 添加Grafana仓库密钥 wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - # 添加稳定版仓库 echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list # 更新并安装 sudo apt-get update sudo apt-get install -y grafana启动并设置开机自启:
# 启动Grafana服务 sudo systemctl start grafana-server # 设置开机自启 sudo systemctl enable grafana-server # 查看服务状态 sudo systemctl status grafana-server登录并添加数据源:
- 打开浏览器,访问
http://服务器IP:3000(Grafana默认端口3000)。 - 首次登录,默认用户名和密码都是
admin。登录后会要求修改密码。 - 进入主页后,点击左侧导航栏的“Connections” -> “Data sources”。
- 点击“Add data source”,选择“Prometheus”。
- 在配置页面,只需要填写一个关键项:URL。设置为
http://localhost:9090(如果Grafana和Prometheus安装在同一台机器)。其他设置可以保持默认。 - 滚动到页面底部,点击“Save & test”。如果显示 “Data source is working”,恭喜你,数据源配置成功!
- 打开浏览器,访问
至此,我们的监控基础设施就全部搭建完成了。Prometheus在默默地抓取Ollama的指标,Grafana也准备好了展示这些数据。接下来,就是最有趣的部分——创建炫酷的监控仪表盘。
3. 创建Ollama模型监控仪表盘
现在,我们让Grafana把Prometheus里的数据,变成直观的图表。
3.1 导入现成的仪表盘模板(推荐)
Grafana社区有大量用户贡献的仪表盘模板,我们可以直接导入一个适用于通用HTTP服务或Go应用(Ollama是Go写的)的模板,然后稍作修改。
- 在Grafana首页,点击左侧“Dashboards” -> “New” -> “Import”。
- 在“Import via grafana.com”输入框中,输入一个流行的通用模板ID,例如
11074(这是一个基础的“Node Exporter Full”仪表盘,但包含了很多系统指标,我们可以借鉴其面板)。或者,你可以搜索“Ollama”看看是否有专属模板。这里我们以自定义创建为例,因为更贴合需求。
3.2 手动创建仪表盘(更灵活)
我们来创建一个全新的仪表盘,专注于Ollama和InternLM2模型的核心指标。
新建仪表盘:点击“Dashboards” -> “New” -> “New Dashboard”。
添加第一个面板:模型服务健康状态。
- 点击“Add visualization”。
- 数据源选择我们刚配置好的 “Prometheus”。
- 在“Metrics browser”中输入
up{job="ollama"}。这个查询会返回Ollama服务的状态(1为健康,0为异常)。 - 在右侧“Visualization”下拉菜单中,选择“Stat”(状态图)。
- 在“Standard options”里,可以设置单位(Unit)为“none”,并设置阈值(Thresholds),比如当值小于1时显示为红色警告。
- 给面板起个名字,比如“Ollama Service Status”。
- 点击右上角“Apply”保存面板。
添加第二个面板:HTTP请求速率。
- 在仪表盘页面,点击右上角的“Add panel”图标(一个带加号的图表),然后选择“Add a new panel”。
- 输入查询语句:
rate(ollama_http_request_duration_seconds_count[5m])。这会计算Ollama每秒处理的HTTP请求数量(基于最近5分钟的数据)。 - 可视化类型选择“Time series”(时间序列图)。
- 在右侧“Standard options” -> “Legend”,可以设置为
{{method}}来按HTTP方法(GET/POST等)区分线条。 - 标题设为“Request Rate (req/s)”。
- “Apply”保存。
添加第三个面板:请求延迟分布(平均响应时间)。
- 新建面板。
- 输入查询:
rate(ollama_http_request_duration_seconds_sum[5m]) / rate(ollama_http_request_duration_seconds_count[5m])。这个PromQL公式计算的是平均请求持续时间。 - 可视化类型选择“Time series”。
- 在“Standard options” -> “Unit”中选择“seconds (s)”或“milliseconds (ms)”。
- 可以添加多条查询,用
{method="POST"}等条件来区分不同接口的延迟。标题设为“Average Response Time”。 - “Apply”保存。
添加第四个面板:系统资源使用率(CPU、内存)。
- 要监控服务器本身的资源,你需要安装
node_exporter(这是另一个Prometheus的组件,用于暴露主机指标)。安装步骤类似,下载解压后运行即可。这里假设你已经安装并配置Prometheus抓取了node_exporter(job_name: ‘node’)。 - CPU使用率查询:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)。 - 内存使用率查询:
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100。 - 可以将这两个查询放在同一个“Time series”面板中,用不同颜色表示。标题设为“Host Resource Usage (%)”。
- 要监控服务器本身的资源,你需要安装
调整布局与保存:
- 拖动每个面板的角落,调整它们的大小和位置,排列成一个整洁的仪表盘。
- 最后,点击仪表盘顶部的“Save dashboard”图标(软盘形状),给你的仪表盘起个名字,比如“Ollama InternLM2-1.8B Monitoring”,然后保存。
现在,你的专属模型监控仪表盘就创建好了!你可以实时看到模型的请求压力、响应速度以及所在服务器的资源消耗情况。
4. 设置告警规则
监控的可视化是“眼睛”,告警则是“闹钟”。我们不能一直盯着仪表盘,需要让系统在异常时主动通知我们。
告警可以在Prometheus或Grafana中设置。这里我们介绍在Grafana中设置,相对直观。
- 进入告警设置:在Grafana中,打开你刚创建的仪表盘。点击顶部导航栏的“Alerting”(铃铛图标)->“Alert rules”->“Create alert rule”。
- 设置告警规则:
- Rule name:
Ollama Service Down - Data source: 选择你的Prometheus数据源。
- Query:
A: 输入up{job="ollama”}- Reduce function: 选择
Last(取最新值)。
- Conditions:
WHENlast()OFAIS BELOW1- 这表示当
up值低于1(即服务异常)时触发告警。
- Evaluation interval: 设置检查频率,例如
1m。
- Rule name:
- 配置告警通知渠道:
- 在触发告警前,你需要先配置一个“Contact point”(通知渠道)。点击“Alerting” -> “Contact points” -> “Add contact point”。
- 你可以选择多种方式,如Email、DingTalk(钉钉)、Slack、Webhook等。根据提示填写相应的配置信息(如邮箱地址、钉钉机器人Webhook地址等)。
- 保存联系点后,回到告警规则编辑页面,在“Notifications”部分,选择你刚创建的联系点。
- 保存告警规则:填写完所有信息后,点击“Save rule”。
这样,当你的Ollama服务停止或无法访问时,Prometheus抓取失败,up值会变为0,随后就会触发你在Grafana中设置的告警,并通过你配置的渠道发送通知。
5. 总结
通过以上步骤,我们成功为Ollama部署的InternLM2-Chat-1.8B模型搭建了一套从数据采集、存储、可视化到告警的完整监控体系。
让我们回顾一下关键收获:
- 监控价值:我们明确了监控对于模型服务运维的重要性,它不仅是“看板”,更是问题排查、性能优化和保障稳定性的基石。
- 技术栈落地:我们实践了Prometheus和Grafana这两个核心工具的组合。Prometheus负责精准抓取和存储Ollama暴露的时序指标数据;Grafana则将这些数据转化为直观、可定制的监控仪表盘。
- 实战操作:从环境检查、组件安装配置,到仪表盘的创建与美化,我们完成了一次完整的动手实践。你不仅学会了如何部署这些工具,更掌握了如何利用PromQL查询语言去获取关心的指标(如请求率、延迟、服务状态)。
- 主动运维:通过设置告警规则,我们将监控从被动查看升级为主动通知。一旦服务出现异常,系统能第一时间通知负责人,大大提升了运维响应速度。
这套监控方案是通用的,你可以轻松地将它复用到其他由Ollama管理的模型,甚至是其他任何能暴露Prometheus格式指标的服务上。下一步,你可以探索更深入的监控维度,例如:
- 监控GPU使用情况(如果服务器有GPU)。
- 分析不同模型(如
internlm2:1.8b与llama2:7b)在相同请求下的资源消耗对比。 - 设置更复杂的告警规则,比如“5分钟内平均响应时间超过2秒”或“内存使用率持续超过80%”。
希望这篇教程能帮助你更好地管理和洞察你的大模型服务,让它运行得更加稳健、高效。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
