
Datadog 是一款基于云服务的可观测性和安全平台,提供自动化基础设施监控、应用程序性能监控、日志管理、真实用户监控等功能。它为应用程序提供统一、实时的可观测性和安全性解决方案,帮助开发人员轻松监控、分析和优化其应用程序的性能和可靠性。
EMQX 是全球领先的云原生分布式 MQTT 接入平台,兼容多种消息传输协议,具备高可用性和扩展性,单节点支持 500 万 MQTT 连接,能够处理大规模并发消息传输,并提供端到端数据加密和细粒度访问控制功能,充分利用数据价值的同时,全面满足企业数据的合规性需求。
近期,EMQX 正式支持与 Datadog 的集成,允许用户利用 Datadog 收集 EMQX 集群的设备连接、消息吞吐和延迟指标,以及节点性能和功能运行状态。通过这些数据,用户和运维人员可以更好地了解当前服务的状态,并监测和排除系统性能问题,更好地构建高效、可靠和实时数据传输的物联网应用。
第 1 步:安装 Datadog Agent
要开始使用 Datadog,请访问 Datadog (https://www.datadoghq.com/) 创建一个帐户并登录进入 Datadog 控制台。
接下来,您需要在 EMQX 所在的服务器上安装 Datadog Agent (https://docs.datadoghq.com/getting_started/agent/)。
Datadog Agent 用于收集 EMQX 指标并将指标发送到 Datadog 云端,需要部署在 EMQX 集群所在服务器或能够访问 EMQX 节点的服务器上。如果您还未安装 Agent,可以按照以下步骤进行操作:
1. 菜单栏选择 Integrations → Agent 打开 Agent 安装说明页面。
2. 根据实际情况,选择您对应操作系统版本,按照页面指引进行安装。

第 2 步:在 Datadog 中添加 EMQX 集成
EMQX 提供了开箱即用的 Datadog 集成(https://docs.datadoghq.com/integrations/emqx/),您可以使用如下步骤,将其添加到您 Datadog 控制台中:
菜单栏选择 Integrations → Integrations 打开集成页面。
在 Search Integrations 搜索框中,输入 EMQX,找到同名且作者是 EMQX 的集成。
打开集成,在弹出框中点击右上角 Install Integration 按钮,即可将集成添加到 Datadog 中。

4. 安装完成后,切换到 Configure 标签页查看 EMQX 集成的配置指引,配置所需的操作均在 Datadog Agnet 上进行。

第 3 步:在 Datadog Agnet 上添加并启用 EMQX 集成
根据配置指引,在 Datadog Agent 上添加 EMQX 集成,以完成 EMQX 指标的采集与上报配置。
1. 在 Datadog Agent 所在服务器运行以下命令为 Agent 添加 EMQX 集成。此处使用的是 1.1.0 版本,请根据指引内容使用最新的版本。
datadog-agent integration install -t datadog-emqx==1.1.0
2. 安装完成后,修改 Agnet 配置文件以启用 EMQX 集成:
打开 Agent 配置目录(默认是 /opt/datadog-agent/etc/conf.d/
),找到目录下的 emqx.d
目录,可以看到 emqx.d
目录下有一个示例配置文件 conf.yaml.example
。
在相同目录下复制一份该文件并重命名为 conf.yaml
,修改文件中的以下配置项:
instances:- openmetrics_endpoint: http://localhost:18083/api/v5/prometheus/stats?mode=all_nodes_aggregated
openmetrics_endpoint
选项是 Datadog Agnet 提取 OpenMetrics 格式的指标数据的地址,这里设置的是 EMQX 的 HTTP API 地址。实际使用中,请修改为 Datadog Agent 能够访问到的地址。
该 API 还支持通过 mode
查询参数指定拉取的指标范围,每个参数的含义如下:

为方便统一查看,此处使用 mode=all_nodes_aggregated
配置,Datadog 控制上将看到整个集群的值。
3. 参考此处重启 Agent(https://docs.datadoghq.com/agent/configuration/agent-commands/?tab=agentv6v7#start-stop-and-restart-the-agent),以 macOS 为例:
launchctl stop com.datadoghq.agentlaunchctl start com.datadoghq.agent
4. 重启后使用以下命令检查 EMQX 集成是否成功启用,当看到 Instance ID: ... [OK]
时表示已经启用成功:
$ datadog-agent status | grep emqx -A 4emqx (1.1.0)------------Instance ID: emqx:1865f3a06d300ccc [OK]Configuration Source: file:/opt/datadog-agent/etc/conf.d/emqx.d/conf.yamlTotal Runs: 17Metric Samples: Last Run: 166, Total: 2,822Events: Last Run: 0, Total: 0Service Checks: Last Run: 1, Total: 17Average Execution Time : 43msLast Execution Date : 2024-05-11 17:35:41 CST 2024-05-11 09:35:41 UTC (1715420141000)Last Successful Execution Date : 2024-05-11 17:35:41 CST / 2024-05-11 09:35:41 UTC (1715420141000)
至此,您已经完成 Datadog Agnet 端的所有配置,Agent 将定期收集 EMQX 运行数据,并发送到 Datadog 中。接下来,我们到 Datadog 控制台中查看指标是否正确收集。
第 4 步:在 Datadog 控制台上查看 EMQX 指标
Datadog Agnet 的 EMQX 集成提供了一个开箱即用的 Dashboard 图表,用于展示节点状态、消息状态信息,以及其他更深入的可观察性指标。我们可以通过以下步骤使用:
1. 菜单栏选择 Integrations → Integrations 打开集成页面。
2. 在已安装的集成中找到 EMQX 集成,点击打开。
3. 在弹出框中选择 Monitoring Resources 标签页,打开 Dashboards 下的 EMQX Overview 图表。

图表包含以下内容
OpenMetrics Health: 活跃的指标收集器数量
Total Connections:总连接数,包含已断开但保留会话的连接
NodeRunning:集群中正在运行的节点数
Active Topics:活跃主题数
NodeStopped:集群中已停止的节点数
Connection
Total:连接总数,包含已断开但保留会话的连接
Live:活跃连接数,即保持了 TCP 连接
Topic
Total:主题总数
Shared:共享主题数
Session:会话数
Erlang VM:Erlang 虚拟机的 CPU、内存和队列使用情况
Retainer&Delayed
Retained:保留消息数
Delayed:延迟消息数
Message
Sent&Received:发送和接收消息速率
Delayed&Retained:延迟和保留消息速率
Publish&Delivered:发布和传递消息速率
Delivery Dropped:丢弃的传递消息数
Client
Connected&Disconnected:连接和断开连接速率
Sub&UnSub:订阅和取消订阅速率
AuthN&AuthZ:认证和授权速率
Delivery Dropped:丢弃的传递消息数
Mria:Mria 事务数量
以下是部分图表的截图,当 EMQX 负载和客户端情况发生变化后,相应的数值也会变化。


连接、主题与会话数量

消息收发速率、保留消息/延迟消息以及丢弃消息数量

客户端事件
下一步
Datadog 的 EMQX 集成内置的图表仅展示了部分关键的指标,您还可以查阅此文档(https://docs.datadoghq.com/integrations/emqx/#metrics),获取 EMQX 所有上报的指标,并基于此构建自己的监控图表。
接下来,您可以基于这些指标在 Datadog 上配置告警规则,以便在某些指标达到预设的阈值或发生异常情况时,通过 Datadog 发送通知及时提醒您采取必要的行动,从而最大限度地减少系统故障对业务的影响。
结语
本文展示了如何将 EMQX 与 Datadog 无缝集成来实时监测 EMQX 的运行状态。通过 EMQX 完善的指标和 Datadog 的强大功能,用户可以时刻了解 EMQX 的运行状况,包括连接数、消息速率、节点状态等关键指标,以便及时发现潜在的问题并采取相应的措施,从而保证系统的稳定性和可靠性。期待本文能为使用 Datadog 监控 EMQX 的用户提供一些有用的指导和参考。







