[{"data":1,"prerenderedAt":1007},["ShallowReactive",2],{"navigation_docs_zh":3,"blog_zh_disk-capacity-forecast":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":995,"extension":996,"meta":997,"navigation":6,"path":1003,"seo":1004,"stem":1005,"__hash__":1006},"blogs_zh/zh/blogs/4.disk-capacity-forecast.md","从被动救火到容量规划：Castrel 如何预测磁盘增长趋势",{"type":297,"value":298,"toc":979},"minimark",[299,303,306,309,314,317,320,323,336,339,347,350,358,365,368,371,397,404,407,418,421,424,433,436,442,446,456,463,592,612,615,621,624,630,633,645,690,693,707,710,765,775,778,789,792,796,799,806,809,816,823,826,829,879,882,888,891,896,899,902,905,919,922,966,969,976],[300,301,302],"p",{},"存储从不停止增长，但很少有团队能够回答一个比\"现在的使用率是多少\"更有价值的问题。",[300,304,305],{},"运维团队真正需要知道的是：当前增长趋势是否可持续、容量大概什么时候会达到风险阈值，以及某次突然变化究竟是正常的业务增长，还是一次运维操作。如果缺少这些答案，容量管理就只能停留在被动响应：盯着仪表盘，等待静态阈值告警，然后临时清理文件或申请扩容。",[300,307,308],{},"容量规划应该反过来进行。它应该从一条经过测量的增长基线开始，将基线转化为预测，再把预测结果连接到具体决策——继续观察、展开调查，还是开始扩容。而更关键的是，这个过程不应该依赖运维人员记得去检查，而是应该由 Agent 自主、持续地执行。这正是 Castrel 要解决的问题。",[310,311,313],"h2",{"id":312},"真正的问题阈值告警往往来得太晚","真正的问题：阈值告警往往来得太晚",[300,315,316],{},"多数团队依赖\"周期性人工巡检 + 静态阈值告警\"的模式管理磁盘容量。运维人员通过监控平台查询各主机或数据中心的磁盘使用情况。当某个分区越过预设阈值后，告警才会触发。随后有人登录主机、搜索大文件，并凭借经验判断这究竟是正常的业务增长，还是日志、备份堆积等其他问题。",[300,318,319],{},"如果判断结果是需要扩容，下一步通常是粗略估算所需容量，再提交预算和采购申请。如果问题看起来只是暂时性的，响应方式则是手动清理过期日志、无效备份或孤儿文件。当处置来得太晚，分区被占满，业务就会直接受到影响：写入失败、数据库挂起，甚至需要立即展开事故救火。",[300,321,322],{},"这种模式存在三个结构性短板：",[324,325,326,330,333],"ul",{},[327,328,329],"li",{},"它只能观测当前状态，却无法量化当前趋势会走向哪里。",[327,331,332],{},"它无法可靠地区分平稳增长和突然变化，因此很难判断告警优先级。",[327,334,335],{},"容量申请缺少可复核的时序证据，难以说明需要多少容量以及什么时候需要。",[300,337,338],{},"随着实例规模增长，人工巡检的工作量也会增加。团队很容易陷入\"告警 → 临时清理 → 再次告警\"的循环，而真正可能影响业务的中断风险始终存在。",[300,340,341,342,346],{},"因此，运维真正需要回答的问题不只是**\"容量是否已经越过阈值？\"",[343,344,345],"strong",{},"，还包括","\"按照当前增长趋势，什么时候会越过阈值？如果趋势突然变化，又是什么原因导致的？\"**",[310,348,349],{"id":349},"从原始指标到增长基线",[300,351,352,353,357],{},"在一个典型场景中，运维团队希望比较各数据中心的磁盘容量增长趋势，并确定哪些站点需要优先关注。Castrel Agent 可以直接读取 Prometheus 兼容的指标——例如 ",[354,355,356],"code",{},"disk_capacity_bytes{datacenter=\"phx1\"}","——而不需要运维人员逐台主机手动拉取数据。",[300,359,360],{},[361,362],"img",{"alt":363,"src":364},"Castrel 读取两个月的 Prometheus 磁盘容量数据，运行 Holt-Winters 预测算法，输出带有 95% 预测区间的 30 天预测曲线，并叠加实际值与训练期内的预测拟合曲线。","https://on72nnontavb3pup.public.blob.vercel-storage.com/images/blog/4.disk-capacity-forecast/4-screenshot-zh.png",[300,366,367],{},"在本次运行中，Castrel 使用了 2025-07-01 至 2025-08-30 的约两个月每日采样数据，采样步长为 86,400 秒。系统采用 7 天季节性周期的 Holt-Winters 模型，对 2025-09-01 至 2025-09-30 生成 30 天预测，并给出 95% 预测区间。",[300,369,370],{},"在继续之前，需要明确几个关键概念的区别：",[324,372,373,379,385,391],{},[327,374,375,378],{},[343,376,377],{},"总容量（Capacity）","：数据中心可用的磁盘总空间。",[327,380,381,384],{},[343,382,383],{},"已使用容量（Usage）","：实际被占用的磁盘空间。",[327,386,387,390],{},[343,388,389],{},"使用率（Utilization）","：已使用容量 / 总容量，表示磁盘填充程度。",[327,392,393,396],{},[343,394,395],{},"预测区间（Prediction Interval）","：预测值可能波动的范围，反映的是预测的不确定性，而不是预测的准确率。",[300,398,399,400,403],{},"本次实验的训练数据来自 ",[354,401,402],{},"disk_capacity_bytes","，即各数据中心的磁盘总容量。这意味着模型预测的是容量基线的变化趋势。后文将进一步展示如何将容量预测与使用量数据结合，推导出完整的容量风险时间线。",[300,405,406],{},"输出结果不只是一个月末数字，而是包括：",[324,408,409,412,415],{},[327,410,411],{},"每个数据中心的预测增长轨迹；",[327,413,414],{},"预测区间的上下界，表示预测的不确定性范围；",[327,416,417],{},"预测期内的实际值，以便验证预测结果，而不是默认预测一定正确。",[310,419,420],{"id":420},"预测效果验证",[300,422,423],{},"一个有意义的预测评估，需要把两种在图表上看起来相似、但在运维含义上不同的情况区分开：",[425,426,427,430],"ol",{},[327,428,429],{},"**自然增长：**容量按照历史规律变化。在这种情况下，预测误差反映的是模型对增长趋势的捕捉能力。",[327,431,432],{},"**容量基线变化：**预测期间发生了人为扩容或下线。这类偏离不能简单归因于模型预测能力，因为预测期间被预测对象本身发生了结构性变化。",[300,434,435],{},"生成的报告保留了每个站点的每日预测值、预测区间和实际值，因此这两种情况可以被复核和区分。",[300,437,438],{},[361,439],{"alt":440,"src":441},"生成的容量预测报告，按数据中心拆分预测期末值与实际期末值，标注出哪些站点偏离了预测，并保留每个指标的每日明细表，供后续复核。","https://on72nnontavb3pup.public.blob.vercel-storage.com/images/blog/4.disk-capacity-forecast/3-demo-zh.gif",[443,444,445],"h3",{"id":445},"预测准确性",[300,447,448,449,451,452,455],{},"需要特别说明的是：",[343,450,445],{},"和",[343,453,454],{},"预测区间","是两个不同的概念。95% 预测区间描述的是未来值可能落入的范围，它反映预测的不确定性；而预测准确性衡量的是预测值与实际值之间的偏差程度。",[300,457,458,459,462],{},"下表使用报告中已有的月末预测值和实际值来评估预测准确性。误差百分比按 ",[354,460,461],{},"(实际值 - 预测值) / 预测值"," 计算。",[464,465,466,489],"table",{},[467,468,469],"thead",{},[470,471,472,476,480,483,486],"tr",{},[473,474,475],"th",{},"数据中心",[473,477,479],{"align":478},"right","预测期末值",[473,481,482],{"align":478},"实际期末值",[473,484,485],{"align":478},"有符号误差",[473,487,488],{},"解释",[490,491,492,510,527,543,560,576],"tbody",{},[470,493,494,498,501,504,507],{},[495,496,497],"td",{},"phx1",[495,499,500],{"align":478},"155.82 万 TB",[495,502,503],{"align":478},"156.07 万 TB",[495,505,506],{"align":478},"+0.16%",[495,508,509],{},"自然增长，实际值与预测接近",[470,511,512,515,518,521,524],{},[495,513,514],{},"sac0",[495,516,517],{"align":478},"102.12 万 TB",[495,519,520],{"align":478},"100.91 万 TB",[495,522,523],{"align":478},"−1.18%",[495,525,526],{},"自然增长，实际值仅有小幅偏离",[470,528,529,532,535,537,540],{},[495,530,531],{},"yyz1",[495,533,534],{"align":478},"7.68 万 TB",[495,536,534],{"align":478},[495,538,539],{"align":478},"0.00%",[495,541,542],{},"自然增长，月末值几乎完全一致",[470,544,545,548,551,554,557],{},[495,546,547],{},"sac2",[495,549,550],{"align":478},"98.29 万 TB",[495,552,553],{"align":478},"99.99 万 TB",[495,555,556],{"align":478},"+1.73%",[495,558,559],{},"容量基线变化，偏离需结合变更记录调查",[470,561,562,565,568,571,574],{},[495,563,564],{},"iad1",[495,566,567],{"align":478},"88.37 万 TB",[495,569,570],{"align":478},"93.36 万 TB",[495,572,573],{"align":478},"+5.65%",[495,575,559],{},[470,577,578,581,584,587,590],{},[495,579,580],{},"ams5",[495,582,583],{"align":478},"40.64 万 TB",[495,585,586],{"align":478},"46.79 万 TB",[495,588,589],{"align":478},"+15.13%",[495,591,559],{},[300,593,594,595,597,598,600,601,603,604,607,608,611],{},"对于三个自然增长的站点——",[354,596,497],{},"、",[354,599,514],{}," 和 ",[354,602,531],{},"——月末值的平均绝对百分比误差（MAPE）约为 ",[343,605,606],{},"0.45%","，最大绝对误差为 ",[343,609,610],{},"1.18%","。在本次时间窗口和这组样本中，这表明模型较好地捕捉到了自然容量增长趋势。",[300,613,614],{},"另外三个站点的偏离主要源于预测期间容量基线发生了结构性变化——人为扩容或下线磁盘改变了被预测的对象本身。这类偏离不能简单归因于模型预测能力不足。它的价值在于：当 Agent 检测到实际值显著偏离预测趋势时，可以提示运维人员结合变更记录进一步调查原因，而不是直接将其视为模型预测失败。",[300,616,617,618],{},"需要说明的是，当前验证仅基于月末端点值。如果需要更全面的评估，可以扩展到整个预测周期的逐日误差分析。当前样本量限定了结论的适用范围，但已足以说明：",[343,619,620],{},"预测结果是可以量化评估的，而且评估时需要将自然增长与容量基线变化区分开来。",[310,622,623],{"id":623},"从容量预测到容量风险倒计时",[300,625,626,627],{},"容量预测回答的是\"未来 30 天增长趋势是什么\"，但运维真正关心的问题是：",[343,628,629],{},"\"按照当前趋势，什么时候会进入容量风险区间？我还有多少时间准备扩容？\"",[300,631,632],{},"要回答这个问题，需要将容量预测与使用量数据结合，计算容量阈值到达时间。",[300,634,635,636,638,639],{},"以 ",[354,637,497],{}," 数据中心为例。",[343,640,641,642,644],{},"截至 2025 年 9 月 30 日，",[354,643,497],{}," 的容量与使用量状况如下：",[464,646,647,657],{},[467,648,649],{},[470,650,651,654],{},[473,652,653],{},"指标",[473,655,656],{"align":478},"值",[490,658,659,666,674,682],{},[470,660,661,664],{},[495,662,663],{},"总容量",[495,665,503],{"align":478},[470,667,668,671],{},[495,669,670],{},"已使用容量",[495,672,673],{"align":478},"112.37 万 TB",[470,675,676,679],{},[495,677,678],{},"当前使用率",[495,680,681],{"align":478},"72.0%",[470,683,684,687],{},[495,685,686],{},"近期日均增长量",[495,688,689],{"align":478},"约 2,700 TB/天",[300,691,692],{},"运维团队通常会设置两级容量阈值：",[324,694,695,701],{},[327,696,697,700],{},[343,698,699],{},"80% 规划阈值","——进入容量预警区间，应启动扩容评估和预算规划。",[327,702,703,706],{},[343,704,705],{},"90% 风险阈值","——进入紧急风险区间，必须立即执行扩容或清理操作。",[300,708,709],{},"基于当前使用率和近期增长趋势，Agent 可以计算出：",[464,711,712,731],{},[467,713,714],{},[470,715,716,719,722,725,728],{},[473,717,718],{},"阈值",[473,720,721],{"align":478},"阈值容量",[473,723,724],{"align":478},"剩余可用空间",[473,726,727],{},"预计到达日期",[473,729,730],{"align":478},"剩余天数",[490,732,733,749],{},[470,734,735,737,740,743,746],{},[495,736,699],{},[495,738,739],{"align":478},"124.86 万 TB",[495,741,742],{"align":478},"12.49 万 TB",[495,744,745],{},"约 2025 年 11 月中旬",[495,747,748],{"align":478},"~46 天",[470,750,751,753,756,759,762],{},[495,752,705],{},[495,754,755],{"align":478},"140.46 万 TB",[495,757,758],{"align":478},"28.09 万 TB",[495,760,761],{},"约 2026 年 1 月中旬",[495,763,764],{"align":478},"~104 天",[300,766,767,768,770,771,774],{},"这意味着 ",[354,769,497],{}," 当前并未进入紧急风险状态，而是拥有约 ",[343,772,773],{},"46 天","进入规划阈值的准备窗口。运维团队可以在这段时间里完成扩容评估、预算审批和硬件采购。从 80% 规划阈值到 90% 风险阈值之间还有约 58 天的风险缓冲期——这是从\"应该开始规划\"到\"必须完成扩容\"之间的实际行动窗口。如果增长速度突然加快，这些窗口会相应缩短——这正是 Agent 需要持续监控并动态更新预测的原因。",[300,776,777],{},"Agent 最终给出的容量风险评估如下：",[779,780,781,786],"blockquote",{},[300,782,783],{},[343,784,785],{},"phx1 风险评级：中等",[300,787,788],{},"当前使用率 72.0%，预计 46 天后达到 80% 规划阈值（约 2025 年 11 月中旬）。建议在未来两周内启动扩容评估，确保在进入预警区间前完成容量规划。如果增长速度持续高于日均 2,700 TB，风险窗口将进一步收窄，Agent 将在下一次巡检中更新预测并调整风险等级。",[300,790,791],{},"预测算法负责回答\"增长趋势是什么\"，而 Agent 负责把趋势预测转化为**\"还有多少天、需要做什么\"**这个运维团队真正需要的答案。",[310,793,795],{"id":794},"agent-相比预测算法多做了什么","Agent 相比预测算法多做了什么",[300,797,798],{},"一个预测算法主要回答一个问题：",[779,800,801],{},[300,802,803],{},[343,804,805],{},"给定这条时间序列，未来可能会呈现什么趋势？",[300,807,808],{},"一个独立的 Holt-Winters 实现可以接收一条时间序列，返回预测值和预测区间。但它不会自行决定查询哪些指标、对多个数据中心分别运行分析、将预测与实际值逐一比较、调查偏离原因，或者把这些发现转化为运维建议。",[300,810,811,812,815],{},"更重要的是，一个预测算法不会自己决定",[343,813,814],{},"什么时候运行","。它需要有人主动发起调用。",[300,817,818,819,822],{},"Agent 的核心差异不是把预测算法前后串联起来，而是能够围绕容量管理目标",[343,820,821],{},"自主理解问题、获取信息、选择分析方式、解释结果并做出下一步决策","。",[443,824,825],{"id":825},"自主分析与决策",[300,827,828],{},"在本次示例中，Agent 完成了以下工作——不是按照预定义的固定流程，而是根据当前问题和数据自主判断每一步该做什么：",[425,830,831,837,843,849,855,861,867,873],{},[327,832,833,836],{},[343,834,835],{},"理解任务。"," 判断当前需要回答的是趋势问题、风险问题还是规划窗口问题，据此决定需要哪些数据和分析方式。",[327,838,839,842],{},[343,840,841],{},"获取数据。"," 根据问题需要，自主查询监控系统中的相关指标、时间范围和数据中心维度。",[327,844,845,848],{},[343,846,847],{},"逐站点分析。"," 对每个数据中心分别运行预测，而不是把整个集群当成一条无差别的时间序列。",[327,850,851,854],{},[343,852,853],{},"验证预测结果。"," 计算预测误差，并结合预测区间识别实际值是否出现显著偏离，区分自然增长和容量基线变化。",[327,856,857,860],{},[343,858,859],{},"计算容量风险。"," 将使用量趋势与总容量结合，推算各站点的阈值到达时间和剩余规划窗口。",[327,862,863,866],{},[343,864,865],{},"识别高风险站点。"," 按照风险窗口长短对站点排序，标记需要优先关注的数据中心。",[327,868,869,872],{},[343,870,871],{},"进一步调查。"," 当增长速度突然变化或实际值显著偏离预测趋势时，自主决定是否需要获取更多信息来分析原因。",[327,874,875,878],{},[343,876,877],{},"形成决策。"," 生成包含风险评级、阈值到达时间、规划窗口和行动建议的容量规划报告。",[443,880,881],{"id":881},"持续自主巡检",[300,883,884,885],{},"Agent 的另一个关键差异在于：",[343,886,887],{},"它不需要等待人工触发，而是可以通过定时巡检机制自主启动容量分析。",[300,889,890],{},"定时巡检只负责触发 Agent，之后的分析过程完全由 Agent 自主决定：",[892,893],"mermaid",{":config":894,"code":895},"config","flowchart%20TD%0A%20%20%20%20A%5B%22%E5%AE%9A%E6%97%B6%E5%B7%A1%E6%A3%80%E8%A7%A6%E5%8F%91%EF%BC%88%E6%AF%8F%E5%A4%A9%2F%E6%AF%8F%E5%91%A8%EF%BC%89%22%5D%20--%3E%20B%5B%22Agent%20%E7%90%86%E8%A7%A3%E5%BD%93%E5%89%8D%E5%AE%B9%E9%87%8F%E7%8A%B6%E6%80%81%22%5D%0A%20%20%20%20B%20--%3E%20C%5B%22%E8%87%AA%E4%B8%BB%E5%88%A4%E6%96%AD%E9%9C%80%E8%A6%81%E8%8E%B7%E5%8F%96%E5%93%AA%E4%BA%9B%E7%9B%91%E6%8E%A7%E6%95%B0%E6%8D%AE%22%5D%0A%20%20%20%20C%20--%3E%20D%5B%22%E8%87%AA%E4%B8%BB%E5%88%A4%E6%96%AD%E5%93%AA%E4%BA%9B%E7%AB%99%E7%82%B9%E9%9C%80%E8%A6%81%E8%BF%9B%E4%B8%80%E6%AD%A5%E5%88%86%E6%9E%90%22%5D%0A%20%20%20%20D%20--%3E%20E%5B%22%E5%BF%85%E8%A6%81%E6%97%B6%E8%B0%83%E7%94%A8%E9%A2%84%E6%B5%8B%E8%83%BD%E5%8A%9B%22%5D%0A%20%20%20%20E%20--%3E%20F%5B%22%E7%BB%93%E5%90%88%E9%A2%84%E6%B5%8B%E7%BB%93%E6%9E%9C%E5%92%8C%E5%B7%B2%E6%9C%89%E7%9F%A5%E8%AF%86%E5%88%A4%E6%96%AD%E5%AE%B9%E9%87%8F%E9%A3%8E%E9%99%A9%22%5D%0A%20%20%20%20F%20--%3E%20G%5B%22%E8%87%AA%E4%B8%BB%E5%86%B3%E5%AE%9A%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E8%BF%9B%E4%B8%80%E6%AD%A5%E8%B0%83%E6%9F%A5%22%5D%0A%20%20%20%20G%20--%3E%20H%5B%22%E5%BD%A2%E6%88%90%E5%AE%B9%E9%87%8F%E8%A7%84%E5%88%92%E5%BB%BA%E8%AE%AE%22%5D%0A%20%20%20%20H%20--%3E%20I%7B%22%E9%A3%8E%E9%99%A9%E7%AD%89%E7%BA%A7%22%7D%0A%20%20%20%20I%20--%3E%7C%22%E9%AB%98%E9%A3%8E%E9%99%A9%22%7C%20J%5B%22%E4%B8%BB%E5%8A%A8%E9%80%9A%E7%9F%A5%E8%BF%90%E7%BB%B4%E5%9B%A2%E9%98%9F%22%5D%0A%20%20%20%20I%20--%3E%7C%22%E4%BD%8E%E9%A3%8E%E9%99%A9%22%7C%20K%5B%22%E8%AE%B0%E5%BD%95%E5%B9%B6%E6%8C%81%E7%BB%AD%E7%9B%91%E6%8E%A7%22%5D%0A%20%20%20%20J%20--%3E%20L%5B%22%E4%B8%8B%E4%B8%80%E5%91%A8%E6%9C%9F%E5%86%8D%E6%AC%A1%E8%A7%A6%E5%8F%91%22%5D%0A%20%20%20%20K%20--%3E%20L%0A%20%20%20%20L%20--%3E%20A",[300,897,898],{},"这意味着即使没有人主动询问\"磁盘容量还够用吗\"，Agent 也会定期发现问题、更新预测、判断风险，并在必要时主动推送通知。如果上一周期预计某站点 45 天后达到规划阈值，但本周期发现增长速度加快，预计缩短到 27 天，Agent 会自动上调该站点的风险等级，并建议提前启动扩容准备。",[300,900,901],{},"这改变了运维团队讨论容量问题的起点。团队不必等到\"磁盘已满\"后再追问发生了什么，而是可以围绕一条经过测量的增长轨迹、一个预计的规划日期、该日期的不确定性，以及支撑判断的证据展开讨论。并且这个过程不是一次性分析，而是一个持续运行、持续更新的闭环。",[300,903,904],{},"这才是 Agent 和预测算法之间的根本差异：",[324,906,907,913],{},[327,908,909,912],{},[343,910,911],{},"预测算法：","\"给我一条时间序列，我告诉你未来趋势。\"",[327,914,915,918],{},[343,916,917],{},"Agent：","\"我会自己去理解当前状况、获取需要的数据、判断是否需要预测、解释预测结果、评估风险、给出建议，并且持续重复这个过程——不需要有人记得来问我。\"",[310,920,921],{"id":921},"从一条预测曲线到一个容量规划决策",[425,923,924,930,936,942,948,954,960],{},[327,925,926,929],{},[343,927,928],{},"从历史监控数据识别容量增长趋势。"," Agent 可以直接读取 Prometheus 指标，获取多个数据中心的历史容量数据。",[327,931,932,935],{},[343,933,934],{},"对未来容量进行可量化的预测。"," 在自然增长的三个站点中，月末平均绝对百分比误差（MAPE）约为 0.45%，最大绝对误差为 1.18%。",[327,937,938,941],{},[343,939,940],{},"识别容量趋势中的异常偏离。"," 当实际增长明显偏离预测趋势时，Agent 可以结合预测区间和相关信息进一步分析，并为后续调查提供依据。",[327,943,944,947],{},[343,945,946],{},"计算容量阈值到达时间和剩余规划窗口。"," 将使用量趋势与总容量结合，推算出各站点达到 80% 和 90% 阈值的预计日期和剩余天数。",[327,949,950,953],{},[343,951,952],{},"识别高风险数据中心并给出容量规划建议。"," 包括风险评级、规划窗口和具体的行动建议。",[327,955,956,959],{},[343,957,958],{},"Agent 自主完成数据获取、分析、预测、风险判断和报告生成。"," 不是按照固定流程执行，而是根据当前问题和数据自主决定下一步动作。",[327,961,962,965],{},[343,963,964],{},"Agent 通过定时巡检持续运行。"," 每个周期自主更新预测、重新评估风险，而不是等待人工触发。",[300,967,968],{},"这套方法的价值，不只是预测图表中的一条曲线。它改变的是容量管理的工作方式：",[779,970,971],{},[300,972,973],{},[343,974,975],{},"从被动等待容量告警，转变为 Agent 主动发现容量风险，并提前给出可量化的容量规划窗口。",[300,977,978],{},"预测算法提供统计意义上的增长估计。Agent 将这种预测能力嵌入到一个能够自主理解、自主分析、自主决策和持续运行的容量管理场景中——从一次性的模型调用，变成了一个可以自主运行、自主更新、自主预警的容量规划系统。",{"title":980,"searchDepth":981,"depth":981,"links":982},"",2,[983,984,985,989,990,994],{"id":312,"depth":981,"text":313},{"id":349,"depth":981,"text":349},{"id":420,"depth":981,"text":420,"children":986},[987],{"id":445,"depth":988,"text":445},3,{"id":623,"depth":981,"text":623},{"id":794,"depth":981,"text":795,"children":991},[992,993],{"id":825,"depth":988,"text":825},{"id":881,"depth":988,"text":881},{"id":921,"depth":981,"text":921},"了解 Castrel Agent 如何自主执行磁盘容量巡检，利用 Holt-Winters 预测使用量增长趋势，计算容量风险窗口，并将预测转化为持续运行的容量规划决策。","md",{"date":998,"order":999,"category":1000,"image":1001},"2026-08-13",4,"产品",{"src":1002},"/images/blog/4.disk-capacity-forecast/5-cover-zh.jpeg","/zh/blogs/disk-capacity-forecast",{"ogImage":1002,"title":295,"description":995},"zh/blogs/4.disk-capacity-forecast","tWtySSc7mI86FBnONhngwPEMi2bYA1cEzP460Vsjb00",1789120052762]