Support ActiveMQ classic Monitoring

Motivation

Apache ActiveMQ Classic is a popular and powerful open source messaging and Integration Patterns server. It supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features.

Now I want to add ActiveMQ Classic monitoring via the OpenTelemetry Collector which fetches metrics from jmx prometheus exporter run as a Java Agent.

Architecture Graph

There is no significant architecture-level change.

Proposed Changes

Apache ActiveMQ Classic has extensive support for JMX to allow you to monitor and control the behavior of the broker via the JMX MBeans.

Jmx prometheus exporter collects metrics data from ActiveMQ classic, this exporter is intended to be run as a Java Agent, exposing a HTTP server and serving metrics of the local JVM.

Using openTelemetry receiver to fetch these metrics to SkyWalking OAP server.

ActiveMQ Cluster Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
System Load AverageCountmeter_activemq_cluster_system_load_averageThe average system load, range:[0, 10000].JMX Prometheus Exporter
Thread CountCountmeter_activemq_cluster_thread_countThreads currently used by the JVM.JMX Prometheus Exporter
Init Heap Memory UsageBytesmeter_activemq_cluster_heap_memory_usage_initThe initial amount of heap memory available.JMX Prometheus Exporter
Committed Heap Memory UsageBytesmeter_activemq_cluster_heap_memory_usage_committedThe memory is guaranteed to be available for the JVM to use.JMX Prometheus Exporter
Used Heap Memory UsageBytesmeter_activemq_cluster_heap_memory_usage_usedThe amount of JVM heap memory currently in use.JMX Prometheus Exporter
Max Heap Memory UsageBytesmeter_activemq_cluster_heap_memory_usage_maxThe maximum possible size of the heap memory.JMX Prometheus Exporter
GC G1 Old Collection CountCountmeter_activemq_cluster_gc_g1_old_collection_countThe gc count of G1 Old Generation(JDK[9,17]).JMX Prometheus Exporter
GC G1 Young Collection CountCountmeter_activemq_cluster_gc_g1_young_collection_countThe gc count of G1 Young Generation(JDK[9,17]).JMX Prometheus Exporter
GC G1 Old Collection Timemsmeter_activemq_cluster_gc_g1_old_collection_timeThe gc time spent in G1 Old Generation in milliseconds(JDK[9,17]).JMX Prometheus Exporter
GC G1 Young Collection Timemsmeter_activemq_cluster_gc_g1_young_collection_timeThe gc time spent in G1 Young Generation in milliseconds(JDK[9,17]).JMX Prometheus Exporter
GC Parallel Old Collection CountCountmeter_activemq_cluster_gc_parallel_old_collection_countThe gc count of Parallel Old Generation(JDK[6,8]).JMX Prometheus Exporter
GC Parallel Young Collection CountCountmeter_activemq_cluster_gc_parallel_young_collection_countThe gc count of Parallel Young Generation(JDK[6,8]).JMX Prometheus Exporter
GC Parallel Old Collection Timemsmeter_activemq_cluster_gc_parallel_old_collection_timeThe gc time spent in Parallel Old Generation in milliseconds(JDK[6,8]).JMX Prometheus Exporter
GC Parallel Young Collection Timemsmeter_activemq_cluster_gc_parallel_young_collection_timeThe gc time spent in Parallel Young Generation in milliseconds(JDK[6,8]).JMX Prometheus Exporter
Enqueue RateCount/smeter_activemq_cluster_enqueue_rateNumber of messages that have been sent to the cluster per second(JDK[6,8]).JMX Prometheus Exporter
Dequeue RateCount/smeter_activemq_cluster_dequeue_rateNumber of messages that have been acknowledged or discarded on the cluster per second.JMX Prometheus Exporter
Dispatch RateCount/smeter_activemq_cluster_dispatch_rateNumber of messages that has been delivered to consumers per second.JMX Prometheus Exporter
Expired RateCount/smeter_activemq_cluster_expired_rateNumber of messages that have been expired per second.JMX Prometheus Exporter
Average Enqueue Timemsmeter_activemq_cluster_average_enqueue_timeThe average time a message was held on this cluster.JMX Prometheus Exporter
Max Enqueue Timemsmeter_activemq_cluster_max_enqueue_timeThe max time a message was held on this cluster.JMX Prometheus Exporter

ActiveMQ Broker Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
Uptimesecmeter_activemq_broker_uptimeUptime of the broker in day.JMX Prometheus Exporter
Statemeter_activemq_broker_stateIf slave broker 1 else 0.JMX Prometheus Exporter
Current ConnectionsCountmeter_activemq_broker_current_connectionsThe number of clients connected to the broker currently.JMX Prometheus Exporter
Current Producer CountCountmeter_activemq_broker_current_producer_countThe number of producers currently attached to the broker.JMX Prometheus Exporter
Current Consumer CountCountmeter_activemq_broker_current_consumer_countThe number of consumers consuming messages from the broker.JMX Prometheus Exporter
Producer CountCountmeter_activemq_broker_producer_countNumber of message producers active on destinations.JMX Prometheus Exporter
Consumer CountCountmeter_activemq_broker_consumer_countNumber of message consumers subscribed to destinations.JMX Prometheus Exporter
Enqueue CountCountmeter_activemq_broker_enqueue_countThe total number of messages sent to the broker.JMX Prometheus Exporter
Dequeue CountCountmeter_activemq_broker_dequeue_countThe total number of messages the broker has delivered to consumers.JMX Prometheus Exporter
Enqueue RateCount/secmeter_activemq_broker_enqueue_rateThe total number of messages sent to the broker per second.JMX Prometheus Exporter
Dequeue RateCount/secmeter_activemq_broker_dequeue_rateThe total number of messages the broker has delivered to consumers per second.JMX Prometheus Exporter
Memory Percent Usage%meter_activemq_broker_memory_percent_usagePercentage of configured memory used by the broker.JMX Prometheus Exporter
Memory UsageBytesmeter_activemq_broker_memory_percent_usageMemory used by undelivered messages in bytes.JMX Prometheus Exporter
Memory LimitBytesmeter_activemq_broker_memory_limitMemory limited used for holding undelivered messages before paging to temporary storage.JMX Prometheus Exporter
Store Percent Usage%meter_activemq_broker_store_percent_usagePercentage of available disk space used for persistent message storage.JMX Prometheus Exporter
Store LimitBytesmeter_activemq_broker_store_limitDisk limited used for persistent messages before producers are blocked.JMX Prometheus Exporter
Temp Percent UsageBytesmeter_activemq_broker_temp_percent_usagePercentage of available disk space used for non-persistent message storage.JMX Prometheus Exporter
Temp LimitBytesmeter_activemq_broker_temp_limitDisk limited used for non-persistent messages and temporary data before producers are blocked.JMX Prometheus Exporter
Average Message SizeBytesmeter_activemq_broker_average_message_sizeAverage message size on this broker.JMX Prometheus Exporter
Max Message SizeBytesmeter_activemq_broker_max_message_sizeMax message size on this broker.JMX Prometheus Exporter
Queue SizeCountmeter_activemq_broker_queue_sizeNumber of messages on this broker that have been dispatched but not acknowledged.JMX Prometheus Exporter

ActiveMQ Destination Supported Metrics

Monitoring PanelUnitMetric NameDescriptionData Source
Producer CountCountmeter_activemq_destination_producer_countNumber of producers attached to this destination.JMX Prometheus Exporter
Consumer CountCountmeter_activemq_destination_consumer_countNumber of consumers subscribed to this destination.JMX Prometheus Exporter
Topic Consumer CountCountmeter_activemq_destination_topic_consumer_countNumber of consumers subscribed to the topics.JMX Prometheus Exporter
Queue SizeCountmeter_activemq_destination_queue_sizeThe number of messages that have not been acknowledged by a consumer.JMX Prometheus Exporter
Memory UsageBytesmeter_activemq_destination_memory_usageMemory used by undelivered messages in bytes.JMX Prometheus Exporter
Memory Percent Usage%meter_activemq_destination_memory_percent_usagePercentage of configured memory used by the destination.JMX Prometheus Exporter
Enqueue CountCountmeter_activemq_destination_enqueue_countThe number of messages sent to the destination.JMX Prometheus Exporter
Dequeue CountCountmeter_activemq_destination_dequeue_countThe number of messages the destination has delivered to consumers.JMX Prometheus Exporter
Average Enqueue Timemsmeter_activemq_destination_average_enqueue_timeThe average time a message was held on this destination.JMX Prometheus Exporter
Max Enqueue Timemsmeter_activemq_destination_max_enqueue_timeThe max time a message was held on this destination.JMX Prometheus Exporter
Dispatch CountCountmeter_activemq_destination_dispatch_countNumber of messages that has been delivered to consumers.JMX Prometheus Exporter
Expired CountCountmeter_activemq_destination_expired_countNumber of messages that have been expired.JMX Prometheus Exporter
Inflight CountCountmeter_activemq_destination_inflight_countNumber of messages that have been dispatched to but not acknowledged by consumers.JMX Prometheus Exporter
Average Message SizeBytesmeter_activemq_destination_average_message_sizeAverage message size on this destination.JMX Prometheus Exporter
Max Message SizeBytesmeter_activemq_destination_max_message_sizeMax message size on this destination.JMX Prometheus Exporter

Imported Dependencies libs and their licenses.

No new dependency.

Compatibility

no breaking changes.

General usage docs