Skip to content

Prometheus Monitoring Alerts

Note

This feature is available on Dedicated Plan and BYOC Plan.

The Prometheus API is available in the EMQX Cloud and can be used to easily monitor critical metrics. In this article, we will explain how to configure the Prometheus service, access to critical metrics from the EMQX Cloud API, and how to view metrics using Grafana.

API Configuration

Go to EMQX Cloud Deployment Console, find Overview-REST API, get the API address, click on New Application, get the APP ID and APP Secret.

cloud_prometheus_api

Deployment Metrics URI

GET /deployment_metrics

Returns cluster metrics for Prometheus collection.

Query Parameters:

None

Request Message

None

Request Example

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

Response

MetricsDescriptionType
deployment_emqx_cluster_statusThe status of the EMQX clusterGauge
deployment_emqx_sessions_countThe current number of sessions for the clusterGauge
deployment_emqx_connections_countThe current number of connections for the clusterGauge
deployment_emqx_messages_rateThe rate of messages sent and received per secondGauge
deployment_emqx_messages_send_rateThe rate of messages sent per secondGauge
deployment_emqx_messages_receive_rateThe rate of message receivingGauge
deployment_emqx_subscriptions_countThe count of subscriptions for the clusterGauge
deployment_emqx_metrics_live_connections_countThe current number of live connections for the current clusterGauge
deployment_emqx_metrics_live_connections_maxThe maximum number of live connections for the current clusterGauge
deployment_emqx_metrics_modules_countThe current number of modules for the current clusterGauge
deployment_emqx_metrics_modules_maxThe maximum number of modules for the current clusterGauge
deployment_emqx_metrics_users_countThe current number of username for the current clusterGauge
deployment_emqx_metrics_connections_countCurrent number of connectionsGauge
deployment_emqx_metrics_connections_maxMaximum number of connectionsGauge
deployment_emqx_metrics_channels_countCurrent number of channelsGauge
deployment_emqx_metrics_channels_maxMaximum number of channelsGauge
deployment_emqx_metrics_sessions_countCurrent number of sessionsGauge
deployment_emqx_metrics_sessions_maxMaximum number of sessionsGauge
deployment_emqx_metrics_topics_countCurrent number of topicsGauge
deployment_emqx_metrics_topics_maxMaximum number of topicsGauge
deployment_emqx_metrics_suboptions_countCurrent number of subscription optionsGauge
deployment_emqx_metrics_suboptions_maxMaximum number of subscription optionsGauge
deployment_emqx_metrics_subscribers_countCurrent number of subscribersGauge
deployment_emqx_metrics_subscribers_maxMaximum number of subscribersGauge
deployment_emqx_metrics_subscriptions_countCurrent number of subscriptionsGauge
deployment_emqx_metrics_subscriptions_maxMaximum number of subscriptionsGauge
deployment_emqx_metrics_subscriptions_shared_countCurrent number of shared subscriptionsGauge
deployment_emqx_metrics_subscriptions_shared_maxMaximum number of shared subscriptionsGauge
deployment_emqx_metrics_routes_countCurrent number of routesGauge
deployment_emqx_metrics_routes_maxMaximum number of routesGauge
deployment_emqx_metrics_retained_countCurrent number of retained messagesGauge
deployment_emqx_metrics_retained_maxHistorical maximum number of retained messagesGauge
deployment_emqx_metrics_client_authenticate_successclient.authenticate hook trigger times with successCounter
deployment_emqx_metrics_bytes_receivedNumber of received bytesCounter
deployment_emqx_metrics_bytes_sentNumber of sent bytesCounter
deployment_emqx_metrics_packets_receivedNumber of received packetsCounter
deployment_emqx_metrics_packets_sentNumber of sent packetsCounter
deployment_emqx_metrics_packets_connect_receivedNumber of received CONNECT packetsCounter
deployment_emqx_metrics_packets_connack_auth_errorNumber of sent CONNACK messages with auth errorCounter
deployment_emqx_metrics_packets_connack_errorNumber of sent CONNACK packets with errorCounter
deployment_emqx_metrics_packets_connack_sentNumber of sent CONNACK packetsCounter
deployment_emqx_metrics_packets_publish_receivedNumber of received PUBLISH packetsCounter
deployment_emqx_metrics_packets_publish_sentNumber of sent PUBLISH packetsCounter
deployment_emqx_metrics_packets_publish_inuseNumber of PUBLISH packets in useCounter
deployment_emqx_metrics_packets_publish_auth_errorNumber of PUBLISH packets with auth errorCounter
deployment_emqx_metrics_packets_publish_errorNumber of PUBLISH packets with errorCounter
deployment_emqx_metrics_packets_publish_droppedNumber of dropped PUBLISH packetsCounter
deployment_emqx_metrics_packets_puback_receivedNumber of received PUBACK packetsCounter
deployment_emqx_metrics_packets_puback_sentNumber of sent PUBACK packetsCounter
deployment_emqx_metrics_packets_puback_inuseNumber of PUBACK packets in useCounter
deployment_emqx_metrics_packets_puback_missedNumber of missed PUBACK packetsCounter
deployment_emqx_metrics_packets_pubrec_receivedNumber of received PUBREC packetsCounter
deployment_emqx_metrics_packets_pubrec_sentNumber of sent PUBREC packetsCounter
deployment_emqx_metrics_packets_pubrec_inuseNumber of PUBREC packets in useCounter
deployment_emqx_metrics_packets_pubrec_missedNumber of missed PUBREC packetsCounter
deployment_emqx_metrics_packets_pubrel_receivedNumber of received PUBREL packetsCounter
deployment_emqx_metrics_packets_pubrel_sentNumber of sent PUBREL packetsCounter
deployment_emqx_metrics_packets_pubrel_missedNumber of missed PUBREL packetsCounter
deployment_emqx_metrics_packets_pubcomp_receivedNumber of received PUBCOMP packetsCounter
deployment_emqx_metrics_packets_pubcomp_sentNumber of sent PUBCOMP packetsCounter
deployment_emqx_metrics_packets_pubcomp_inuseNumber of PUBCOMP packets in useCounter
deployment_emqx_metrics_packets_pubcomp_missedNumber of missed PUBCOMP packetsCounter
deployment_emqx_metrics_packets_subscribe_receivedNumber of received SUBSCRIBE packetsCounter
deployment_emqx_metrics_packets_subscribe_errorNumber of SUBSCRIBE packets with errorCounter
deployment_emqx_metrics_packets_subscribe_auth_errorNumber of SUBSCRIBE packets with auth errorCounter
deployment_emqx_metrics_packets_suback_sentNumber of sent SUBACK packetsCounter
deployment_emqx_metrics_packets_unsubscribe_receivedNumber of received UNSUBSCRIBE packetsCounter
deployment_emqx_metrics_packets_unsubscribe_errorNumber of UNSUBSCRIBE packets with errorCounter
deployment_emqx_metrics_packets_unsuback_sentNumber of sent UNSUBACK packetsCounter
deployment_emqx_metrics_packets_pingreq_receivedNumber of received PINGREQ packetsCounter
deployment_emqx_metrics_packets_pingresp_sentNumber of sent PINGRESP packetsCounter
deployment_emqx_metrics_packets_disconnect_receivedNumber of received DISCONNECT packetsCounter
deployment_emqx_metrics_packets_disconnect_sentNumber of sent DISCONNECT packetsCounter
deployment_emqx_metrics_packets_auth_receivedNumber of received AUTH packetsCounter
deployment_emqx_metrics_packets_auth_sentNumber of sent AUTH packetsCounter
deployment_emqx_metrics_delivery_dropped_too_largeNumber of dropped too large deliveriesCounter
deployment_emqx_metrics_delivery_dropped_queue_fullNumber of dropped deliveries due to full queueCounter
deployment_emqx_metrics_delivery_dropped_qos0_msgNumber of dropped QoS 0 messagesCounter
deployment_emqx_metrics_delivery_dropped_expiredNumber of expired message deliveriesCounter
deployment_emqx_metrics_delivery_dropped_no_localNumber of deliveries with no local clientsCounter
deployment_emqx_metrics_delivery_droppedTotal number of dropped deliveriesCounter
deployment_emqx_metrics_messages_delayedNumber of delayed messagesCounter
deployment_emqx_metrics_messages_deliveredNumber of delivered messagesCounter
deployment_emqx_metrics_messages_droppedNumber of dropped messagesCounter
deployment_emqx_metrics_messages_dropped_no_subscribersNumber of messages dropped due to no subscribersCounter
deployment_emqx_metrics_messages_dropped_await_pubrel_timeoutNumber of messages dropped awaiting PUBREL timeoutCounter
deployment_emqx_metrics_messages_forwardNumber of forwarded messagesCounter
deployment_emqx_metrics_messages_publishNumber of published messagesCounter
deployment_emqx_metrics_messages_qos0_receivedNumber of QoS 0 messages receivedCounter
deployment_emqx_metrics_messages_qos2_receivedNumber of QoS 2 messages receivedCounter
deployment_emqx_metrics_messages_qos1_receivedNumber of QoS 1 messages receivedCounter
deployment_emqx_metrics_messages_qos0_sentNumber of QoS 0 messages sentCounter
deployment_emqx_metrics_messages_qos1_sentNumber of QoS 1 messages sentCounter
deployment_emqx_metrics_messages_qos2_sentNumber of QoS 2 messages sentCounter
deployment_emqx_metrics_messages_receivedTotal number of received messagesCounter
deployment_emqx_metrics_messages_sentTotal number of sent messagesCounter
deployment_emqx_metrics_messages_retainedNumber of retained messagesCounter
deployment_emqx_metrics_messages_ackedNumber of acknowledged messagesCounter
deployment_emqx_metrics_client_connectNumber of client connectionsCounter
deployment_emqx_metrics_client_authenticateNumber of client authenticationsCounter
deployment_emqx_metrics_client_connackNumber of CONNACK packets sentCounter
deployment_emqx_metrics_client_connectedNumber of currently connected clientsCounter
deployment_emqx_metrics_client_disconnectedNumber of client disconnectionsCounter
deployment_emqx_metrics_client_check_aclNumber of ACL checks performedCounter
deployment_emqx_metrics_client_subscribeNumber of client subscriptionsCounter
deployment_emqx_metrics_client_unsubscribeNumber of client unsubscriptionsCounter
deployment_emqx_metrics_client_auth_successNumber of successful client authenticationsCounter
deployment_emqx_metrics_client_auth_success_anonymousNumber of successful anonymous client authenticationsCounter
deployment_emqx_metrics_client_auth_failureNumber of failed client authenticationsCounter
deployment_emqx_metrics_client_acl_allowNumber of ACL allow decisionsCounter
deployment_emqx_metrics_client_acl_denyNumber of ACL deny decisionsCounter
deployment_emqx_metrics_client_acl_cache_hitNumber of ACL cache hitsCounter
deployment_emqx_metrics_session_createdNumber of sessions createdCounter
deployment_emqx_metrics_session_discardedNumber of discarded sessionsCounter
deployment_emqx_metrics_session_resumedNumber of resumed sessionsCounter
deployment_emqx_metrics_session_takeoveredNumber of sessions taken overCounter
deployment_emqx_metrics_session_terminatedNumber of terminated sessionsCounter

Data Integration Metrics URI

GET /deployment_metrics/data_integration

Returns data integration metrics for Prometheus collection.

Query Parameters:

None

Request Message

None

Request Example

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

Response

  • Each resource status
  • Each rule status
  • The matching rate of each rule
  • The count of different match statuses for each rule ("matched", "passed", "failed", "exception", "no_result")
  • The count of all action processing statuses under each rule ("success", "failed", "taken")
MetricsDescriptionTypeVariable Labels
deployment_emqx_resource_statusThe current status of a specific resource.Gaugeresource_id
deployment_emqx_rule_statusThe current status of a specific rule.Gaugerule_id
deployment_emqx_rule_matched_rateThe matching rate of a specific rule.Gaugerule_id
deployment_emqx_rule_matched_countThe total matches for a specific rule.Gaugerule_id, match_status
deployment_emqx_rule_action_execution_countThe execution count for actions of a specific rule.Gaugerule_id, execution_status

Prometheus Configuration

  1. Install 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. Modify configuration file

    Go to the monitoring directory specified for your Prometheus service and modify the scrape_configs section of the configuration file prometheus.yml as shown in the example below.

    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. Launch and check service status

    Launch Prometheus

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

    Access your Prometheus service via your local IP with the corresponding port, e.g. x.x.x.x:9090 and check Status-Targets to confirm that the new scrape_config file has been read. If the status shows an exception, you may need to check the configuration file and restart the Prometheus service.

    Prometheus_service

Grafana Configuration

  1. Install and launch 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. Configure Grafana

    Access Grafana dashboard via the local IP + the corresponding port, e.g. x.x.x.x:3000. The initial ID and password are admin. You can change the password when logging in for the first time.

    Grafana

  3. Import Grafana Data Templates

    EMQX Cloud provides template files for Grafana Dashboard. These templates contain a display of all EMQX Cloud monitoring data. Users can import them directly into Grafana to display EMQX monitoring status icons.

    Access to the template :emqx_prometheus/grafana_template/EMQ.json,The EMQ.json file can be uploaded locally via Upload JSON file, or written manually via the import panel json.

    Grafana

Metrics Details

After the system has been set up and running for a while, the data collected by EMQX Cloud Prometheus will be displayed on Grafana, including the number of clients, subscriptions, topics, messages, messages and other business information history statistics. You can view the corresponding display charts for each metric, and detailed information at a certain point in time.

Grafana

Prometheus tracks the following metrics data for your EMQX Cloud deployment:

MetricsTypeDescription
emqx_vm_used_memorygaugeMemory occupied by the VM
emqx_vm_total_memorygaugeTotal memory opened by the VM
emqx_vm_run_queuegaugeRunQueue size
emqx_vm_process_messages_in_queuesgaugeTotal number of message blocks
emqx_vm_cpu_usegaugeNumber of CPUs occupied
emqx_vm_cpu_idlegaugeCPU idle
emqx_topics_maxgaugeMaximum number of topics in history
emqx_topics_countgaugeNumber of current topics
emqx_subscriptions_shared_maxgaugeHistorical maximum shared subscriptions
emqx_subscriptions_shared_countgaugeCurrent Shared Subscriptions
emqx_subscriptions_maxgaugeHistorical maximum number of subscription relationships
emqx_subscriptions_countgaugeCurrent number of subscription relationships
emqx_subscribers_maxgaugeHistorical maximum number of subscribers
emqx_subscribers_countgaugeCurrent number of subscribers
emqx_suboptions_maxgaugeHistorical maximum number of subscription configuration items
emqx_suboptions_countgaugeHistorical maximum number of subscription configuration items
emqx_sessions_maxgaugeHistorical maximum number of sessions
emqx_sessions_countgaugeNumber of current sessions
emqx_session_terminatedcounterSessions terminated
emqx_session_takeoveredcounterSessions taken over
emqx_session_resumedcounterSession reactivated
emqx_session_discardedcounterSessions discarded
emqx_session_createdcounterSessions created
emqx_routes_maxgaugeHistorical maximum number of routes
emqx_routes_countgaugeCurrent number of routes
emqx_retained_maxgaugeHistorical maximum number of reserved messages
emqx_retained_countgaugeNumber of current hold messages
emqx_packets_unsubscribe_receivedcounterNumber of UNSUB messages received
emqx_packets_unsubscribe_errorcounterNumber of UNSUB messages rejected
emqx_packets_unsuback_sentcounterNumber of UNSUBACK messages sent
emqx_packets_subscribe_receivedcounterNumber of SUB messages received
emqx_packets_subscribe_errorcounterRejected SUB messages
emqx_packets_subscribe_auth_errorcounterNumber of SUB messages rejected (ACL check failed)
emqx_packets_suback_sentcounterNumber of SUBACK messages sent
emqx_packets_sentcounterNumber of messages sent
emqx_packets_receivedcounterReceived messages
emqx_packets_pubrel_sentcounterNumber of PUBREL messages sent
emqx_packets_pubrel_receivedcounterNumber of PUBREL messages received
emqx_packets_pubrel_missedcounterNumber of PUBREL messages rejected (PacketId not found)
emqx_packets_pubrec_sentcounterNumber of PUBREC messages sent
emqx_packets_pubrec_receivedcounterNumber of PUBREC messages received
emqx_packets_pubrec_missedcounterNumber of PUBREC messages rejected (PacketId not found)
emqx_packets_pubrec_inusecounterNumber of PUBREC messages rejected (PacketId occupied)
emqx_packets_publish_sentcounterNumber of PUB messages sent
emqx_packets_publish_receivedcounterNumber of PUB messages received
emqx_packets_publish_inusecounterNumber of rejected PUB messages (PacketId occupied)
emqx_packets_publish_errorcounterNumber of incorrect PUB messages
emqx_packets_publish_droppedcounterNumber of PUB messages discarded
emqx_packets_publish_auth_errorcounterNumber of PUB messages rejected (ACL check failed)
emqx_packets_pubcomp_sentcounterNumber of PUBCOMP messages sent
emqx_packets_pubcomp_receivedcounterNumber of PUBCOMP messages received
emqx_packets_pubcomp_missedcounterNumber of PUBCOMP messages rejected (PacketId not found)
emqx_packets_pubcomp_inusecounterNumber of PUBCOMP messages rejected (PacketId occupied)
emqx_packets_puback_sentcounterNumber of PUBACK messages sent
emqx_packets_puback_receivedcounterNumber of PUBACK messages received
emqx_packets_puback_missedcounterNumber of PUBACK messages rejected (PacketId not found)
emqx_packets_puback_inusecounterNumber of PUBACK messages rejected (PacketId occupied)
emqx_packets_pingresp_sentcounterNumber of PONG messages sent
emqx_packets_pingreq_receivedcounterNumber of PING messages received
emqx_packets_disconnect_sentcounterNumber of disconnect messages sent
emqx_packets_disconnect_receivedcounterNumber of disconnect messages received
emqx_packets_connectcounterNumber of connection messages received
emqx_packets_connack_sentcounterNumber of connection confirmation messages sent
emqx_packets_connack_errorcounterNumber of connection failure messages sent
emqx_packets_connack_auth_errorcounterNumber of failed connection authentication messages sent
emqx_packets_auth_sentcounterNumber of authentication messages sent
emqx_packets_auth_receivedcounterNumber of authentication messages received
emqx_messages_sentcounterTotal number of messages sent
emqx_messages_retainedcounterTotal number of messages stored as reserved messages
emqx_messages_receivedcounterTotal number of messages received
emqx_messages_qos2_sentcounterTotal number of QoS2 messages sent
emqx_messages_qos2_receivedcounterTotal number of QoS2 messages received
emqx_messages_qos1_sentcounterTotal number of QoS1 messages sent
emqx_messages_qos1_receivedcounterTotal number of QoS1 messages received
emqx_messages_qos0_sentcounterTotal number of QoS0 messages sent
emqx_messages_qos0_receivedcounterTotal number of QoS0 messages received
emqx_messages_publishcounterTotal number of messages initiated and released
emqx_messages_forwardcounterTotal number of messages forwarded across nodes
emqx_messages_dropped_no_subscriberscounterTotal number of non-subscriber messages discarded
emqx_messages_dropped_expiredcounterTotal number of expired messages discarded
emqx_messages_droppedcounterMessages Discarded
emqx_messages_deliveredcounterMessages Delivered
emqx_messages_delayedcounterTotal number of messages deposited as delayed
emqx_messages_ackedcounterMessages received back
emqx_delivery_dropped_too_largecounterNumber of discards for messages delivered too large
emqx_delivery_dropped_queue_fullcounterMessage Delivery Queue Full Discards
emqx_delivery_dropped_qos0_msgcounterMessage delivered QoS0 Number of discards
emqx_delivery_dropped_no_localcounterNumber of message delivery no_local discards
emqx_delivery_dropped_expiredcounterMessage delivery overdue discards
emqx_delivery_droppedcounterMessage delivery discards
emqx_connections_maxgaugeHistorical maximum number of connections
emqx_connections_countgaugeCurrent connections
emqx_cluster_nodes_stoppedgaugeNumber of stopped nodes in the cluster
emqx_cluster_nodes_runninggaugeNumber of running nodes in the cluster
emqx_client_unsubscribecounterClient unsubscribes
emqx_client_subscribecounterClient initiated subscriptions
emqx_client_disconnectedcounterClients offline
emqx_client_connectedcounterClients are online
emqx_client_check_aclcounterClient initiated ACL request
emqx_client_authenticatecounterClient initiates authentication
emqx_client_auth_anonymouscounterLogin as anonymous client
emqx_bytes_sentcounterTotal number of bytes sent
emqx_bytes_receivedcounterTotal bytes received