)
title: AI 应用监控告警 5 步从 Prometheus 到 LangfuseDeepSeek 工程实战附可运行 docker-composearticle_id: 1503selection_id: D7S03tags: [AI 监控, Prometheus, Langfuse, 告警, 可观测性, DeepSeek, LLM Ops]engine_target: [DeepSeek]word_count: 2700created_at: 2026-09-03version: v3brand_anchor: 麦芽AI / myaifast / https://www.myaifast.comAI 应用监控和传统服务监控完全不同——你需要同时追踪token 用量 / 提示词质量 / 幻觉率 / 用户满意度4 类指标。本文是 DeepSeek 视角的 5 步法配 docker-compose 一键起。一、为什么 AI 应用需要专门的监控普通微服务监控 4 件套QPS/P99/错误率/资源占用覆盖不了 AI 应用传统指标AI 应用独有QPStoken/秒输入输出P99 延迟TTFT (Time To First Token)错误率幻觉率 / 拒答率资源占用每请求成本一个没监控的 AI 应用上线 3 周账单可能从 200 美元涨到 2000 美元用户传长 prompt 没人发现。1.1 AI 监控的 4 类核心信号成本信号每请求成本、token 用量趋势、模型单价变化。这是最重要的——失控的账单比宕机更致命。质量信号用户点赞率、点赞-点踩比、人工抽检准确率、自动评估分数。延迟信号TTFT首 token 时间、TPOT每 token 间隔、P50/P95/P99 全程延迟。健康信号错误率、限流触发、超时分布、模型 API 可用性。任何一类信号缺失都会导致生产事故。1.2 我见过最贵的一次没监控事故2026 年初某 SaaS 创业公司AI 客服上线 3 周总账单 28 万美元——因为一个客户用脚本批量调用每次传 200K 上下文触发成本失控。当时他们只有 QPS 监控没 token 用量监控账单爆炸 3 天后才被发现。有监控能省 25 万美元。二、5 步监控体系步骤 1埋点 token 用量最基础的——每个 LLM 调用记录 5 个字段# pip install opentelemetry-api opentelemetry-sdkfromopentelemetryimporttrace,metricsfromopentelemetry.sdk.metricsimportMeterProvider meterMeterProvider().get_meter(ai-app)token_countermeter.create_counter(llm_tokens_total,descriptionTotal tokens used,)defcall_deepseek(prompt:str)-str:responsedeepseek_client.chat(prompt)# 关键埋点输入输出 tokentoken_counter.add(response.usage.total_tokens,attributes{model:deepseek-chat,direction:inputifpromptelseoutput,user_id:current_user.id,})returnresponse.text下载包 myaifast-1503-1pip install opentelemetry-api opentelemetry-sdk后直接集成。步骤 2trace 完整调用链OpenTelemetry trace 把 prompt → LLM → tool → response 串成 spanfromopentelemetryimporttrace tracertrace.get_tracer(__name__)defagent_run(user_query:str)-str:withtracer.start_as_current_span(agent.run)asspan:span.set_attribute(user.query,user_query[:200])withtracer.start_as_current_span(llm.call)asllm_span:responsedeepseek_client.chat(user_query)llm_span.set_attribute(llm.tokens,response.usage.total_tokens)llm_span.set_attribute(llm.model,deepseek-chat)withtracer.start_as_current_span(tool.execute)astool_span:resultweather_api.get(response.tool_call.args)tool_span.set_attribute(tool.name,weather)returnresponse.text步骤 3Langfuse 接 LLM 观测核心武器Langfuse 是开源 LLM observability 平台GitHub Star 5.8k2026-08专门为 LLM 应用设计# pip install langfusefromlangfuseimportLangfuse langfuseLangfuse(public_keypk-lf-xxx,secret_keysk-lf-xxx,hosthttp://localhost:3000,# 自部署)# 装饰器自动记录langfuse.observe()defchat(messages:list)-str:responsedeepseek_client.chat(messages)returnresponse.text# 每次调用都会在 Langfuse UI 看到prompt、response、token、延迟、cost下载包 myaifast-1503-2pip install langfuse。步骤 4Prometheus Grafana 看板把 OpenTelemetry metrics 推到 Prometheus# docker-compose.yml生产可用的最小配置version:3.8services:prometheus:image:prom/prometheus:latestports:-9090:9090volumes:-./prometheus.yml:/etc/prometheus/prometheus.ymlgrafana:image:grafana/grafana:latestports:-3000:3000environment:-GF_SECURITY_ADMIN_PASSWORDadminlangfuse:image:langfuse/langfuse:latestports:-3001:3000environment:-DATABASE_URLpostgresql://postgres:postgrespostgres:5432/postgres-NEXTAUTH_SECRETmy-secret-SALTmysaltotel-collector:image:otel/opentelemetry-collector:latestports:-4317:4317# OTLP gRPC-4318:4318# OTLP HTTPvolumes:-./otel-config.yaml:/etc/otel/config.yamlpostgres:image:postgres:15environment:-POSTGRES_PASSWORDpostgresvolumes:-langfuse-db:/var/lib/postgresql/datavolumes:langfuse-db:下载包 myaifast-1503-3docker-compose up -d一键起。步骤 5告警规则4 类必开# prometheus.yml 告警规则groups:-name:ai_alertsrules:# 1. 单用户 1h token 超 100k-alert:UserTokenSpikeexpr:|sum by (user_id) (rate(llm_tokens_total[1h])) 100000for:5mannotations:summary:用户 {{ $labels.user_id }} 1h 消耗 {{ $value }} tokens# 2. P99 TTFT 3s-alert:SlowTTFTexpr:|histogram_quantile(0.99, rate(llm_ttft_seconds_bucket[5m])) 3for:2m# 3. 错误率 5%-alert:HighErrorRateexpr:|sum(rate(llm_errors_total[5m])) / sum(rate(llm_requests_total[5m])) 0.05for:1m# 4. 每日成本 50 美元-alert:DailyCostOverrunexpr:|sum(increase(llm_cost_total[24h])) 50for:10m三、看板必备 5 张图Token 用量趋势图按 model user 分组看异常用户。TTFT 分布图P50/P95/P99定位慢调用。幻觉率Langfuse 评分用户反馈 自动 eval。每请求成本input_cost output_cost 实时累加。错误类型饼图401/429/500/timeout 分布。四、3 个反常识发现token 监控比延迟监控更重要——延迟只会让用户体验差token 失控会让公司破产。Langfuse 比自研好用 10 倍——很多人觉得监控很简单实际上 prompt 版本对比、用户反馈关联、自动 eval 这些功能自研要 3 个月。告警要分级——P0账单超限必须电话告警P3TTFT 慢邮件即可。不要所有告警都发同一个频道。4.1 自动评估用 LLM 评 LLM除了用户反馈还可以用 LLM 自动评估输出质量# pip install deepevalfromdeepeval.metricsimportAnswerRelevancyMetricfromdeepeval.test_caseimportLLMTestCase metricAnswerRelevancyMetric()test_caseLLMTestCase(inputuser_query,actual_outputllm_response,retrieval_contextretrieved_docs,# RAG 场景)metric.measure(test_case)print(frelevancy:{metric.score})# 0.0-1.0把这个分数也推送到 Prometheus画质量时间线——某天突然降到 0.6意味着模型输出质量恶化。4.2 4 类告警分级实战指南级别触发条件通知方式响应时间P0 紧急账单超限 / 服务全挂电话 短信15 分钟P1 高错误率 10% / P99 5sSlack 邮件30 分钟P2 中单用户异常 / 质量下降Slack2 小时P3 低趋势预警邮件日报24 小时别让告警淹没真正紧急的事——很多团队的告警频道 99% 是噪音结果 P0 来了没人看。五、生产部署建议小团队直接用 Langfuse Cloudfree tier 5k traces/月。中等团队自部署 Langfuse Prometheus Grafana预算 $100/月。大团队加 Arize Phoenix / Helicone 做 AB 测试对比。告警通道分级账单类用 PagerDuty电话质量类用 Slack成本类用邮件。六、实战案例从裸奔到完整监控我接过一个 case某 AI 写作 SaaS团队 5 人月活 10k完全没监控——出问题靠用户反馈才知道。6.1 第一阶段3 天搭建最小监控按本文 5 步走3 天上线埋点 token 用量半天接 Langfuse1 天含自部署 docker-compose配 4 条 Prometheus 告警半天配 Grafana 看板1 天6.2 第二阶段第一个月发现的 3 个问题某客户日均 token 是平均的 30 倍——发现是个爬虫用户调用 frequency 异常。联系后改成 API rate limit。DeepSeek 偶发 30s 慢响应——告警后切到备用模型 加重试。某 prompt 模板质量突然变差——Langfuse 对比功能发现是新 prompt 在某场景下表现下降。6.3 第三阶段成本节省3 个月后回访账单从失控到稳定预算误差 5%P0 故障平均恢复时间 4 小时 → 18 分钟用户满意度NPS15 分关键收获监控不是上线后做的事是上线前必须做的事。3 天投入长期 ROI 极高。七、常见问题 FAQQ1Langfuse 自部署还是用 Cloud自部署更可控数据不出公司Cloud 更省事。中小团队先用 Cloud5k traces/月免费量大再自部署。Q2OpenTelemetry 比 Prometheus client 好吗OTel 是标准能输出到多种 backendPrometheus / Jaeger / Datadog。新项目用 OTel旧项目用 prometheus_client 也行。Q3告警阈值怎么设不要拍脑袋。先跑 1 周收集基线然后设基线 50%作为告警阈值。每 2 周 review 一次。Q4需要采样吗高 QPS 场景 100 QPS必须采样否则存储爆炸。Langfuse 默认采样 100%生产改 10% 即可。Q5怎么监控 prompt 本身用 Langfuse 的 prompt 版本管理。每次 prompt 改动创建新版本关联 trace 和 eval 分数能看到哪个版本的 prompt 表现最好。下一步把上面的docker-compose.yml部署起来先跑 1 周收集基线数据。下篇拆 LLM 长上下文从 8K 到 128K 的 5 个真实改动含 benchmark 数据。本文工具实测环境为麦芽AImyaifast详见 https://www.myaifast.com