[{"data":1,"prerenderedAt":770},["ShallowReactive",2],{"navigation_docs_zh":3,"blog_zh_slo-dashboard-health-checks":293},[4,18,51,254,267,280],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"入门",false,"/zh/docs/getting-started","zh/docs/1.getting-started",[10,14],{"title":11,"path":12,"stem":13},"简介","/zh/docs/getting-started/introduction","zh/docs/1.getting-started/1.introduction",{"title":15,"path":16,"stem":17},"快速开始","/zh/docs/getting-started/quick-start","zh/docs/1.getting-started/2.quick-start",{"title":19,"icon":6,"path":20,"stem":21,"children":22,"page":6},"功能","/zh/docs/features","zh/docs/2.features",[23,27,31,35,39,43,47],{"title":24,"path":25,"stem":26},"告警分诊","/zh/docs/features/alert-triage","zh/docs/2.features/2.alert-triage",{"title":28,"path":29,"stem":30},"事故调查","/zh/docs/features/incident-investigation","zh/docs/2.features/3.incident-investigation",{"title":32,"path":33,"stem":34},"部署验证","/zh/docs/features/deployment-verification","zh/docs/2.features/4.deployment-verification",{"title":36,"path":37,"stem":38},"数据探索","/zh/docs/features/data-exploration","zh/docs/2.features/5.data-exploration",{"title":40,"path":41,"stem":42},"知识库","/zh/docs/features/knowledges","zh/docs/2.features/6.knowledges",{"title":44,"path":45,"stem":46},"Castrel Proxy","/zh/docs/features/castrel-proxy","zh/docs/2.features/7.castrel-proxy",{"title":48,"path":49,"stem":50},"自动化","/zh/docs/features/automations","zh/docs/2.features/8.automations",{"title":52,"icon":6,"path":53,"stem":54,"children":55},"集成","/zh/docs/integrations","zh/docs/3.integrations/index",[56,57,62,67,72,77,81,85,89,94,99,104,109,113,117,122,127,131,136,141,146,151,156,160,165,170,174,178,183,188,193,198,203,208,212,216,220,224,229,234,239,244,249],{"title":52,"path":53,"stem":54},{"title":58,"path":59,"stem":60,"icon":61},"Prometheus","/zh/docs/integrations/prometheus","zh/docs/3.integrations/1.prometheus","i-simple-icons-prometheus",{"title":63,"path":64,"stem":65,"icon":66},"AWS","/zh/docs/integrations/aws","zh/docs/3.integrations/10.aws","i-simple-icons-amazonwebservices",{"title":68,"path":69,"stem":70,"icon":71},"阿里云（Aliyun）","/zh/docs/integrations/aliyun","zh/docs/3.integrations/12.aliyun","i-simple-icons-alibabacloud",{"title":73,"path":74,"stem":75,"icon":76},"腾讯云（Tencent Cloud）","/zh/docs/integrations/tencent-cloud","zh/docs/3.integrations/13.tencent-cloud","i-lucide-plug",{"title":78,"path":79,"stem":80,"icon":76},"华为云（Huawei Cloud）","/zh/docs/integrations/huaweicloud","zh/docs/3.integrations/14.huaweicloud",{"title":82,"path":83,"stem":84,"icon":76},"火山引擎（Volcengine）","/zh/docs/integrations/volcengine","zh/docs/3.integrations/15.volcengine",{"title":86,"path":87,"stem":88,"icon":76},"轻帆云（QingFanYun）","/zh/docs/integrations/qingfanyun","zh/docs/3.integrations/16.qingfanyun",{"title":90,"path":91,"stem":92,"icon":93},"Grafana","/zh/docs/integrations/grafana","zh/docs/3.integrations/17.grafana","i-simple-icons-grafana",{"title":95,"path":96,"stem":97,"icon":98},"VictoriaMetrics","/zh/docs/integrations/victoriametrics","zh/docs/3.integrations/18.victoriametrics","i-simple-icons-victoriametrics",{"title":100,"path":101,"stem":102,"icon":103},"New Relic","/zh/docs/integrations/new-relic","zh/docs/3.integrations/19.new-relic","i-simple-icons-newrelic",{"title":105,"path":106,"stem":107,"icon":108},"Elasticsearch","/zh/docs/integrations/elasticsearch","zh/docs/3.integrations/2.elasticsearch","i-simple-icons-elasticsearch",{"title":110,"path":111,"stem":112,"icon":76},"Zabbix","/zh/docs/integrations/zabbix","zh/docs/3.integrations/20.zabbix",{"title":114,"path":115,"stem":116,"icon":76},"监控宝（JianKongBao）","/zh/docs/integrations/jiankongbao","zh/docs/3.integrations/21.jiankongbao",{"title":118,"path":119,"stem":120,"icon":121},"PagerDuty","/zh/docs/integrations/pagerduty","zh/docs/3.integrations/22.pagerduty","i-simple-icons-pagerduty",{"title":123,"path":124,"stem":125,"icon":126},"Sentry","/zh/docs/integrations/sentry","zh/docs/3.integrations/23.sentry","i-simple-icons-sentry",{"title":128,"path":129,"stem":130,"icon":76},"Freshworks / Freshservice","/zh/docs/integrations/freshworks","zh/docs/3.integrations/24.freshworks",{"title":132,"path":133,"stem":134,"icon":135},"Linear","/zh/docs/integrations/linear","zh/docs/3.integrations/25.linear","i-simple-icons-linear",{"title":137,"path":138,"stem":139,"icon":140},"ClickHouse","/zh/docs/integrations/clickhouse","zh/docs/3.integrations/26.clickhouse","i-simple-icons-clickhouse",{"title":142,"path":143,"stem":144,"icon":145},"Kubernetes","/zh/docs/integrations/kubernetes","zh/docs/3.integrations/27.kubernetes","i-simple-icons-kubernetes",{"title":147,"path":148,"stem":149,"icon":150},"Terraform Cloud / HCP Terraform","/zh/docs/integrations/terraform","zh/docs/3.integrations/28.terraform","i-simple-icons-terraform",{"title":152,"path":153,"stem":154,"icon":155},"Jenkins","/zh/docs/integrations/jenkins","zh/docs/3.integrations/29.jenkins","i-simple-icons-jenkins",{"title":157,"path":158,"stem":159,"icon":93},"Grafana Loki","/zh/docs/integrations/grafana-loki","zh/docs/3.integrations/3.grafana-loki",{"title":161,"path":162,"stem":163,"icon":164},"Ansible / AWX","/zh/docs/integrations/ansible","zh/docs/3.integrations/30.ansible","i-simple-icons-ansible",{"title":166,"path":167,"stem":168,"icon":169},"GitLab","/zh/docs/integrations/gitlab","zh/docs/3.integrations/31.gitlab","i-simple-icons-gitlab",{"title":171,"path":172,"stem":173,"icon":76},"钉钉（DingTalk）","/zh/docs/integrations/dingtalk","zh/docs/3.integrations/32.dingtalk",{"title":175,"path":176,"stem":177,"icon":76},"飞书（Feishu / Lark）","/zh/docs/integrations/feishu","zh/docs/3.integrations/33.feishu",{"title":179,"path":180,"stem":181,"icon":182},"Telegram","/zh/docs/integrations/telegram","zh/docs/3.integrations/34.telegram","i-simple-icons-telegram",{"title":184,"path":185,"stem":186,"icon":187},"Email","/zh/docs/integrations/email","zh/docs/3.integrations/35.email","i-simple-icons-gmail",{"title":189,"path":190,"stem":191,"icon":192},"微信企业机器人（Weixin Clawbot）","/zh/docs/integrations/weixin-clawbot","zh/docs/3.integrations/36.weixin-clawbot","i-simple-icons-wechat",{"title":194,"path":195,"stem":196,"icon":197},"Notion","/zh/docs/integrations/notion","zh/docs/3.integrations/37.notion","i-simple-icons-notion",{"title":199,"path":200,"stem":201,"icon":202},"Confluence","/zh/docs/integrations/confluence","zh/docs/3.integrations/38.confluence","i-simple-icons-confluence",{"title":204,"path":205,"stem":206,"icon":207},"Google Docs","/zh/docs/integrations/google-docs","zh/docs/3.integrations/39.google-docs","i-simple-icons-googledocs",{"title":209,"path":210,"stem":211,"icon":93},"Grafana Tempo","/zh/docs/integrations/grafana-tempo","zh/docs/3.integrations/4.grafana-tempo",{"title":213,"path":214,"stem":215,"icon":76},"钉钉文档（DingTalk Docs）","/zh/docs/integrations/dingtalk-docs","zh/docs/3.integrations/40.dingtalk-docs",{"title":217,"path":218,"stem":219,"icon":76},"LDAP","/zh/docs/integrations/ldap","zh/docs/3.integrations/41.ldap",{"title":221,"path":222,"stem":223,"icon":76},"Dify","/zh/docs/integrations/dify","zh/docs/3.integrations/42.dify",{"title":225,"path":226,"stem":227,"icon":228},"自定义 MCP（Custom MCP）","/zh/docs/integrations/custom-mcp","zh/docs/3.integrations/43.custom-mcp","i-simple-icons-anthropic",{"title":230,"path":231,"stem":232,"icon":233},"GitHub","/zh/docs/integrations/github","zh/docs/3.integrations/5.github","i-simple-icons-github",{"title":235,"path":236,"stem":237,"icon":238},"Slack","/zh/docs/integrations/slack","zh/docs/3.integrations/6.slack","i-simple-icons-slack",{"title":240,"path":241,"stem":242,"icon":243},"Vercel","/zh/docs/integrations/vercel","zh/docs/3.integrations/7.vercel","i-simple-icons-vercel",{"title":245,"path":246,"stem":247,"icon":248},"Graylog","/zh/docs/integrations/graylog","zh/docs/3.integrations/8.graylog","i-simple-icons-graylog",{"title":250,"path":251,"stem":252,"icon":253},"Datadog","/zh/docs/integrations/datadog","zh/docs/3.integrations/9.datadog","i-simple-icons-datadog",{"title":255,"path":256,"stem":257,"children":258,"page":6},"开放平台","/zh/docs/open-platform","zh/docs/4.open-platform",[259,263],{"title":260,"path":261,"stem":262},"身份认证","/zh/docs/open-platform/authentication","zh/docs/4.open-platform/1.authentication",{"title":264,"path":265,"stem":266},"知识管理 API","/zh/docs/open-platform/knowledges","zh/docs/4.open-platform/2.knowledges",{"title":268,"path":269,"stem":270,"children":271,"page":6},"更多","/zh/docs/more","zh/docs/5.more",[272,276],{"title":273,"path":274,"stem":275},"路线图","/zh/docs/more/roadmap","zh/docs/5.more/1.roadmap",{"title":277,"path":278,"stem":279},"支持","/zh/docs/more/support","zh/docs/5.more/2.support",{"title":281,"path":282,"stem":283,"children":284,"page":6},"安全","/zh/docs/security","zh/docs/6.security",[285,289],{"title":286,"path":287,"stem":288},"隐私政策","/zh/docs/security/privacy-policy","zh/docs/6.security/1.privacy-policy",{"title":290,"path":291,"stem":292},"服务条款","/zh/docs/security/terms-of-service","zh/docs/6.security/2.terms-of-service",{"id":294,"title":295,"body":296,"description":758,"extension":759,"meta":760,"navigation":6,"path":766,"seo":767,"stem":768,"__hash__":769},"blogs_zh/zh/blogs/3.slo-dashboard-health-checks.md","从 SLO 到健康巡检：可视化仪表盘如何成为应用的运行基线",{"type":297,"value":298,"toc":748},"minimark",[299,303,311,314,317,322,325,328,350,353,357,364,367,378,381,384,399,410,414,417,505,508,511,539,542,548,551,554,561,580,583,589,593,596,599,616,619,622,626,629,635,638,706,709,712,729,732,736,739,745],[300,301,302],"p",{},"写下一个 SLO 很容易，让它真正服务于日常运维却并不简单。",[300,304,305,306,310],{},"多数团队已经接入了指标、调用链、仪表盘和告警规则，但往往缺少一个可以共同确认、且有数据依据的答案：",[307,308,309],"strong",{},"为了让业务正常运转，究竟什么必须保持健康？"," 将这个答案转化为服务等级目标，不只是选一个百分比。团队还需要识别关键用户旅程、找到有代表性的流量窗口、验证底层查询、依据数据设定目标，并最终形成可持续使用的仪表盘。",[300,312,313],{},"Castrel 可以接管这段衔接工作。用户为应用发起 SLO 请求后，Castrel 可以读取应用上下文、探索可观测性数据、定义服务目标、生成可视化仪表盘，并将结果沉淀为应用知识。最终得到的不只是文档或图表，而是一套可供后续健康巡检引用的运行基线。",[300,315,316],{},"这也是这类能力的核心价值：SLO 不再只是某个时刻写下的规则，而会变成“人可以查看、Agent 也可以复用”的应用运行上下文。团队后续做巡检、复盘或目标校准时，可以从同一套目标、阈值、查询和历史依据出发，而不是每次重新拼装判断标准。",[318,319,321],"h2",{"id":320},"真正的问题slo-常常与日常运维脱节","真正的问题：SLO 常常与日常运维脱节",[300,323,324],{},"在很多团队中，SLO 工作开始时目标明确，最后却成为一份孤立的产物。目标可能写在文档里，几条 PromQL 查询放在仪表盘中，服务负责人也清楚哪条链路更重要；但这些判断依据分散在不同的人和工具之间。",[300,326,327],{},"于是，每次建立或复核 SLO 都要重复一套人工流程：",[329,330,331,335,338,341,344,347],"ol",{},[332,333,334],"li",{},"查找服务清单、拓扑、运行手册和历史巡检报告。",[332,336,337],{},"判断哪条用户旅程真正影响核心业务。",[332,339,340],{},"在指标、调用链和 Kubernetes 数据间切换，找到有代表性的业务流量时段。",[332,342,343],{},"检查错误率、延迟、可用性、重启和资源压力。",[332,345,346],{},"将观察结果转换为目标与仪表盘查询。",[332,348,349],{},"到下一次健康巡检或复盘时，再重新建立这些上下文。",[300,351,352],{},"难点并不是工程师不会做这项工作，而是过程割裂、难以复核，也难以复用。没有目标依据的仪表盘很难建立信任；没有实时视图的 SLO 很难运营；而缺少原始业务上下文的健康巡检，往往又会回到重复收集指标的起点。",[318,354,356],{"id":355},"一个典型-slo-工作流先从业务旅程出发而不是先选指标","一个典型 SLO 工作流：先从业务旅程出发，而不是先选指标",[300,358,359],{},[360,361],"img",{"alt":362,"src":363},"第一阶段：用户通过 /slo 发起请求，Castrel 开始读取应用上下文、巡检 SOP 与可观测性数据。","/images/blog/3.slo-dashboard-health-checks/1-slo-zh-v2.mp4",[300,365,366],{},"以一个典型的微服务火车票预订应用为例，识别出的核心购票路径是：",[368,369,375],"pre",{"className":370,"code":372,"language":373,"meta":374},[371],"language-text","ts-ui-dashboard → ts-travel-plan-service → ts-order-service\n","text","",[376,377,372],"code",{"__ignoreMap":374},[300,379,380],{},"创建 SLO 时，不能默认最新数据就能代表正常业务基线。在这次工作流中，近期流量很低，最近 24 小时的视图无法代表正常用户行为。Castrel 先读取应用上下文和既有巡检 SOP，再查看 7 天的 Prometheus 数据，定位到存在有效业务流量的历史窗口。",[300,382,383],{},"它以 7 月 28 日至 7 月 31 日作为工作基线，检查三类核心信号：",[385,386,387,393,396],"ul",{},[332,388,389,392],{},[376,390,391],{},"prod-chaos"," 命名空间内各服务的错误率；",[332,394,395],{},"订单服务及其他活跃服务的 P95 延迟；",[332,397,398],{},"Kubernetes Deployment 就绪率。",[300,400,401,402,405,406,409],{},"数据之所以重要，是因为它直接影响目标如何设定。在活跃窗口中，多数有流量服务的错误率处于 5–15% 区间；",[376,403,404],{},"ts-consign-service"," 则持续出现 100% 错误。",[376,407,408],{},"ts-order-service"," 的 P95 延迟通常处于 1–8 秒，Deployment 就绪率保持在 100%。这些数字只描述本次典型工作流中的观测结果，并不是可直接套用到所有系统的通用 SLO 标准。",[318,411,413],{"id":412},"castrel-将数据探索转化为可运营的仪表盘","Castrel 将数据探索转化为可运营的仪表盘",[300,415,416],{},"基于业务旅程、历史基线和实时数据模型，Castrel 生成了 4 条 OpenSLO 定义。",[418,419,420,440],"table",{},[421,422,423],"thead",{},[424,425,426,430,434,437],"tr",{},[427,428,429],"th",{},"SLO",[427,431,433],{"align":432},"right","目标",[427,435,436],{},"范围",[427,438,439],{},"运营意义",[441,442,443,460,476,491],"tbody",{},[424,444,445,449,452,457],{},[446,447,448],"td",{},"购票旅程可用性",[446,450,451],{"align":432},"≥ 95%",[446,453,454,456],{},[376,455,391],{}," 命名空间内服务",[446,458,459],{},"保护核心交易链路",[424,461,462,465,468,473],{},[446,463,464],{},"基础设施就绪率",[446,466,467],{"align":432},"100%",[446,469,470,472],{},[376,471,391],{}," 内 Kubernetes Deployment",[446,474,475],{},"识别平台级不可用",[424,477,478,481,484,488],{},[446,479,480],{},"订单服务 P95 延迟",[446,482,483],{"align":432},"≤ 10 秒",[446,485,486],{},[376,487,408],{},[446,489,490],{},"识别影响下单体验的性能退化",[424,492,493,496,499,502],{},[446,494,495],{},"服务活跃覆盖率",[446,497,498],{"align":432},"≥ 60%",[446,500,501],{},"有流量服务 / 已观测服务",[446,503,504],{},"识别服务静默与渐进式退化",[300,506,507],{},"其中，购票可用性使用非错误请求数与总请求数的比值；基础设施就绪率比较可用副本与期望副本；延迟目标跟踪订单服务的 P95 Span 时延；服务活跃覆盖率则让低流量和服务静默不再只是空白图表。",[300,509,510],{},"这些目标会进一步渲染为 10 个面板，而不是停留在配置文件中：",[329,512,513,515,517,519,521,524,527,530,533,536],{},[332,514,448],{},[332,516,464],{},[332,518,480],{},[332,520,495],{},[332,522,523],{},"各服务错误率",[332,525,526],{},"各服务请求速率",[332,528,529],{},"各服务 P95 延迟",[332,531,532],{},"30 分钟窗口内的 Pod 重启健康度",[332,534,535],{},"使用率超过 85% 的容器内存风险",[332,537,538],{},"错误率 Top 5 服务",[300,540,541],{},"这样，团队可以在同一个视图中看到业务目标及其支撑信号：用户旅程是否健康、基础设施是否就绪、哪些服务仍在承载流量，以及哪些资源或稳定性信号需要关注。",[300,543,544],{},[360,545],{"alt":546,"src":547},"第二阶段：Castrel 将业务旅程、历史基线和 Prometheus 查询转化为包含 SLO 规则的仪表盘。","/images/blog/3.slo-dashboard-health-checks/2-%E7%94%9F%E6%88%90dashboard-zh.mp4",[318,549,550],{"id":550},"验证本身也是结果的一部分",[300,552,553],{},"生成一条查询，与生成一个可用面板，并不是同一件事。",[300,555,556,557,560],{},"在这次工作流中，容器内存风险面板最初加载失败。Castrel 直接在 Prometheus 中验证查询，定位到指标关联时出现了重复时序：同一个 Pod 和容器标签组合因为 ",[376,558,559],{},"id"," 标签不同，对应了多个时序。",[300,562,563,564,567,568,571,572,575,576,579],{},"随后，Castrel 通过 ",[376,565,566],{},"sum by (pod, container)"," 聚合查询两侧，以 ",[376,569,570],{},"pod"," 和 ",[376,573,574],{},"container"," 进行关联，并加入 ",[376,577,578],{},"or vector(0)","，避免没有匹配数据时返回空结果。修复后的查询成功返回数据，仪表盘配置也随之更新。",[300,581,582],{},"这一区别很重要。最终结果并不只是“生成一份 YAML”，而是包含真实数据源验证、查询失败诊断和已更新可加载仪表盘的一套可检查工作产物。",[300,584,585],{},[360,586],{"alt":587,"src":588},"第三阶段：仪表盘生成后，团队可以直接查看服务目标、阈值、趋势图和支撑信号。","/images/blog/3.slo-dashboard-health-checks/3-dashboard-zh.mp4",[318,590,592],{"id":591},"仪表盘生成后为什么能服务于健康巡检","仪表盘生成后，为什么能服务于健康巡检",[300,594,595],{},"仪表盘可以立即用于观察运行状态，但它的长期价值来自于被沉淀为应用知识。",[300,597,598],{},"当 SLO 仪表盘归档到应用后，保留下来的不只是可视化面板，还包括：",[385,600,601,604,607,610,613],{},[332,602,603],{},"服务目标与阈值；",[332,605,606],{},"Prometheus 查询和服务范围；",[332,608,609],{},"关键业务旅程与优先级分层；",[332,611,612],{},"设定目标时所依据的历史基线；",[332,614,615],{},"关于低流量、数据缺口和已知持续性问题的说明。",[300,617,618],{},"这为后续健康巡检提供了共同起点。巡检不需要每次重新回答“哪些服务最重要”或“正常状态应当是什么样”，而可以围绕已有 SLO 评估目标是否偏离，查看支撑面板，并以业务语言输出结果。",[300,620,621],{},"但 SLO 不是健康巡检的全部。4 条 SLO 负责定义必须优先保护的业务目标和判断门槛；完整巡检还要扩大到支撑这些目标、解释偏离原因的信号：全服务错误率与请求量、各服务延迟、当前告警、Pod 重启、内存风险、调用链和日志。SLO 让巡检知道先看什么、偏离意味着什么；跨信号分析则回答偏离发生在哪里、是否正在扩大，以及下一步应如何排查。",[318,623,625],{"id":624},"一次巡检如何使用仪表盘而不止使用-4-条规则","一次巡检如何使用仪表盘，而不止使用 4 条规则",[300,627,628],{},"在后续的一次健康巡检中，Castrel 先读取已归档的 SLO，将购票可用性、基础设施就绪率、订单服务 P95 延迟和服务活跃覆盖率作为巡检主线。随后，它并行检查 24 小时当前窗口与 7 天对照窗口内的服务错误率和请求量、全服务 P95 延迟、Prometheus 告警、Pod 重启与容器内存，并按服务拓扑和优先级汇总结果。",[300,630,631],{},[360,632],{"alt":633,"src":634},"第四阶段：后续健康巡检读取已归档的 SLO 仪表盘，把规则判定与跨信号分析结合起来。","/images/blog/3.slo-dashboard-health-checks/4-%E4%BD%BF%E7%94%A8dashboard-zh.mp4",[300,636,637],{},"这使巡检可以区分“规则是否达标”与“为什么会偏离”：",[418,639,640,653],{},[421,641,642],{},[424,643,644,647,650],{},[427,645,646],{},"巡检层次",[427,648,649],{},"巡检读取的信号",[427,651,652],{},"本次巡检如何解释",[441,654,655,666,677,695],{},[424,656,657,660,663],{},[446,658,659],{},"服务目标",[446,661,662],{},"购票可用性、基础设施就绪率、订单 P95 延迟、服务活跃覆盖率",[446,664,665],{},"购票可用性曾降至 0.54%，订单服务 P95 出现 14.3 秒尖峰；但 41 个 Deployment 仍全部 1/1 就绪",[424,667,668,671,674],{},[446,669,670],{},"服务运行状态",[446,672,673],{},"各服务错误率、请求速率、P95 延迟、错误率 Top 5",[446,675,676],{},"旅行、支付、订单和网关链路出现间歇性高错误率或延迟尖峰，巡检据此定位需要优先关注的服务",[424,678,679,682,685],{},[446,680,681],{},"基础设施与资源风险",[446,683,684],{},"Pod 重启、容器内存、Deployment 副本",[446,686,687,690,691,694],{},[376,688,689],{},"ts-ticket-office-service"," 存在持续周期性重启，",[376,692,693],{},"ts-travel-service"," 内存约 87%；二者是需要跟踪的风险，但不是本次所有服务延迟尖峰的充分解释",[424,696,697,700,703],{},[446,698,699],{},"告警与根因下钻",[446,701,702],{},"当前 firing 告警、历史告警、Trace、日志",[446,704,705],{},"巡检发现多条错误率和延迟告警后，可继续从 Prometheus 进入慢 Span、错误 Span 与相关日志，验证是共享依赖、调用链还是服务自身异常",[300,707,708],{},"因此，即使基础设施就绪率保持 100%，巡检也不会把应用直接判为健康。它会继续检查是否存在服务目标违反、错误率升高、延迟尖峰、告警集中触发或资源风险，并把这些信号关联回受影响的业务旅程。",[300,710,711],{},"例如，后续巡检可以区分以下情况：",[385,713,714,717,720,723,726],{},[332,715,716],{},"Tier-1 购票可用性的错误预算正在快速消耗；",[332,718,719],{},"基础设施就绪率偏离了 100% 的基线；",[332,721,722],{},"可用性看似正常，但订单延迟正在上升；",[332,724,725],{},"部分服务不再有流量，导致服务活跃覆盖率下降；",[332,727,728],{},"内存压力或重启活动正在增加，但尚未影响用户旅程。",[300,730,731],{},"SLO 基线并不能替代工程判断。当流量模式发生变化、数据源不完整或产品能力演进时，团队仍需要复核并重新校准目标。在本次工作流中，应用处于低流量状态，因此仪表盘明确记录了一个前提：正常流量恢复后，需要重新评估目标是否仍然合理。保留这个前提与保留目标数值同样重要。",[318,733,735],{"id":734},"从一次请求到可复用的运行基线","从一次请求，到可复用的运行基线",[300,737,738],{},"SLO 自动化的价值不只是更快地生成仪表盘，更在于让目标定义与持续运营形成连续工作流。",[368,740,743],{"className":741,"code":742,"language":373,"meta":374},[371],"应用上下文 + 可观测性数据\n    → 识别业务旅程与历史基线\n    → 生成并验证 OpenSLO 定义\n    → 可视化仪表盘\n    → 归档为应用知识\n    → 全量健康巡检：目标判定 + 跨信号解释\n    → 持续校准\n",[376,744,742],{"__ignoreMap":374},[300,746,747],{},"通过这种方式，SLO 不再只是文档里的一次承诺，而成为可视化、可验证、可持续维护的运行基线：它为健康巡检提供业务优先级与判定标准；巡检再结合全服务、基础设施、告警、调用链和日志信号，解释系统真实的运行状态，并让团队可以随着应用变化持续修正服务目标。",{"title":374,"searchDepth":749,"depth":749,"links":750},2,[751,752,753,754,755,756,757],{"id":320,"depth":749,"text":321},{"id":355,"depth":749,"text":356},{"id":412,"depth":749,"text":413},{"id":550,"depth":749,"text":550},{"id":591,"depth":749,"text":592},{"id":624,"depth":749,"text":625},{"id":734,"depth":749,"text":735},"了解 Castrel 如何生成包含图表和规则的 SLO 可视化仪表盘，并让健康巡检以服务目标为主线，结合告警、调用链、日志与基础设施信号持续判断应用状态。","md",{"date":761,"order":762,"category":763,"image":764},"2026-08-04",3,"产品",{"src":765},"/images/blog/3.slo-dashboard-health-checks/header-zh.png","/zh/blogs/slo-dashboard-health-checks",{"ogImage":765,"title":295,"description":758},"zh/blogs/3.slo-dashboard-health-checks","RzmdNPzLf62EhMfSQ0mUMGafaiGPRThM42OD1QA1j_0",1787301618547]