Skip to content

Prometheus 监控告警

EMQX Cloud 提供了 Prometheus API ,您可以轻松调用 API 来监控 EMQX Cloud 的关键指标。 在本文中我们将介绍如何配置 Prometheus 服务,从 EMQX Cloud API 读取关键指标,以及如何使用 Grafana 查看指标。

注意

该功能仅适用于专有版和 BYOC 部署。

API 配置

在 EMQX Cloud 部署控制台找到概览 - REST API,获取到 API 地址,点击新建应用,获取 APP ID、APP Secret。

cloud_prometheus_api

集群指标 URI

GET /deployment_metrics

返回供 Prometheus 采集的集群指标。

查询参数:

请求消息

请求示例

curl -u app_id:app_secret -X GET {api}/deployment_metrics

响应

指标名称描述类型
deployment_emqx_cluster_statusEMQX 集群的状态Gauge
deployment_emqx_sessions_count集群当前会话数Gauge
deployment_emqx_connections_count集群当前连接数Gauge
deployment_emqx_messages_rate每秒发送和接收的消息速率Gauge
deployment_emqx_messages_send_rate每秒发送的消息速率Gauge
deployment_emqx_messages_receive_rate每秒接收的消息速率Gauge
deployment_emqx_subscriptions_count集群订阅总数Gauge
deployment_emqx_metrics_live_connections_count当前集群中的活跃连接数Gauge
deployment_emqx_metrics_live_connections_max当前集群的历史最大活跃连接数Gauge
deployment_emqx_metrics_modules_count当前集群中的模块数Gauge
deployment_emqx_metrics_modules_max当前集群的历史最大模块数Gauge
deployment_emqx_metrics_users_count当前集群中的用户名数Gauge
deployment_emqx_metrics_connections_count当前连接数Gauge
deployment_emqx_metrics_connections_max历史最大连接数Gauge
deployment_emqx_metrics_channels_count当前通道数Gauge
deployment_emqx_metrics_channels_max历史最大通道数Gauge
deployment_emqx_metrics_sessions_count当前会话数Gauge
deployment_emqx_metrics_sessions_max历史最大会话数Gauge
deployment_emqx_metrics_topics_count当前主题数Gauge
deployment_emqx_metrics_topics_max历史最大主题数Gauge
deployment_emqx_metrics_suboptions_count当前订阅选项数Gauge
deployment_emqx_metrics_suboptions_max历史最大订阅选项数Gauge
deployment_emqx_metrics_subscribers_count当前订阅者数Gauge
deployment_emqx_metrics_subscribers_max历史最大订阅者数Gauge
deployment_emqx_metrics_subscriptions_count当前订阅数Gauge
deployment_emqx_metrics_subscriptions_max历史最大订阅数Gauge
deployment_emqx_metrics_subscriptions_shared_count当前共享订阅数Gauge
deployment_emqx_metrics_subscriptions_shared_max历史最大共享订阅数Gauge
deployment_emqx_metrics_routes_count当前路由数Gauge
deployment_emqx_metrics_routes_max历史最大路由数Gauge
deployment_emqx_metrics_retained_count当前保留消息数Gauge
deployment_emqx_metrics_retained_max历史最大保留消息数Gauge
deployment_emqx_metrics_client_authenticate_successclient.authenticate 钩子成功触发的次数Counter
deployment_emqx_metrics_bytes_received接收的字节数Counter
deployment_emqx_metrics_bytes_sent发送的字节数Counter
deployment_emqx_metrics_packets_received接收的数据包数Counter
deployment_emqx_metrics_packets_sent发送的数据包数Counter
deployment_emqx_metrics_packets_connect_received接收的 CONNECT 数据包数Counter
deployment_emqx_metrics_packets_connack_auth_error发送的带有身份验证错误的 CONNACK 消息数Counter
deployment_emqx_metrics_packets_connack_error发送的错误 CONNACK 数据包数Counter
deployment_emqx_metrics_packets_connack_sent发送的 CONNACK 数据包数Counter
deployment_emqx_metrics_packets_publish_received接收的 PUBLISH 数据包数Counter
deployment_emqx_metrics_packets_publish_sent发送的 PUBLISH 数据包数Counter
deployment_emqx_metrics_packets_publish_inuse使用中的 PUBLISH 数据包数Counter
deployment_emqx_metrics_packets_publish_auth_error带有身份验证错误的 PUBLISH 数据包数Counter
deployment_emqx_metrics_packets_publish_error发生错误的 PUBLISH 数据包数Counter
deployment_emqx_metrics_packets_publish_dropped丢弃的 PUBLISH 数据包数Counter
deployment_emqx_metrics_packets_puback_received接收的 PUBACK 数据包数Counter
deployment_emqx_metrics_packets_puback_sent发送的 PUBACK 数据包数Counter
deployment_emqx_metrics_packets_puback_inuse使用中的 PUBACK 数据包数Counter
deployment_emqx_metrics_packets_puback_missed未收到的 PUBACK 数据包数Counter
deployment_emqx_metrics_packets_pubrec_received接收的 PUBREC 数据包数Counter
deployment_emqx_metrics_packets_pubrec_sent发送的 PUBREC 数据包数Counter
deployment_emqx_metrics_packets_pubrec_inuse使用中的 PUBREC 数据包数Counter
deployment_emqx_metrics_packets_pubrec_missed未收到的 PUBREC 数据包数Counter
deployment_emqx_metrics_packets_pubrel_received接收的 PUBREL 数据包数Counter
deployment_emqx_metrics_packets_pubrel_sent发送的 PUBREL 数据包数Counter
deployment_emqx_metrics_packets_pubrel_missed未收到的 PUBREL 数据包数Counter
deployment_emqx_metrics_packets_pubcomp_received接收的 PUBCOMP 数据包数Counter
deployment_emqx_metrics_packets_pubcomp_sent发送的 PUBCOMP 数据包数Counter
deployment_emqx_metrics_packets_pubcomp_inuse使用中的 PUBCOMP 数据包数Counter
deployment_emqx_metrics_packets_pubcomp_missed未收到的 PUBCOMP 数据包数Counter
deployment_emqx_metrics_packets_subscribe_received接收的 SUBSCRIBE 数据包数Counter
deployment_emqx_metrics_packets_subscribe_error发生错误的 SUBSCRIBE 数据包数Counter
deployment_emqx_metrics_packets_subscribe_auth_error带有身份验证错误的 SUBSCRIBE 数据包数Counter
deployment_emqx_metrics_packets_suback_sent发送的 SUBACK 数据包数Counter
deployment_emqx_metrics_packets_unsubscribe_received接收的 UNSUBSCRIBE 数据包数Counter
deployment_emqx_metrics_packets_unsubscribe_error发生错误的 UNSUBSCRIBE 数据包数Counter
deployment_emqx_metrics_packets_unsuback_sent发送的 UNSUBACK 数据包数Counter
deployment_emqx_metrics_packets_pingreq_received接收的 PINGREQ 数据包数Counter
deployment_emqx_metrics_packets_pingresp_sent发送的 PINGRESP 数据包数Counter
deployment_emqx_metrics_packets_disconnect_received接收的 DISCONNECT 数据包数Counter
deployment_emqx_metrics_packets_disconnect_sent发送的 DISCONNECT 数据包数Counter
deployment_emqx_metrics_packets_auth_received接收的 AUTH 数据包数Counter
deployment_emqx_metrics_packets_auth_sent发送的 AUTH 数据包数Counter
deployment_emqx_metrics_delivery_dropped_too_large由于过大而丢弃的消息数Counter
deployment_emqx_metrics_delivery_dropped_queue_full由于队列已满而丢弃的消息数Counter
deployment_emqx_metrics_delivery_dropped_qos0_msg丢弃的 QoS 0 级别消息数Counter
deployment_emqx_metrics_delivery_dropped_expired过期的消息投递数Counter
deployment_emqx_metrics_delivery_dropped_no_local由于无本地客户端而丢弃的消息数Counter
deployment_emqx_metrics_delivery_dropped丢弃的消息投递总数Counter
deployment_emqx_metrics_messages_delayed延迟的消息数Counter
deployment_emqx_metrics_messages_delivered传递的消息数Counter
deployment_emqx_metrics_messages_dropped丢弃的消息数Counter
deployment_emqx_metrics_messages_dropped_no_subscribers由于无订阅者而丢弃的消息数Counter
deployment_emqx_metrics_messages_dropped_await_pubrel_timeout由于等待 PUBREL 超时而丢弃的消息数Counter
deployment_emqx_metrics_messages_forward转发的消息数Counter
deployment_emqx_metrics_messages_publish发布的消息数Counter
deployment_emqx_metrics_messages_qos0_received接收的 QoS 0 级别消息数Counter
deployment_emqx_metrics_messages_qos2_received接收的 QoS 2 级别消息数Counter
deployment_emqx_metrics_messages_qos1_received接收的 QoS 1 级别消息数Counter
deployment_emqx_metrics_messages_qos0_sent发送的 QoS 0 级别消息数Counter
deployment_emqx_metrics_messages_qos1_sent发送的 QoS 1 级别消息数Counter
deployment_emqx_metrics_messages_qos2_sent发送的 QoS 2 级别消息数Counter
deployment_emqx_metrics_messages_received接收的消息总数Counter
deployment_emqx_metrics_messages_sent发送的消息总数Counter
deployment_emqx_metrics_messages_retained保留的消息数Counter
deployment_emqx_metrics_messages_acked确认的消息数Counter
deployment_emqx_metrics_client_connect客户端连接数Counter
deployment_emqx_metrics_client_authenticate客户端身份验证次数Counter
deployment_emqx_metrics_client_connack发送的 CONNACK 数据包数Counter
deployment_emqx_metrics_client_connected当前已连接的客户端数Counter
deployment_emqx_metrics_client_disconnected客户端断开连接次数Counter
deployment_emqx_metrics_client_check_acl执行 ACL 访问控制检查次数Counter
deployment_emqx_metrics_client_subscribe客户端订阅次数Counter
deployment_emqx_metrics_client_unsubscribe客户端取消订阅次数Counter
deployment_emqx_metrics_client_auth_success成功的客户端身份验证次数Counter
deployment_emqx_metrics_client_auth_success_anonymous成功的匿名客户端身份验证次数Counter
deployment_emqx_metrics_client_auth_failure失败的客户端身份验证次数Counter
deployment_emqx_metrics_client_acl_allow允许访问的 ACL 决策次数Counter
deployment_emqx_metrics_client_acl_deny拒绝访问的 ACL 决策次数Counter
deployment_emqx_metrics_client_acl_cache_hitACL 缓存命中次数Counter
deployment_emqx_metrics_session_created创建的会话数Counter
deployment_emqx_metrics_session_discarded丢弃的会话数Counter
deployment_emqx_metrics_session_resumed恢复的会话数Counter
deployment_emqx_metrics_session_takeovered被接管的会话数Counter
deployment_emqx_metrics_session_terminated终止的会话数Counter

数据集成指标 URI

GET /deployment_metrics/data_integration

返回供 Prometheus 采集的数据集成指标。

查询参数:

请求消息

请求示例

curl -u app_id:app_secret -X GET {api}/deployment_metrics/data_integration

响应

  • 每个资源的状态
  • 每个规则的状态
  • 每个规则的不同匹配状态计数(“匹配“、”通过”、“失败”、“异常”、“无结果”)
  • 每个规则下所有动作的处理状态计数(“成功”、“失败”、“已执行”)
指标名称描述类型变量标签
deployment_emqx_resource_status指定资源的当前状态Gaugeresource_id
deployment_emqx_rule_status指定规则的当前状态Gaugerule_id
deployment_emqx_rule_matched_rate指定规则的匹配率Gaugerule_id
deployment_emqx_rule_matched_count指定规则的总匹配次数Gaugerule_id, match_status
deployment_emqx_rule_action_execution_count指定规则下执行动作的次数Gaugerule_id, execution_status

Prometheus 配置

  1. 安装 Prometheus

    bash
    wget -c https://github.com/prometheus/prometheus/releases/download/v2.35.0-rc0/prometheus-2.35.0-rc0.linux-amd64.tar.gz
    tar xvfz prometheus-*.tar.gz
  2. 修改配置文件

    找到您的 Prometheus 服务指定的监控目录,按如下示例修改配置文件 prometheus.yml 的 scrape_configs section。

    bash
    scrape_configs:
      - job_name: 'emqx_cloud_metrics_deployment'
        scheme: 'https'
        static_configs:
          - targets: [ 'xxxx:8443' ]
        metrics_path: "/api/deployment_metrics"
        params:
          type: [ "prometheus" ]
        basic_auth:
          username: 'APP ID'
          password: 'APP Secret'
      - job_name: 'emqx_cloud_metrics_data_integration'
        scheme: 'https'
        static_configs:
          - targets: [ 'xxxx:8443' ]
        metrics_path: "/api/deployment_metrics/data_integration"
      params:
        type: [ "prometheus" ]
      basic_auth:
        username: 'APP ID'
        password: 'APP Secret'
  3. 启动并检查服务状态

    启动 Prometheus

    bash
     ./prometheus --config.file=prometheus.yml

    通过本地 IP + 对应端⼝,如:x.x.x.x:9090 访问您的 Prometheus 服务,检查 Status - Targets 以确认新的 scrape_config 文件已被读取。如果状态显示异常,您可能需要检查配置文件,重新启动 Prometheus 服务。

    Prometheus_service

Grafana 配置

  1. 安装并启动 Grafana

    bash
     wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6.linux-amd64.tar.gz
     tar -zxvf grafana-enterprise-8.4.6.linux-amd64.tar.gz
     ./bin/grafana-server
  2. 配置 Grafana

    通过本地 IP + 对应端⼝,如:x.x.x.x:3000 访问 Grafana 的 dashbroad,初始 ID 和密码都是 admin,初次登录请修改密码,登录进⼊后需添加 Data sources - Prometheus。

    Grafana

  3. 导⼊ Grafana 数据模板

    EMQX Cloud 提供了 Grafana 的 Dashboard 的模板文件。这些模板包含了所有 EMQX Cloud 监控数据的展示。用户可直接导入到 Grafana 中,进行显示 EMQX 的监控状态的图标。

    模板文件位于:emqx_prometheus/grafana_template/EMQ.json,可通过 Upload JSON file 的方式上传本地的 EMQ.json ⽂件,或者通过 Import via panel json 手动编写。

    Grafana

指标详解

完成整套系统搭建并运行一段时间后,EMQX Cloud Prometheus 收集到的数据将展示在 Grafana 上,包括客户端数、订阅数、主题数、消息数、报文数等业务信息历史统计,可以查看每种指标对应的展示图表,某个时间点的详细信息.

Grafana

Prometheus 跟踪您的 EMQX Cloud 部署的以下指标数据。

指标名指标类型指标说明
emqx_vm_used_memorygaugeVM已占用内存
emqx_vm_total_memorygaugeVM总开辟内存
emqx_vm_run_queuegaugeRunQueue大小
emqx_vm_process_messages_in_queuesgauge消息阻塞总数
emqx_vm_cpu_usegaugeCPU占用数
emqx_vm_cpu_idlegaugeCPU空闲数
emqx_topics_maxgauge历史最大主题数
emqx_topics_countgauge当前主题数
emqx_subscriptions_shared_maxgauge历史最大共享订阅数
emqx_subscriptions_shared_countgauge当前共享订阅数
emqx_subscriptions_maxgauge历史最大订阅关系数
emqx_subscriptions_countgauge当前订阅关系数
emqx_subscribers_maxgauge历史最大订阅者总数
emqx_subscribers_countgauge当前订阅者数
emqx_suboptions_maxgauge历史最大订阅配置项数
emqx_suboptions_countgauge历史最大订阅配置项数
emqx_sessions_maxgauge历史最大会话数
emqx_sessions_countgauge当前会话数
emqx_session_terminatedcounter会话终止
emqx_session_takeoveredcounter会话被接管
emqx_session_resumedcounter会话重新激活
emqx_session_discardedcounter会话丢弃
emqx_session_createdcounter会话创建
emqx_routes_maxgauge历史最大路由数
emqx_routes_countgauge当前路由数
emqx_retained_maxgauge历史最大保留消息数
emqx_retained_countgauge当前保留消息数
emqx_packets_unsubscribe_receivedcounter已接收UNSUB报文数
emqx_packets_unsubscribe_errorcounter已拒绝UNSUB报文数
emqx_packets_unsuback_sentcounter已发送UNSUBACK报文数
emqx_packets_subscribe_receivedcounter已接收SUB报文数
emqx_packets_subscribe_errorcounter已拒绝SUB报文数
emqx_packets_subscribe_auth_errorcounter已拒绝SUB报文数(ACL检查失败)
emqx_packets_suback_sentcounter已发送SUBACK报文数
emqx_packets_sentcounter已发送报文数
emqx_packets_receivedcounter已接收报文数
emqx_packets_pubrel_sentcounter已发送PUBREL报文数
emqx_packets_pubrel_receivedcounter已接收PUBREL报文数
emqx_packets_pubrel_missedcounter已拒绝PUBREL报文数(PacketId未找到)
emqx_packets_pubrec_sentcounter已发送PUBREC报文数
emqx_packets_pubrec_receivedcounter已接收PUBREC报文数
emqx_packets_pubrec_missedcounter已拒绝PUBREC报文数(PacketId未找到)
emqx_packets_pubrec_inusecounter已拒绝PUBREC报文数(PacketId被占用)
emqx_packets_publish_sentcounter已发送PUB报文数
emqx_packets_publish_receivedcounter已接收PUB报文数
emqx_packets_publish_inusecounter已拒绝PUB报文数(PacketId被占用)
emqx_packets_publish_errorcounter错误的PUB报文数
emqx_packets_publish_droppedcounter已丢弃PUB报文数
emqx_packets_publish_auth_errorcounter已拒绝PUB报文数 (ACL检查失败)
emqx_packets_pubcomp_sentcounter已发送PUBCOMP报文数
emqx_packets_pubcomp_receivedcounter已接收PUBCOMP报文数
emqx_packets_pubcomp_missedcounter已拒绝PUBCOMP报文数(PacketId未找到)
emqx_packets_pubcomp_inusecounter已拒绝PUBCOMP报文数(PacketId被占用)
emqx_packets_puback_sentcounter已发送PUBACK报文数
emqx_packets_puback_receivedcounter已接收PUBACK报文数
emqx_packets_puback_missedcounter已拒绝PUBACK报文数(PacketId未找到)
emqx_packets_puback_inusecounter已拒绝PUBACK报文数(PacketId被占用)
emqx_packets_pingresp_sentcounter已发送PONG报文数
emqx_packets_pingreq_receivedcounter已接收PING报文数
emqx_packets_disconnect_sentcounter已发送断开连接报文数
emqx_packets_disconnect_receivedcounter已接收断开连接报文数
emqx_packets_connectcounter已接收连接报文数
emqx_packets_connack_sentcounter已发送连接确认报文数
emqx_packets_connack_errorcounter已发送连接失败报文数
emqx_packets_connack_auth_errorcounter已发送连接认证失败报文数
emqx_packets_auth_sentcounter已发送认证报文数
emqx_packets_auth_receivedcounter已接收认证报文数
emqx_messages_sentcounter消息发出总数
emqx_messages_retainedcounter存入为保留消息总数
emqx_messages_receivedcounter消息接收总数
emqx_messages_qos2_sentcounterQoS2消息发出总数
emqx_messages_qos2_receivedcounterQoS2消息接收总数
emqx_messages_qos1_sentcounterQoS1消息发出总数
emqx_messages_qos1_receivedcounterQoS1消息接收总数
emqx_messages_qos0_sentcounterQoS0消息发出总数
emqx_messages_qos0_receivedcounterQoS0消息接收总数
emqx_messages_publishcounter消息发起发布
emqx_messages_forwardcounter消息跨节点转发总数
emqx_messages_dropped_no_subscriberscounter无订阅者消息丢弃总数
emqx_messages_dropped_expiredcounter过期消息丢弃总数
emqx_messages_droppedcounter消息丢弃
emqx_messages_deliveredcounter消息已投递
emqx_messages_delayedcounter存入为延迟消息总数
emqx_messages_ackedcounter消息已收到回执
emqx_delivery_dropped_too_largecounter消息投递太大丢弃数
emqx_delivery_dropped_queue_fullcounter消息投递队列满丢弃数
emqx_delivery_dropped_qos0_msgcounter消息投递 QoS0 丢弃数
emqx_delivery_dropped_no_localcounter消息投递no_local丢弃数
emqx_delivery_dropped_expiredcounter消息投递超期丢弃数
emqx_delivery_droppedcounter消息投递丢弃数
emqx_connections_maxgauge历史最大连接数
emqx_connections_countgauge当前连接数
emqx_cluster_nodes_stoppedgauge集群停止节点数
emqx_cluster_nodes_runninggauge集群运行节点数
emqx_client_unsubscribecounter客户端取消订阅
emqx_client_subscribecounter客户端发起订阅
emqx_client_disconnectedcounter客户端已下线
emqx_client_connectedcounter客户端已上线
emqx_client_check_aclcounter客户端发起ACL请求
emqx_client_authenticatecounter客户端发起认证
emqx_client_auth_anonymouscounter作为匿名客户端登录
emqx_bytes_sentcounter已发送总字节数
emqx_bytes_receivedcounter已接收总字节数