跳转到内容

操作可观察性

权威来源:AetherCloud。此页面镜像到统一的 AetherIoT 文档中。

OpenTelemetry 是 AetherCloud 进程的供应商中立检测和导出边界。实现了无操作默认、经过验证的环境选择、OTLP HTTP 跟踪/指标导出器、内存中导出器、W3C 跟踪上下文提取、有界跨度处理器、低基数遥测摄取装饰器和故障隔离测试。实验性的 CloudLink MQTT 入口还暴露了一个中立的有界观察者,但其握手/会话/重新连接/ACK 信号的 OpenTelemetry 接线仍在计划中。收集器部署和广泛的 HTTP、数据库、工作线程和 Webhook 工具仍在计划中。

操作可观察性回答 AetherCloud 组件是否正常以及发生时间或故障的位置。它不是 IoT 业务遥测、持久命令收据、授权源或审计分类账。

域和应用程序包不导入 OpenTelemetry API 或 SDK 类型。标准框架/数据库工具属于适配器和组合根。应用程序特定的操作名称可以通过中立的应用程序拥有的观察者端口或用例装饰器来观察。

API、CloudLink 和工作根独立配置和关闭其 SDK 生命周期。默认是无操作实现。 OTLP 导出和收集器是可选的部署选择;测试和正确的产品行为永远不需要其中任何一个。

导出器队列和刷新是有限的。不可用的导出器可以在有限重试后丢弃操作信号,但无法阻止 HTTP 命令、CloudLink 心跳、遥测持久性确认、收件箱/发件箱工作或委托边缘行为。

遥测摄取用例范围已实现。计划范围还涵盖:

  • HTTP请求和应用程序用例
  • CloudLink身份验证、协商、会话、恢复和重新连接
  • 遥测解码、验证、重复数据删除、持久性和确认
  • 收件箱/发件箱租赁和交付
  • PostgreSQL事务
  • webhook 传递
  • 后台工作执行

W3C 跟踪上下文可以作为可选元数据跨越 CloudLink。跟踪上下文和行李从不参与消息身份、有效负载摘要、排序、授权、许可、风险或租户解析。远程行李使用较小的允许列表和严格的字节限制。

初始低基数目录包括:

  • 活动 CloudLink 会话
  • 握手失败和重新连接计数
  • 心跳寿命和往返延迟
  • 按有限结果划分的遥测批次和样本类
  • 重复、冲突重播和序列间隙计数
  • 持久性和确认延迟
  • 收件箱/发件箱积压、重试和死信计数
  • 应用程序命令/查询持续时间和失败类
  • 工作进程持续时间和有界队列深度
  • 丢弃的 OpenTelemetry 信号计数

指标属性使用有界分类,例如服务、操作、协议版本、结果类和部署环境。 TenantId、ProjectId、GatewayId、PointId、JobId、用户身份、令牌、证书、完整 URL、有效负载和自由格式错误文本都是禁止的指标标签,因为它们会泄漏敏感上下文或创建高基数序列。

首选标准稳定 HTTP、数据库、RPC 和消息传递语义约定。产品特定名称使用记录的 aethercloud.* 命名空间和明确的稳定性/版本目录。实验性语义约定不会偶然成为稳定的AetherCloud合约。

结构化应用程序日志仍然是第一个日志记录表面,并在启用跟踪时携带跟踪/跨度相关性。原始 IoT 负载、令牌、授权标头、私钥、证书材料和任意异常主体在记录或扩展之前经过编辑。

审核记录是随业务交易提交的未采样、租户范围内的产品事实。迹线是采样的、尽力而为的诊断信号。跟踪可以引用审核事件身份,审核事件可以保留跟踪身份,但两者都不能替代对方。成功的跨度或导出并不能说明业务事务是否成功。

头部采样对于第一个适配器来说就足够了。稍后可能会在不改变应用程序行为的情况下引入收集器端尾部采样。错误和安全拒绝跟踪可能会获得更高的采样概率,而相应的审计记录仍然是强制性的且未采样。

一致性测试使用无操作观察器和内存导出器。它们涵盖上下文传播、上下文缺失、导出器故障隔离、有界队列、修订、禁止的高基数标签以及审计持久性和跟踪采样之间的独立性。

阅读 ADR-0008 了解决策,阅读 IoT 业务遥测 了解产品数据路径。