STAC API 为遥感目录、集合与资产提供统一入口,但“接口能返回 200”不足以证明数据服务可以稳定运行。stac-fastapi 6.5.0 的官方发布把三件容易分离的工作放进了同一版本:排序能力的文档、下游实现的联动测试,以及可选的 Prometheus 指标端点。它给数据平台一个明确提醒:查询语义、生态兼容性与运行观测应共同验收。

本文依据 stac-utils 在 GitHub 发布的 stac-fastapi 6.5.0 及其关联 pull request 整理。运行方法为工程建议,不把上游发布说明延伸为对任何私有目录的性能承诺。

可核查事实

  • stac-fastapi 6.5.0 的 GitHub Release 发布于 2026 年 8 月 3 日。

  • 该 Release 列出了 sortable 文档更新、下游测试 workflow dispatch、可选 Prometheus metrics endpoint 与依赖更新。

  • PR #957 为 stac-fastapi-pgstacstac-fastapi-elasticsearch-opensearch 增加 GitHub Actions 下游集成测试,以便在 pull request 阶段捕捉破坏性变化。

  • PR #958 将指标作为 stac-fastapi-api[metrics] 的可选 extra 提供;未安装该 extra 时,应用仍可启动且不会注册指标路由。

  • 安装 metrics extra 后,端点位于 {router_prefix}/_mgmt/metrics;有 router prefix 时会随之带上前缀。

  • 指标使用低基数的 STAC operation 标签,例如 searchget_item,而不是按 URL path 打标签。

  • 官方 PR 明确说明 item 和 collection ID 不会进入这些标签值。

  • 后端可以通过 register_operations 映射自定义路由到 operation。

  • PR #959 合并了 sortable 相关文档更新;PR #963 是 v6.5.0 的发布变更。

这些事实的价值不在于多出一个监控地址,而在于把“用户的搜索语义是否保持”“不同后端是否仍可接住框架升级”“指标会不会因实体 ID 产生无限标签”放进同一条发布证据链。

核心机制

STAC 服务的可用性分为三层。第一层是查询合同:排序、搜索、collection 与 item 的行为符合调用方假设。第二层是兼容合同:框架变化经过 pgSTAC、Elasticsearch/OpenSearch 等下游实现检验,避免核心库的改动在另一种后端上才暴露。第三层是运行合同:请求量、错误和延迟可按稳定 operation 聚合,而不把每一个 item、collection 或完整路径变成新的指标标签。

低基数标签是关键约束。若将 collection ID、item ID 或每个 AOI 参数直接放进 Prometheus label,监控系统会积累无穷多时间序列,反而失去可用性。官方方案以 searchget_item 等 operation 归类,保留端点行为的可比较性;诊断单个请求仍应依赖受控日志与追踪 ID,而不是污染基础指标。

GIS 场景

假设一个区域灾害平台同时提供光学影像、SAR、DEM 与风险面资产。分析端高峰期会反复调用 STAC Search,数据运维端则要确认 collection 查询、单 item 读取和失败请求分别发生了什么。把指标只按 operation 聚合,可以先看出 search 是否整体变慢、get_item 是否突然报错;随后用带权限的请求日志关联 collection、item、AOI 与用户上下文,避免把敏感或高基数标识公开进时序系统。

平台升级时,不能只在内存后端跑一遍烟测。若生产采用 PostgreSQL/pgSTAC 或 Elasticsearch/OpenSearch,应对相同的 collection、datetime、bbox、sort 与分页请求保存预期响应。下游 workflow 的意义正是提前发现这种“框架通过、实际后端失败”的裂缝。

技术路径

先把核心业务请求制成固定回归集:各选一个集合检索、时空 Search、排序 Search、单 item 读取和异常请求,保留请求 JSON、响应摘要、状态码及数据快照版本。对每个生产后端运行同一回归集,并在升级前后比较命中数、排序首尾项、分页 token、字段及错误结构。

再按需安装 metrics extra,而不是默认暴露管理端点。将 {router_prefix}/_mgmt/metrics 纳入网络策略和监控抓取清单,核查未安装 extra 时路由确实不存在、安装后才出现。仪表盘以 operation、状态码与时延为主,设置 search 的错误率、P95 延迟和突发流量告警;具体 collection 或 item 的排障回到访问控制下的日志。

最后把下游测试当成发布门槛。框架依赖变更触发后端矩阵回归;任一后端对排序、过滤或错误处理的结果不一致,就暂停升级并保存最小复现请求。这样,文档、兼容性和观测不会在事故后才补齐。

风险边界

可选指标端点不等于自动具备告警、认证、容量规划或隐私治理。低基数 operation 标签适合平台健康观察,却无法单独解释某一个数据集为何慢;日志和追踪仍要遵循访问控制与脱敏策略。下游 GitHub Actions 覆盖的实现也不等于覆盖所有私有插件、反向代理、缓存或云数据库参数。生产升级仍须在真实后端、真实索引与真实权限模型上复验。

检查清单

  1. 固化 Search、排序、分页、单 item 与异常请求的回归集及预期响应。

  2. 在每种生产后端上执行同一回归集,比较命中、排序和错误结构。

  3. 明确 metrics extra 是否安装,并验证管理端点随 router prefix 的实际路径。

  4. 抓取指标时只使用稳定 operation、状态码和延迟维度,禁止写入 item/collection ID。

  5. 将单请求的 AOI、数据集与实体诊断交给受控日志和 trace ID。

  6. searchget_item 的错误率和时延设置阈值,并演练告警后的排查路径。

  7. 依赖升级必须通过下游后端矩阵与真实目录快照,失败时保留最小复现请求。

结论

STAC API 的可靠性不是一个接口是否存在,而是查询合同能否保持、后端生态能否兼容、运行信号能否安全地聚合。把排序回归、下游测试和低基数指标一起纳入发布流程,遥感数据入口才有可解释的运行边界。

参考来源

  1. stac-fastapi v6.5.0 release:https://github.com/stac-utils/stac-fastapi/releases/tag/6.5.0

  2. stac-fastapi PR #957:https://github.com/stac-utils/stac-fastapi/pull/957

  3. stac-fastapi PR #958:https://github.com/stac-utils/stac-fastapi/pull/958

  4. stac-fastapi PR #959:https://github.com/stac-utils/stac-fastapi/pull/959