Skip to content

Prometheus Monitoring

The EMQX Platform provides a Prometheus API that allows you to easily call the API to monitor key metrics of the EMQX Platform. This page introduces how to configure the Prometheus service, read key metrics from the EMQX Platform API, and use Grafana templates to visualize the metrics.

Note

This feature is only available with the EMQX Dedicated edition.

API Configuration

Find the Deployment API Key on the Overview page of your deployment to obtain the API address. Click + New Application to get the APP ID and APP Secret.

prometheus_en_api

Deployment Metrics URI

GET /deployment_metrics

Returns cluster metrics for Prometheus collection.

Query Parameters:

None

Request Message

None

Request Example

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

Response

MetricsDescriptionType
deployment_emqx_sessions_countThe current number of sessions for the clusterGauge
deployment_emqx_connections_countThe current number of connections for the clusterGauge
deployment_emqx_sent_msg_rateThe rate of messages sent per secondGauge
deployment_emqx_received_msg_rateThe rate of message receiving.Gauge
deployment_emqx_metrics_cluster_sessions_countNumber of sessions in the clusterGauge
deployment_emqx_metrics_cluster_sessions_maxHistorical maximum number of sessions in the clusterGauge
deployment_emqx_metrics_delayed_countNumber of delayed messagesGauge
deployment_emqx_metrics_delayed_maxHistorical maximum number of delayed messagesGauge
deployment_emqx_metrics_live_connections_countNumber of live connectionsGauge
deployment_emqx_metrics_live_connections_maxHistorical maximum number of live connectionsGauge
deployment_emqx_disconnected_durable_sessionsNumber of disconnected sessions that are preservedGauge
deployment_emqx_dropped_msg_rateRate of messages that were droppedGauge
deployment_emqx_license_quotaMaximum number of connections allowed by the licenseGauge
deployment_emqx_node_countThe number of nodes in the EMQX clusterGauge
deployment_emqx_persisted_rateRate of messages that were persisted to storageGauge
deployment_emqx_retained_msg_countCurrent count of retained messagesGauge
deployment_emqx_shared_subscriptionsNumber of shared subscriptionsGauge
deployment_emqx_subscriptionsTotal number of subscriptionsGauge
deployment_emqx_subscriptions_durableNumber of durable subscriptions that persist across sessionsGauge
deployment_emqx_subscriptions_ramNumber of non-durable subscriptions stored in RAMGauge
deployment_emqx_topicsTotal number of topicsGauge
deployment_emqx_transformation_failed_rateRate of message transformation failuresGauge
deployment_emqx_transformation_succeeded_rateRate of successful message transformationsGauge
deployment_emqx_validation_failed_rateRate of message validation failuresGauge
deployment_emqx_validation_succeeded_rateRate of successful message validationsGauge
deployment_emqx_metrics_topics_countNumber of current topicsGauge
deployment_emqx_metrics_topics_maxMaximum number of topicsGauge
deployment_emqx_metrics_subscriptions_maxMaximum number of subscriptionsGauge
deployment_emqx_metrics_subscriptions_countCurrent number of subscriptionsGauge
deployment_emqx_metrics_subscribers_maxMaximum number of subscribersGauge
deployment_emqx_metrics_subscribers_countCurrent number of subscribersGauge
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_suboptions_countCurrent number of subscription optionsGauge
deployment_emqx_metrics_suboptions_maxMaximum number of subscription optionsGauge
deployment_emqx_metrics_subscriptions_shared_countCurrent number of shared subscriptionsGauge
deployment_emqx_metrics_subscriptions_shared_maxMaximum number of shared subscriptionsGauge
deployment_emqx_metrics_retained_countCurrent number of retained messagesGauge
deployment_emqx_metrics_retained_maxHistorical maximum number of retained messagesGauge
deployment_emqx_cluster_statusThe status of the EMQX clusterGauge
deployment_emqx_metrics_durable_subscriptions_maxThe max number of durable subscriptions for the current clusterCounter
deployment_emqx_metrics_durable_subscriptions_countThe current number of durable subscriptions for the current clusterCounter
deployment_emqx_metrics_client_disconnected_reasonListener shutdown counts labeled by reasonCounter
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_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_expiredNumber of expired messagesCounter
deployment_emqx_metrics_messages_dropped_no_subscribersNumber of messages dropped due to no subscribersCounter
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_auth_anonymousNumber of anonymous client authenticationsCounter
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_subscribeNumber of client subscriptionsCounter
deployment_emqx_metrics_client_unsubscribeNumber of client unsubscriptionsCounter
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_terminatedNumber of terminated sessionsCounter
deployment_emqx_metrics_authentication_failureNumber of failed authenticationsCounter
deployment_emqx_metrics_authentication_successNumber of successful authenticationsCounter
deployment_emqx_metrics_authentication_success_anonymousNumber of successful anonymous authenticationsCounter
deployment_emqx_metrics_authorization_allowNumber of successful authorizationsCounter
deployment_emqx_metrics_authorization_cache_hitNumber of cache hits during authorizationCounter
deployment_emqx_metrics_authorization_cache_missNumber of cache misses during authorizationCounter
deployment_emqx_metrics_authorization_denyNumber of authorization deniesCounter
deployment_emqx_metrics_authorization_matched_allowNumber of successful authorization matchesCounter
deployment_emqx_metrics_authorization_matched_denyNumber of authorization deny matchesCounter
deployment_emqx_metrics_authorization_nomatchNumber of authorization no matchCounter
deployment_emqx_metrics_authorization_superuserNumber of superuser authorizationsCounter
deployment_emqx_metrics_client_authorizeclient.authorize hook trigger timesCounter
deployment_emqx_metrics_packets_connectNumber of sent CONNECT packetsCounter
deployment_emqx_metrics_session_takenoversession.takenover hook trigger timesCounter

Data Integration Metrics URI

GET /deployment_metrics/data_integration

Returns data integration metrics for Prometheus collection.

Query Parameters:

None

Request Message

None

Request Example

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

Response

  • Each resource status
  • Each rule status
  • 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_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
deployment_emqx_action_dropped_countThe count of dropped events for a specific actionCounterdrop_reason
deployment_emqx_action_enableNumber of emqx nodes with action enabledGaugestatus
deployment_emqx_action_events_countThe count of events for a specific actionCounterevent, action_id
deployment_emqx_action_queued_countThe count of queued events for a specific actionGaugeaction_id, queue_status
deployment_emqx_action_retried_countThe count of retried events for a specific actionCounteraction_id, retry_status
deployment_emqx_action_statusThe current status of a specific actionGaugeaction_id

Authentication and Authorization Metrics URI

GET /deployment_metrics/auth

Returns authentication and authorization metrics for Prometheus collection.

Query Parameters:

None

Request Message

None

Request Example

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

Response

MetricsDescriptionTypeVariable Labels
deployment_emqx_authn_enableIs the specified auth method enabledGaugeid
deployment_emqx_authn_match_countStatistics for each auth methodGaugeid, status
deployment_emqx_authn_statusThe availability status of each auth n methodGaugeid
deployment_emqx_authz_enableIs the specified autz method enabledGaugeid
deployment_emqx_authz_match_countStatistics for each autz methodGaugeid, status
deployment_emqx_authz_statusThe availability status of each auth z methodGaugeid

Smart Data Hub Metrics URI

GET /deployment_metrics/data_hub

Returns smart data hub metrics for Prometheus collection.

Query Parameters:

None

Request Message

None

Request Example

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

Response

MetricsDescriptionTypeVariable Labels
emqx_message_transformation_enableMessage transformation enable statusGaugevalidation_name
emqx_message_transformation_statsTransformation statisitcsCounterstats, validation_name
emqx_schema_validation_enableSchema validation enable statusGaugevalidation_name
emqx_schema_validation_statsSchema validation statisticsCounterstats, validation_name

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 the 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_deployment_metrics'
        scheme: 'https'
        static_configs:
          - targets: [ 'xxxx:8443' ]
        metrics_path: "/api/v5/deployment_metrics"
        params:
          type: [ "prometheus" ]
        basic_auth:
          username: 'APP ID'
          password: 'APP Secret'
      - job_name: 'emqx_cloud_deployment_data_integration_metrics'
        scheme: 'https'
        static_configs:
          - targets: [ 'xxxx:8443' ]
        metrics_path: "/api/v5/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 should 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.

    The EMQX Platform provides template files for Grafana dashboards. These templates include displays of all EMQX Platform monitoring data. Users can directly import these templates into Grafana to generate charts showing the monitoring status of EMQX. Click here to get the template file.

    You can upload the local grafana_template.json file via "Upload JSON file" or manually configure it via "Import via panel json".

    Grafana

Metrics Details

After completing the system setup and running it for a period, the data collected by EMQX Platform Prometheus will be displayed on Grafana. This includes historical statistics on the number of clients, subscriptions, topics, messages, packets, and other business information. You can view charts corresponding to each metric and detailed information at specific points in time.

Grafana

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

MetricsTypeDescription
deployment_emqx_connections_countgaugeNumber of cluster connections
deployment_emqx_sessions_countgaugeTotal number of sessions
deployment_emqx_messages_rategaugeTotal message rate
deployment_emqx_messages_send_rategaugeMessage send rate
deployment_emqx_messages_receive_rategaugeMessage receive rate
deployment_emqx_metrics_bytes_receivedgaugeNumber of bytes received
deployment_emqx_metrics_bytes_sentgaugeNumber of bytes sent
deployment_emqx_metrics_retained_countgaugeNumber of retained messages
deployment_emqx_metrics_messages_receivedcounterNumber of Messages received
deployment_emqx_metrics_messages_qos0_receivedcounterNumber of QoS=0 messages received
deployment_emqx_metrics_messages_qos1_receivedcounterNumber of QoS=1 messages received
deployment_emqx_metrics_messages_qos2_receivedcounterNumber of QoS=2 messages received
deployment_emqx_metrics_messages_droppedcounterNumber of messages dropped at receive stage
deployment_emqx_metrics_messages_dropped_expiredcounterNumber of messages dropped due to expiration
deployment_emqx_metrics_messages_dropped_no_subscriberscounterNumber of messages dropped due to no subscribers
deployment_emqx_metrics_messages_sentcounterNumber of messages sent
deployment_emqx_metrics_messages_qos0_sentcounterNumber of QoS=0 messages sent
deployment_emqx_metrics_messages_qos1_sentcounterNumber of QoS=1 messages sent
deployment_emqx_metrics_messages_qos2_sentcounterNumber of QoS=2 messages sent
deployment_emqx_metrics_delivery_droppedcounterNumber of messages dropped at the delivery stage
deployment_emqx_metrics_delivery_dropped_too_largecounterNumber of messages dropped due to size
deployment_emqx_metrics_delivery_dropped_queue_fullcounterNumber of messages dropped due to full queue
deployment_emqx_metrics_delivery_dropped_no_localcounterNumber of messages dropped due to No Local
deployment_emqx_metrics_delivery_dropped_expiredcounterNumber of messages dropped due to expiration
deployment_emqx_metrics_topics_countgaugeNumber of topics
deployment_emqx_metrics_subscriptions_countgaugeNumber of subscriptions
deployment_emqx_metrics_subscriptions_shared_countgaugeNumber of shared subscriptions
deployment_emqx_metrics_subscribers_countgaugeNumber of subscribers
deployment_emqx_metrics_authentication_successcounterNumber of successful authentications
deployment_emqx_metrics_authentication_failurecounterNumber of failed authentications
deployment_emqx_metrics_client_authorizecounterNumber of client authorizations
deployment_emqx_metrics_authorization_allowcounterNumber of successful authorizations
deployment_emqx_metrics_authorization_denycounterNumber of authorization denials
deployment_emqx_metrics_authorization_matched_allowcounterNumber of successful authorization matches
deployment_emqx_metrics_authorization_matched_denycounterNumber of authorization denial matches
deployment_emqx_metrics_authorization_nomatchcounterNumber of authorization mismatches
deployment_emqx_metrics_packets_receivedcounterNumber of packets received
deployment_emqx_metrics_packets_sentcounterNumber of packets sent
deployment_emqx_metrics_packets_connect_receivedcounterNumber of CONNET packets received
deployment_emqx_metrics_packets_connack_sentcounterNumber of CONNACK packets sent
deployment_emqx_metrics_packets_disconnect_receivedcounterNumber of DISCONNECT packets received
deployment_emqx_metrics_packets_disconnect_sentcounterNumber of DISCONNECT packets sent
deployment_emqx_metrics_packets_publish_receivedcounterNumber of PUBLISH packets received
deployment_emqx_metrics_packets_publish_sentcounterNumber of PUBLISH packets sent
deployment_emqx_metrics_packets_subscribe_receivedcounterNumber of SUBSCRIBE packets received
deployment_emqx_metrics_packets_unsubscribe_receivedcounterNumber of UNSUBSCRIBE packets received
deployment_emqx_metrics_packets_pingreq_receivedcounterNumber of PINGREQ packets received
deployment_emqx_metrics_packets_pingresp_sentcounterNumber of PINGRESP packets sent
deployment_emqx_metrics_packets_auth_receivedcounterNumber of AUTH packets received
deployment_emqx_metrics_packets_auth_sentcounterNumber of AUTH packets sent
deployment_emqx_rule_statusgaugeRule status
deployment_emqx_rule_matched_rategaugeRule match rate
deployment_emqx_rule_matched_countgaugeNumber of rule matches
deployment_emqx_rule_action_execution_countgaugeNumber of rule action executions