跳到主要内容

📈 Prometheus 指标

信息

✨ Prometheus 指标是 LiteLLM 企业版功能

企业版定价

获取免费 7 天试用密钥

LiteLLM 暴露了一个 /metrics 端点供 Prometheus 拉取(Poll)

快速开始

如果你正在使用 LiteLLM CLI 并通过 litellm --config proxy_config.yaml 启动,你需要执行 pip install prometheus_client==0.20.0此包已预装在 litellm Docker 镜像中

将以下内容添加到你的代理配置文件 config.yaml 中

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
callbacks: ["prometheus"]

启动代理

litellm --config config.yaml --debug

测试请求

curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
]
}'

/metrics 查看指标,访问 http://localhost:4000/metrics

http://localhost:4000/metrics

# <proxy_base_url>/metrics

虚拟密钥、团队、内部用户

用于按 用户、密钥、团队等 进行跟踪

指标名称描述
litellm_spend_metric总支出,按 "user", "key", "model", "team", "end-user" 分类
litellm_total_tokens输入 + 输出 token 数,按 "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "model" 分类
litellm_input_tokens输入 token 数,按 "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "model" 分类
litellm_output_tokens输出 token 数,按 "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "model" 分类

团队 - 预算

指标名称描述
litellm_team_max_budget_metric团队最大预算 标签: "team_id", "team_alias"
litellm_remaining_team_budget_metric团队剩余预算 (在 LiteLLM 上创建的团队) 标签: "team_id", "team_alias"
litellm_team_budget_remaining_hours_metric团队预算重置前的剩余小时数 标签: "team_id", "team_alias"

虚拟密钥 - 预算

指标名称描述
litellm_api_key_max_budget_metricAPI 密钥最大预算 标签: "hashed_api_key", "api_key_alias"
litellm_remaining_api_key_budget_metricAPI 密钥剩余预算 (在 LiteLLM 上创建的密钥) 标签: "hashed_api_key", "api_key_alias"
litellm_api_key_budget_remaining_hours_metricAPI 密钥预算重置前的剩余小时数 标签: "hashed_api_key", "api_key_alias"

虚拟密钥 - 速率限制

指标名称描述
litellm_remaining_api_key_requests_for_modelLiteLLM 虚拟 API 密钥的剩余请求数,仅当该虚拟密钥设置了模型特定的速率限制 (rpm) 时。标签: "hashed_api_key", "api_key_alias", "model"
litellm_remaining_api_key_tokens_for_modelLiteLLM 虚拟 API 密钥的剩余 token 数,仅当该虚拟密钥设置了模型特定的 token 限制 (tpm) 时。标签: "hashed_api_key", "api_key_alias", "model"

启动时初始化预算指标

如果你想让 litellm 发出所有密钥、团队的预算指标,无论它们是否接收到请求,请在 config.yaml 中将 prometheus_initialize_budget_metrics 设置为 true

工作原理

  • 如果 prometheus_initialize_budget_metrics 设置为 true
    • 每 5 分钟 litellm 运行一个 cron 作业从数据库读取所有密钥、团队
    • 然后它会为每个密钥、团队发出预算指标
    • 这用于填充 /metrics 端点上的预算指标
litellm_settings:
callbacks: ["prometheus"]
prometheus_initialize_budget_metrics: true

代理级别跟踪指标

用于跟踪 LiteLLM 代理的整体使用情况。

  • 跟踪流向代理的实际流量速率
  • 对代理发起的客户端请求及其失败次数
指标名称描述
litellm_proxy_failed_requests_metric来自代理的失败响应总数 - 客户端未从 litellm 代理获得成功响应。标签: "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "exception_status", "exception_class"
litellm_proxy_total_requests_metric发送到代理服务器的请求总数 - 跟踪客户端请求数量。标签: "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "status_code"

LLM 提供商指标

用于 LLM API 错误监控以及跟踪剩余速率限制和 token 限制

跟踪的标签

标签描述
litellm_model_nameLiteLLM 使用的 LLM 模型名称
requested_model请求中发送的模型
model_id部署的 model_id。由 LiteLLM 自动生成,每个部署都有一个唯一的 model_id
api_base部署的 API Base
api_providerLLM API 提供商,用于提供商。例如 (azure, openai, vertex_ai)
hashed_api_key请求的哈希化 API 密钥
api_key_alias使用的 API 密钥别名
team请求的团队
team_alias使用的团队别名
exception_status异常状态,如果有的话
exception_class异常类,如果有的话

成功与失败

指标名称描述
litellm_deployment_success_responses部署成功的 LLM API 调用总数。标签: "requested_model", "litellm_model_name", "model_id", "api_base", "api_provider", "hashed_api_key", "api_key_alias", "team", "team_alias"
litellm_deployment_failure_responses特定 LLM 部署失败的 LLM API 调用总数。标签: "requested_model", "litellm_model_name", "model_id", "api_base", "api_provider", "hashed_api_key", "api_key_alias", "team", "team_alias", "exception_status", "exception_class"
litellm_deployment_total_requests部署的 LLM API 调用总数 - 成功 + 失败。标签: "requested_model", "litellm_model_name", "model_id", "api_base", "api_provider", "hashed_api_key", "api_key_alias", "team", "team_alias"

剩余请求与 Token

指标名称描述
litellm_remaining_requests_metric跟踪 LLM API 部署返回的 x-ratelimit-remaining-requests。标签: "model_group", "api_provider", "api_base", "litellm_model_name", "hashed_api_key", "api_key_alias"
litellm_remaining_tokens跟踪 LLM API 部署返回的 x-ratelimit-remaining-tokens。标签: "model_group", "api_provider", "api_base", "litellm_model_name", "hashed_api_key", "api_key_alias"

部署状态

指标名称描述
litellm_deployment_state部署状态:0 = 健康,1 = 部分中断,2 = 完全中断。标签: "litellm_model_name", "model_id", "api_base", "api_provider"
litellm_deployment_latency_per_output_token部署的每个输出 token 延迟。标签: "litellm_model_name", "model_id", "api_base", "api_provider", "hashed_api_key", "api_key_alias", "team", "team_alias"

回退 (Failover) 指标

指标名称描述
litellm_deployment_cooled_down部署被 LiteLLM 负载均衡逻辑冷却的次数。标签: "litellm_model_name", "model_id", "api_base", "api_provider", "exception_status"
litellm_deployment_successful_fallbacks从主模型 -> 回退模型成功的请求回退次数。标签: "requested_model", "fallback_model", "hashed_api_key", "api_key_alias", "team", "team_alias", "exception_status", "exception_class"
litellm_deployment_failed_fallbacks从主模型 -> 回退模型失败的请求回退次数。标签: "requested_model", "fallback_model", "hashed_api_key", "api_key_alias", "team", "team_alias", "exception_status", "exception_class"

请求延迟指标

指标名称描述
litellm_request_total_latency_metricLiteLLM 代理服务器请求的总延迟(秒)- 跟踪标签 "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "model"
litellm_overhead_latency_metricLiteLLM 处理增加的延迟开销(秒)- 跟踪标签 "end_user", "hashed_api_key", "api_key_alias", "requested_model", "team", "team_alias", "user", "model"
litellm_llm_api_latency_metric仅 LLM API 调用的延迟(秒)- 跟踪标签 "model", "hashed_api_key", "api_key_alias", "team", "team_alias", "requested_model", "end_user", "user"
litellm_llm_api_time_to_first_token_metricLLM API 调用到第一个 token 的时间 - 跟踪标签 model, hashed_api_key, api_key_alias, team, team_alias[注:仅为流式请求发出]

[BETA]自定义指标

在 Prometheus 上跟踪上述所有事件的自定义指标。

  1. config.yaml 中定义自定义指标
model_list:
- model_name: openai/gpt-3.5-turbo
litellm_params:
model: openai/gpt-3.5-turbo
api_key: os.environ/OPENAI_API_KEY

litellm_settings:
callbacks: ["prometheus"]
custom_prometheus_metadata_labels: ["metadata.foo", "metadata.bar"]
  1. 使用自定义元数据标签发起请求
curl -L -X POST 'http://0.0.0.0:4000/v1/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <LITELLM_API_KEY>' \
-d '{
"model": "openai/gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What's in this image?"
}
]
}
],
"max_tokens": 300,
"metadata": {
"foo": "hello world"
}
}'
  1. 在你的 /metrics 端点检查自定义指标
... "metadata_foo": "hello world" ...

监控系统健康状态

要监控 litellm 相关服务(redis / postgres)的健康状态,请执行

model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: gpt-3.5-turbo
litellm_settings:
service_callback: ["prometheus_system"]
指标名称描述
litellm_redis_latencyredis 调用的直方图延迟
litellm_redis_failsredis 调用失败次数
litellm_self_latency成功 litellm api 调用的直方图延迟

数据库事务队列健康指标

使用这些指标监控数据库事务队列的健康状态。例如,监控内存中和 redis 缓冲区的大小。

指标名称描述存储类型
litellm_pod_lock_manager_size指示哪个 pod 持有写入数据库更新的锁。Redis
litellm_in_memory_daily_spend_update_queue_size内存中每日支出更新队列中的项目数。这些是每个用户的总支出日志。内存中 (In-Memory)
litellm_redis_daily_spend_update_queue_sizeRedis 每日支出更新队列中的项目数。这些是每个用户的总支出日志。Redis
litellm_in_memory_spend_update_queue_size密钥、用户、团队、团队成员等的内存中总支出值。内存中 (In-Memory)
litellm_redis_spend_update_queue_size密钥、用户、团队等的 Redis 总支出值。Redis

🔥 LiteLLM 维护的 Grafana 面板

LiteLLM 维护的 Grafana 面板链接

https://github.com/BerriAI/litellm/tree/main/cookbook/litellm_proxy_server/grafana_dashboard

这是你可以使用 LiteLLM Grafana 面板监控的指标截图

弃用指标

指标名称描述
litellm_llm_api_failed_requests_metric已弃用 请使用 litellm_proxy_failed_requests_metric
litellm_requests_metric已弃用 请使用 litellm_proxy_total_requests_metric

在 /metrics 端点添加认证

默认情况下,/metrics 端点是未认证的。

你可以通过在配置中设置以下内容来选择在 /metrics 端点启用 litellm 认证

litellm_settings:
require_auth_for_metrics_endpoint: true

常见问题

_created_total 指标有什么区别?

  • _created 指标是在代理启动时创建的指标
  • _total 指标是每次请求时递增的指标

你应该使用 _total 指标进行计数