通过监控确保您的 Open WebUI 健康运行 🩺
监控您的 Open WebUI 实例至关重要,它能确保系统可靠运行、性能良好,并让您能够快速识别和解决任何问题。本指南概述了三个级别的监控,从基本的可用性检查到深入的模型响应测试。
为何要监控?
- 确保正常运行时间: 主动检测停机和服务中断。
- 性能洞察: 跟踪响应时间并识别潜在瓶颈。
- 早期问题检测: 在问题对用户造成重大影响之前发现它们。
- 安心无忧: 确保您的 Open WebUI 实例运行顺畅,让您信心十足。
🚦 监控级别
我们将介绍三个级别的监控,从基础到更全面的内容
- 基本健康检查: 验证 Open WebUI 服务是否正在运行并响应。
- 模型连接性检查: 确认 Open WebUI 可以连接并列出您配置的模型。
- 模型响应测试(深度健康检查): 确保模型能够实际处理请求并生成响应。
级别 1:基本健康检查端点 ✅
最简单的监控级别是检查 /health
端点。此端点是公开可访问的(无需身份验证),当 Open WebUI 服务正常运行时,它会返回 200 OK
状态码。
如何测试
您可以使用 curl
或任何 HTTP 客户端来检查此端点
# Basic health check - no authentication needed
curl https://your-open-webui-instance/health
预期输出: 成功的健康检查将返回 200 OK
HTTP 状态码。响应体的内容对于基本健康检查通常不重要。
使用 Uptime Kuma 进行基本健康检查 🐻
Uptime Kuma 是一款出色的开源、易于使用的自托管正常运行时间监控工具。强烈建议使用它来监控 Open WebUI。
在 Uptime Kuma 中设置的步骤
- 添加新监控: 在您的 Uptime Kuma 控制面板中,点击“添加新监控”。
- 配置监控设置
- 监控类型: 选择“HTTP(s)”。
- 名称: 为您的监控器指定一个描述性名称,例如“Open WebUI 健康检查”。
- URL: 输入健康检查端点 URL:
http://your-open-webui-instance:8080/health
(将your-open-webui-instance:8080
替换为您的实际 Open WebUI 地址和端口)。 - 监控间隔: 设置检查频率(例如,
60 秒
即每分钟一次)。 - 重试次数: 设置在将服务视为停机之前的重试次数(例如,
3
次重试)。
此检查验证什么
- Web 服务器可用性: 确保 Web 服务器(例如 Nginx、Uvicorn)正在响应请求。
- 应用程序运行: 确认 Open WebUI 应用程序本身正在运行并已初始化。
- 基本数据库连接: 通常包括一项基本检查,以确保应用程序可以连接到数据库。
级别 2:Open WebUI 模型连接性 🔗
要超越基本可用性,您可以监控 /api/models
端点。此端点需要身份验证,并验证 Open WebUI 是否可以成功与您配置的模型提供商(例如 Ollama、OpenAI)通信并检索可用模型列表。
为何监控模型连接性?
- 模型提供商问题: 检测模型提供商服务的问题(例如 API 中断、身份验证失败)。
- 配置错误: 识别 Open WebUI 中模型提供商设置的错误配置。
- 确保模型可用性: 确认您期望可用的模型实际上 Open WebUI 可以访问。
API 端点详情
有关 /api/models
端点及其响应结构的完整详细信息,请参阅 Open WebUI API 文档。
如何使用 curl
测试(已认证)
您需要一个 API 密钥才能访问此端点。有关生成 API 密钥的说明,请参阅下面的“身份验证设置”部分。
# Authenticated model connectivity check
curl -H "Authorization: Bearer YOUR_API_KEY" https://your-open-webui-instance/api/models
(将 YOUR_API_KEY
替换为您的实际 API 密钥,并将 your-open-webui-instance
替换为您的 Open WebUI 地址。)
预期输出: 成功的请求将返回 200 OK
状态码和包含模型列表的 JSON 响应。
API 密钥身份验证设置 🔑
在监控 /api/models
端点之前,您需要在 Open WebUI 中启用 API 密钥并生成一个
-
启用 API 密钥(需要管理员权限)
- 以管理员身份登录 Open WebUI。
- 转到管理设置(通常在右上角菜单中)> 通用。
- 找到“启用 API 密钥”设置并打开它。
- 点击保存更改。
-
生成 API 密钥(用户设置)
- 转到您的用户设置(通常通过点击右上角的个人资料图标)。
- 导航到账户部分。
- 点击生成新 API 密钥。
- 为 API 密钥指定一个描述性名称(例如,“监控 API 密钥”)。
- 复制生成的 API 密钥并安全存储。您将需要它用于您的监控设置。
(可选但推荐): 为了安全最佳实践,请考虑专门为监控创建一个非管理员用户账户,并为该用户生成一个 API 密钥。如果监控 API 密钥泄露,这会限制潜在影响。
如果您在设置中没有看到 API 密钥生成选项,请联系您的 Open WebUI 管理员以确保 API 密钥已启用。
使用 Uptime Kuma 监控模型连接性 🐻
-
在 Uptime Kuma 中创建新监控
- 监控类型:“HTTP(s) - JSON 查询”。
- 名称:“Open WebUI 模型连接性检查”。
- URL:
http://your-open-webui-instance:8080/api/models
(替换为您的 URL)。 - 方法:“GET”。
- 预期状态码:
200
。
-
配置 JSON 查询(验证模型列表)
- JSON 查询:
$count(data[*])>0
- 解释: 这个 JSONata 查询检查 API 响应中(包含模型列表的)
data
数组的计数是否大于 0。换句话说,它验证至少返回了一个模型。
- 解释: 这个 JSONata 查询检查 API 响应中(包含模型列表的)
- 预期值:
true
(如果列出了模型,查询应返回true
)。
- JSON 查询:
-
添加身份验证头
- 在 Uptime Kuma 监控配置的“Header”(头)部分,点击“Add Header”(添加头)。
- 头名称:
Authorization
- 头值:
Bearer YOUR_API_KEY
(将YOUR_API_KEY
替换为您生成的 API 密钥)。
-
设置监控间隔: 建议间隔:
300 秒
(5 分钟)或更长,因为模型列表通常不会非常频繁地更改。
替代 JSON 查询(高级)
您可以使用更具体的 JSONata 查询来检查特定模型或提供商。以下是一些示例
- 检查至少一个 Ollama 模型:
$count(data[owned_by='ollama'])>0
- 检查特定模型是否存在(例如,'gpt-4o'):
$exists(data[id='gpt-4o'])
- 检查是否存在多个特定模型(例如,'gpt-4o' 和 'gpt-4o-mini'):
$count(data[id in ['gpt-4o', 'gpt-4o-mini']]) = 2
您可以在 jsonata.org 上使用示例 API 响应来测试和优化您的 JSONata 查询,以确保它们按预期工作。
级别 3:模型响应测试(深度健康检查)🤖
为了进行最全面的监控,您可以测试模型是否实际能够处理请求并生成响应。这涉及到向 /api/chat/completions
端点发送一个简单的聊天补全请求。
为何测试模型响应?
- 端到端验证: 确认整个模型管道(从 API 请求到模型响应)正在工作。
- 模型加载问题: 检测特定模型加载失败或无响应的问题。
- 后端处理错误: 捕获后端逻辑中可能阻止模型生成补全的错误。
如何使用 curl
测试(已认证的 POST 请求)
此测试需要一个 API 密钥,并向聊天补全端点发送一个带有简单消息的 POST 请求。
# Test model response - authenticated POST request
curl -X POST https://your-open-webui-instance/api/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [{"role": "user", "content": "Respond with the word HEALTHY"}],
"model": "llama3.1", # Replace with a model you expect to be available
"temperature": 0 # Set temperature to 0 for consistent responses
}'
(将 YOUR_API_KEY
、your-open-webui-instance
和 llama3.1
替换为您的实际值。)
预期输出: 成功的请求将返回 200 OK
状态码和包含聊天补全的 JSON 响应。您可以验证响应是否包含词语“HEALTHY”(或根据您的提示的类似预期响应)。
在 Uptime Kuma 中设置级别 3 监控将涉及配置一个 HTTP(s) 监控器,其中包含 POST 请求、JSON 主体、身份验证头以及可能用于验证响应内容的 JSON 查询。这是一个更高级的设置,可以根据您的具体需求进行自定义。
通过实施这些监控级别,您可以主动确保 Open WebUI 实例的健康、可靠性和性能,为用户提供始终积极的体验。