配置 MQTT 代理诊断设置

设置诊断设置以配置 MQTT 代理的指标、日志和自我检查。

重要

诊断在 Broker 资源上设置。 使用 Azure CLI 或 Azure 门户在初始部署期间配置诊断。 如果要更改代理设置,请部署新的代理资源。 若要了解详细信息,请参阅自定义默认代理

指标

指标显示 MQTT 中转站的当前和过去运行状况和状态。 这些指标使用 OpenTelemetry 协议 (OTLP) 格式。 使用 OpenTelemetry 收集器将其转换为 Prometheus 格式,然后使用适用于 Prometheus 的 Azure Monitor 托管服务将其路由到 Azure 托管 Grafana 仪表板。 若要了解详细信息,请参阅配置可观测性和监视

有关可用指标的完整列表,请参阅 MQTT 中转站指标

日志

日志显示有关 MQTT 代理服务器执行操作的信息。 这些日志作为容器日志位于 Kubernetes 群集中。 设置它们以使用容器见解发送到 Azure Monitor 日志。

若要了解详细信息,请参阅配置可观测性和监视

自检查

默认情况下,MQTT 代理的自我检查机制处于打开状态。 它使用诊断探测和 OpenTelemetry (OTel) 跟踪来监视代理。 探测发送测试消息以检查系统行为和计时。

验证过程通过比较测试结果与预期结果来检查系统是否正常工作。 这些结果包括:

  • 消息通过系统采用的路径。
  • 系统计时行为。

诊断探测定期在 MQTT 代理服务器上运行 MQTT 操作(PING、CONNECT、PUBLISH、SUBSCRIBE、UNSUBSCRIBE),并监视相应的 ACK 和跟踪,以检查延迟、消息丢失以及复制协议的正确性。

重要

自检查诊断探测将消息发布到 azedge/dmqtt/selftest 主题。 不要发布或订阅以 azedge/dmqtt/selftest 开头的诊断探测主题。 发布或订阅这些主题可能会影响探测或自我测试检查,并导致结果无效。 诊断探测日志、指标或仪表板中可以列出无效的结果。 例如,你可能会在诊断探测日志中看到“对‘发布’操作类型的探测事件进行路径验证失败”问题。 有关详细信息,请参阅已知问题

尽管 MQTT 代理的 诊断 会在其专用主题上发布诊断消息,但您在订阅# 主题时仍然可以接收自检消息。 这是一个限制和预期的行为。

更改诊断设置

在大多数情况下,默认诊断设置就足够了。 要替代 MQTT 代理的默认诊断设置,请编辑 Broker 资源中的 diagnostics 部分。 目前,您只能在使用--broker-config-file命令部署 Azure IoT 操作时,通过使用az iot ops create标志来更改设置。

若要替代,请遵循 BrokerDiagnostics API 引用来准备代理配置文件。 例如:

{
  "diagnostics": {
    "metrics": {
      "prometheusPort": 9600
    },
      "logs": {
        "level": "debug"
      },
    "traces": {
      "mode": "Enabled",
      "cacheSizeMegabytes": 16,
      "selfTracing": {
        "mode": "Enabled",
        "intervalSeconds": 30
      },
      "spanChannelCapacity": 1000
    },
    "selfCheck": {
      "mode": "Enabled",
      "intervalSeconds": 30,
      "timeoutSeconds": 15
    }
  }
}

然后,使用 az iot ops create 命令和 --broker-config-file 标志部署 IoT 操作,如以下示例所示。 (为简洁起见,省略了其他参数。)

az iot ops create ... --broker-config-file <FILE>.json

详细了解 Azure CLI 对高级 MQTT 代理配置Broker 示例的支持。