你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置 MQTT 代理诊断设置

重要

此设置要求修改代理资源,并且只能在初始部署时使用 Azure CLI 或 Azure 门户进行配置。 如果需要 Broker 配置更改,则需要新的部署。 若要了解详细信息,请参阅自定义默认代理

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

指标

指标提供有关 MQTT 代理的当前和过去运行状况和状态的信息。 这些指标以 OpenTelemetry 格式 (OTLP) 发出。 可以使用 OpenTelemetry 收集器将这些指标转换为 Prometheus 格式,并使用适用于 Prometheus 的 Azure Monitor 托管服务将其路由到 Azure 托管 Grafana 仪表板。 若要了解详细信息,请参阅配置可观测性和监视

有关可用指标的完整列表,请参阅 MQTT 代理指标

日志

日志提供有关 MQTT 代理执行的操作的信息。 这些日志在 Kubernetes 群集中作为容器日志提供。 可以将这些日志配置为使用容器见解发送到 Azure Monitor 日志。

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

自检查

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

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

  1. 消息在系统中传递的路径。
  2. 系统的计时行为。

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

重要

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

更改诊断设置

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

若要替代,请先按照 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
    }
  }
}

然后,使用带有 --broker-config-file 标志的 az iot ops create 命令部署 Azure IoT 操作,如以下命令(为简洁起见,省略了其他参数):

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

要了解更多信息,请参阅用于高级 MQTT 代理配置的 Azure CLI 支持代理示例

后续步骤