Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/7.4
Apache ActiveMQ by JMX
Overview
This template is designed for the effortless deployment of Apache ActiveMQ monitoring by Zabbix via JMX and doesn't require any external scripts.
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- Apache ActiveMQ 5.15.5
 
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
LLD rule Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] | 
Item prototypes for Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX agent | jmx[{#JMXOBJ},BrokerVersion] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX agent | jmx[{#JMXOBJ},UptimeMillis] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX agent | jmx[{#JMXOBJ},MemoryLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX agent | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},StoreLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX agent | jmx[{#JMXOBJ},StorePercentUsage] | 
| Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},TempLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX agent | jmx[{#JMXOBJ},TempPercentUsage] | 
| Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX agent | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalConsumerCount] | 
| Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalProducerCount] | 
Trigger prototypes for Brokers discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Version has been changed | The Broker {#JMXBROKERNAME} version has changed. Acknowledge to close the problem manually.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
Info | Manual close: Yes | 
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Broker has been restarted | Uptime is less than 10 minutes.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
Info | Manual close: Yes | 
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
Average | |
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | 
LLD rule Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Destinations discovery | Discovery of destinations  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] | 
Item prototypes for Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ConsumerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ProducerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX agent | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX agent | jmx[{#JMXOBJ},EnqueueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX agent | jmx[{#JMXOBJ},DequeueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX agent | jmx[{#JMXOBJ},QueueSize] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX agent | jmx[{#JMXOBJ},ExpiredCount] Preprocessing 
  | 
Trigger prototypes for Destinations discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | ||
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
High | ||
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
Average | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
Average | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/7.2
Apache ActiveMQ by JMX
Overview
This template is designed for the effortless deployment of Apache ActiveMQ monitoring by Zabbix via JMX and doesn't require any external scripts.
Requirements
Zabbix version: 7.2 and higher.
Tested versions
This template has been tested on:
- Apache ActiveMQ 5.15.5
 
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
LLD rule Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] | 
Item prototypes for Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX agent | jmx[{#JMXOBJ},BrokerVersion] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX agent | jmx[{#JMXOBJ},UptimeMillis] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX agent | jmx[{#JMXOBJ},MemoryLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX agent | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},StoreLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX agent | jmx[{#JMXOBJ},StorePercentUsage] | 
| Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},TempLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX agent | jmx[{#JMXOBJ},TempPercentUsage] | 
| Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX agent | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalConsumerCount] | 
| Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalProducerCount] | 
Trigger prototypes for Brokers discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Version has been changed | The Broker {#JMXBROKERNAME} version has changed. Acknowledge to close the problem manually.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
Info | Manual close: Yes | 
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Broker has been restarted | Uptime is less than 10 minutes.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
Info | Manual close: Yes | 
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
Average | |
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | 
LLD rule Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Destinations discovery | Discovery of destinations  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] | 
Item prototypes for Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ConsumerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ProducerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX agent | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX agent | jmx[{#JMXOBJ},EnqueueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX agent | jmx[{#JMXOBJ},DequeueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX agent | jmx[{#JMXOBJ},QueueSize] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX agent | jmx[{#JMXOBJ},ExpiredCount] Preprocessing 
  | 
Trigger prototypes for Destinations discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | ||
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
High | ||
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
Average | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
Average | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/7.0
Apache ActiveMQ by JMX
Overview
This template is designed for the effortless deployment of Apache ActiveMQ monitoring by Zabbix via JMX and doesn't require any external scripts.
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- Apache ActiveMQ 5.15.5
 
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
LLD rule Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] | 
Item prototypes for Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX agent | jmx[{#JMXOBJ},BrokerVersion] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX agent | jmx[{#JMXOBJ},UptimeMillis] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX agent | jmx[{#JMXOBJ},MemoryLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX agent | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},StoreLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX agent | jmx[{#JMXOBJ},StorePercentUsage] | 
| Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},TempLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX agent | jmx[{#JMXOBJ},TempPercentUsage] | 
| Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX agent | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalConsumerCount] | 
| Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalProducerCount] | 
Trigger prototypes for Brokers discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Version has been changed | The Broker {#JMXBROKERNAME} version has changed. Acknowledge to close the problem manually.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
Info | Manual close: Yes | 
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Broker has been restarted | Uptime is less than 10 minutes.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
Info | Manual close: Yes | 
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
Average | Depends on:
  | 
|
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
Average | |
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Apache ActiveMQ: Broker {#JMXBROKERNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | 
LLD rule Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Destinations discovery | Discovery of destinations  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] | 
Item prototypes for Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ConsumerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ProducerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX agent | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX agent | jmx[{#JMXOBJ},EnqueueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX agent | jmx[{#JMXOBJ},DequeueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX agent | jmx[{#JMXOBJ},QueueSize] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX agent | jmx[{#JMXOBJ},ExpiredCount] Preprocessing 
  | 
Trigger prototypes for Destinations discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | ||
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
High | ||
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
Average | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
Average | |
| Apache ActiveMQ: {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/6.4
Apache ActiveMQ by JMX
Overview
This template is designed for the effortless deployment of Apache ActiveMQ monitoring by Zabbix via JMX and doesn't require any external scripts.
Requirements
Zabbix version: 6.4 and higher.
Tested versions
This template has been tested on:
- Apache ActiveMQ 5.15.5
 
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
LLD rule Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] | 
Item prototypes for Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX agent | jmx[{#JMXOBJ},BrokerVersion] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX agent | jmx[{#JMXOBJ},UptimeMillis] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX agent | jmx[{#JMXOBJ},MemoryLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX agent | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},StoreLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX agent | jmx[{#JMXOBJ},StorePercentUsage] | 
| Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},TempLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX agent | jmx[{#JMXOBJ},TempPercentUsage] | 
| Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX agent | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalConsumerCount] | 
| Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalProducerCount] | 
Trigger prototypes for Brokers discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version has been changed | The Broker {#JMXBROKERNAME} version has changed. Acknowledge to close the problem manually.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
Info | Manual close: Yes | 
| Broker {#JMXBROKERNAME}: Broker has been restarted | Uptime is less than 10 minutes.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
Info | Manual close: Yes | 
| Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
Average | Depends on:
  | 
|
| Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
High | ||
| Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
Average | |
| Broker {#JMXBROKERNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Broker {#JMXBROKERNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | 
LLD rule Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Destinations discovery | Discovery of destinations  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] | 
Item prototypes for Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ConsumerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ProducerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX agent | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX agent | jmx[{#JMXOBJ},EnqueueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX agent | jmx[{#JMXOBJ},DequeueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX agent | jmx[{#JMXOBJ},QueueSize] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX agent | jmx[{#JMXOBJ},ExpiredCount] Preprocessing 
  | 
Trigger prototypes for Destinations discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | ||
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
High | ||
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
Average | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
Average | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/6.2
Apache ActiveMQ by JMX
Overview
For Zabbix version: 6.2 and higher
Official JMX Template for Apache ActiveMQ.
This template was tested on:
- Apache ActiveMQ, version 5.15.5
 
Setup
See Zabbix template operation for basic instructions.
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
Template links
There are no template links in this template.
Discovery rules
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] Filter: FORMULA A and B- {#JMXBROKERNAME} MATCHES_REGEX  - {#JMXBROKERNAME} NOT_MATCHES_REGEX   | 
| Destinations discovery | Discovery of destinations  | 
JMX | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] Filter: FORMULA A and B- {#JMXDESTINATIONNAME} MATCHES_REGEX  - {#JMXDESTINATIONNAME} NOT_MATCHES_REGEX   | 
Items collected
| Group | Name | Description | Type | Key and additional info | 
|---|---|---|---|---|
| ActiveMQ | Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX | jmx[{#JMXOBJ},BrokerVersion] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX | jmx[{#JMXOBJ},UptimeMillis] Preprocessing: - MULTIPLIER:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX | jmx[{#JMXOBJ},MemoryLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX | jmx[{#JMXOBJ},StoreLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX | jmx[{#JMXOBJ},StorePercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX | jmx[{#JMXOBJ},TempLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX | jmx[{#JMXOBJ},TempPercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX | jmx[{#JMXOBJ},TotalConsumerCount] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX | jmx[{#JMXOBJ},TotalProducerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX | jmx[{#JMXOBJ},ConsumerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing: - IN_RANGE:  ⛔️ON_FAIL:  - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX | jmx[{#JMXOBJ},ProducerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing: - IN_RANGE:  ⛔️ON_FAIL:  - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX | jmx[{#JMXOBJ},EnqueueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX | jmx[{#JMXOBJ},DequeueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX | jmx[{#JMXOBJ},QueueSize] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX | jmx[{#JMXOBJ},ExpiredCount] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version has been changed | Broker {#JMXBROKERNAME} version has changed. Ack to close.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
INFO | Manual close: YES  | 
| Broker {#JMXBROKERNAME}: Broker has been restarted | Uptime is less than 10 minutes.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
INFO | Manual close: YES  | 
| Broker {#JMXBROKERNAME}: Memory usage is too high | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Memory usage is too high  | 
| Broker {#JMXBROKERNAME}: Memory usage is too high | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Storage usage is too high | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Storage usage is too high  | 
| Broker {#JMXBROKERNAME}: Storage usage is too high | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Temp usage is too high | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Temp usage is too high  | 
| Broker {#JMXBROKERNAME}: Temp usage is too high | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
AVERAGE | |
| Broker {#JMXBROKERNAME}: Consumers count is too low | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Producers count is too low | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"}Recovery expression: min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})>={$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | Manual close: YES  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"}Recovery expression: min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})>={$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | Manual close: YES  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | -  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | -  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
HIGH | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template or ask for help with it at ZABBIX forums.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/6.0
Apache ActiveMQ by JMX
Overview
This template is designed for the effortless deployment of Apache ActiveMQ monitoring by Zabbix via JMX and doesn't require any external scripts.
Requirements
Zabbix version: 6.0 and higher.
Tested versions
This template has been tested on:
- Apache ActiveMQ 5.15.5
 
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
LLD rule Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] | 
Item prototypes for Brokers discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX agent | jmx[{#JMXOBJ},BrokerVersion] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX agent | jmx[{#JMXOBJ},UptimeMillis] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX agent | jmx[{#JMXOBJ},MemoryLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX agent | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},StoreLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX agent | jmx[{#JMXOBJ},StorePercentUsage] | 
| Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX agent | jmx[{#JMXOBJ},TempLimit] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX agent | jmx[{#JMXOBJ},TempPercentUsage] | 
| Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX agent | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing 
  | 
| Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalConsumerCount] | 
| Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX agent | jmx[{#JMXOBJ},TotalProducerCount] | 
Trigger prototypes for Brokers discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version has been changed | The Broker {#JMXBROKERNAME} version has changed. Acknowledge to close the problem manually.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
Info | Manual close: Yes | 
| Broker {#JMXBROKERNAME}: Broker has been restarted | Uptime is less than 10 minutes.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
Info | Manual close: Yes | 
| Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Broker {#JMXBROKERNAME}: Memory usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
Average | Depends on:
  | 
|
| Broker {#JMXBROKERNAME}: Storage usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
Average | Depends on:
  | 
|
| Broker {#JMXBROKERNAME}: Temp usage is too high | min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
High | ||
| Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
Average | |
| Broker {#JMXBROKERNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | ||
| Broker {#JMXBROKERNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
High | 
LLD rule Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Destinations discovery | Discovery of destinations  | 
JMX agent | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] | 
Item prototypes for Destinations discovery
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ConsumerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX agent | jmx[{#JMXOBJ},ProducerCount] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX agent | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX agent | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX agent | jmx[{#JMXOBJ},EnqueueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX agent | jmx[{#JMXOBJ},DequeueCount] Preprocessing 
  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX agent | jmx[{#JMXOBJ},QueueSize] | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX agent | jmx[{#JMXOBJ},ExpiredCount] Preprocessing 
  | 
Trigger prototypes for Destinations discovery
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low | max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
Average | Manual close: Yes | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | ||
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high | last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
High | ||
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
Average | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
Average | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
Average | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/5.4
Apache ActiveMQ by JMX
Overview
For Zabbix version: 5.4 and higher
Official JMX Template for Apache ActiveMQ.
This template was tested on:
- Apache ActiveMQ, version 5.15.5
 
Setup
See Zabbix template operation for basic instructions.
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
Template links
There are no template links in this template.
Discovery rules
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] Filter: FORMULA A and B- {#JMXBROKERNAME} MATCHES_REGEX  - {#JMXBROKERNAME} NOT_MATCHES_REGEX   | 
| Destinations discovery | Discovery of destinations  | 
JMX | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] Filter: FORMULA A and B- {#JMXDESTINATIONNAME} MATCHES_REGEX  - {#JMXDESTINATIONNAME} NOT_MATCHES_REGEX   | 
Items collected
| Group | Name | Description | Type | Key and additional info | 
|---|---|---|---|---|
| ActiveMQ | Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX | jmx[{#JMXOBJ},BrokerVersion] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX | jmx[{#JMXOBJ},UptimeMillis] Preprocessing: - MULTIPLIER:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX | jmx[{#JMXOBJ},MemoryLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX | jmx[{#JMXOBJ},StoreLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX | jmx[{#JMXOBJ},StorePercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX | jmx[{#JMXOBJ},TempLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX | jmx[{#JMXOBJ},TempPercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX | jmx[{#JMXOBJ},TotalConsumerCount] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX | jmx[{#JMXOBJ},TotalProducerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX | jmx[{#JMXOBJ},ConsumerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing: - IN_RANGE:  ⛔️ON_FAIL:  - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX | jmx[{#JMXOBJ},ProducerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing: - IN_RANGE:  ⛔️ON_FAIL:  - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX | jmx[{#JMXOBJ},EnqueueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX | jmx[{#JMXOBJ},DequeueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX | jmx[{#JMXOBJ},QueueSize] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX | jmx[{#JMXOBJ},ExpiredCount] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version has been changed | Broker {#JMXBROKERNAME} version has changed. Ack to close.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#1)<>last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion],#2) and length(last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},BrokerVersion]))>0 | 
INFO | Manual close: YES  | 
| Broker {#JMXBROKERNAME}: Broker has been restarted (uptime < 10m) | Uptime is less than 10 minutes  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m | 
INFO | Manual close: YES  | 
| Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}%)  | 
| Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}%) | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}%)  | 
| Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}%) | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%)  | 
| Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate for {$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"} | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalEnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}) | 
AVERAGE | |
| Broker {#JMXBROKERNAME}: Consumers count is too low (below {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} for {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"}) | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Producers count is too low (below {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} for {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"}) | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low (below {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"}) | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"}Recovery expression: min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})>={$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | Manual close: YES  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low (below {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"}) | -  | 
max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and last(/Apache ActiveMQ by JMX/jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}])>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"}Recovery expression: min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})>={$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | Manual close: YES  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"}%) | -  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"}%) | -  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
HIGH | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate for {$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"} | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},EnqueueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})>avg(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},DequeueCount],{$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}) | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size higher than {$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"} | Queue size is higher than threshold. It may indicate performance problems.  | 
min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count higher than {$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide a feedback, discuss the template or ask for help with it at ZABBIX forums.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/activemq_jmx?at=release/5.0
Template App Apache ActiveMQ by JMX
Overview
For Zabbix version: 5.0 and higher
Official JMX Template for Apache ActiveMQ.
This template was tested on:
- Apache ActiveMQ, version 5.15.5
 - Zabbix, version 5.0
 
Setup
See Zabbix template operation for basic instructions.
Metrics are collected by JMX.
- Enable and configure JMX access to Apache ActiveMQ. See documentation for instructions.
 - Set values in host macros {$ACTIVEMQ.USERNAME}, {$ACTIVEMQ.PASSWORD} and {$ACTIVEMQ.PORT}.
 
Zabbix configuration
No specific Zabbix configuration is required.
Macros used
| Name | Description | Default | 
|---|---|---|
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME} | Time during which there may be no consumers on destination. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH} | Minimum amount of producers for broker. Can be used with broker name as context.  | 
1 | 
| {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME} | Time during which there may be no producers on broker. Can be used with broker name as context.  | 
5m | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH} | Minimum amount of consumers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME} | Time during which there may be no consumers in destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH} | Minimum amount of producers for destination. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME} | Time during which there may be no producers on destination. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.EXPIRED.WARN} | Threshold for expired messages count. Can be used with destination name as context.  | 
0 | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES} | Filter of discoverable discovered brokers  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES} | Filter to exclude discovered brokers  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES} | Filter of discoverable discovered destinations  | 
.* | 
| {$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES} | Filter to exclude discovered destinations  | 
CHANGE IF NEEDED | 
| {$ACTIVEMQ.MEM.MAX.HIGH} | Memory threshold for HIGH trigger. Can be used with destination or broker name as context.  | 
90 | 
| {$ACTIVEMQ.MEM.MAX.WARN} | Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.  | 
75 | 
| {$ACTIVEMQ.MEM.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.MSG.RATE.WARN.TIME} | The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.  | 
15m | 
| {$ACTIVEMQ.PASSWORD} | Password for JMX  | 
activemq | 
| {$ACTIVEMQ.PORT} | Port for JMX  | 
1099 | 
| {$ACTIVEMQ.QUEUE.ENABLED} | Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.  | 
1 | 
| {$ACTIVEMQ.QUEUE.TIME} | Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.  | 
10m | 
| {$ACTIVEMQ.QUEUE.WARN} | Threshold for QueueSize. Can be used with destination name as context.  | 
100 | 
| {$ACTIVEMQ.STORE.MAX.HIGH} | Storage threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.STORE.MAX.WARN} | Storage threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.STORE.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.TEMP.MAX.HIGH} | Temp threshold for HIGH trigger. Can be used with broker name as context.  | 
90 | 
| {$ACTIVEMQ.TEMP.MAX.WARN} | Temp threshold for AVERAGE trigger. Can be used with broker name as context.  | 
75 | 
| {$ACTIVEMQ.TEMP.TIME} | Time during which the metric can be above the threshold. Can be used with destination or broker name as context.  | 
5m | 
| {$ACTIVEMQ.TOTAL.CONSUMERS.COUNT} | Attribute for TotalConsumerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalConsumerCount | 
| {$ACTIVEMQ.TOTAL.PRODUCERS.COUNT} | Attribute for TotalProducerCount per destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
TotalProducerCount | 
| {$ACTIVEMQ.USER} | User for JMX  | 
admin | 
Template links
There are no template links in this template.
Discovery rules
| Name | Description | Type | Key and additional info | 
|---|---|---|---|
| Brokers discovery | Discovery of brokers  | 
JMX | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"] Filter: FORMULA A and B- A: {#JMXBROKERNAME} MATCHES_REGEX  - B: {#JMXBROKERNAME} NOT_MATCHES_REGEX   | 
| Destinations discovery | Discovery of destinations  | 
JMX | jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=,destinationType=,destinationName=*"] Filter: FORMULA A and B- A: {#JMXDESTINATIONNAME} MATCHES_REGEX  - B: {#JMXDESTINATIONNAME} NOT_MATCHES_REGEX   | 
Items collected
| Group | Name | Description | Type | Key and additional info | 
|---|---|---|---|---|
| ActiveMQ | Broker {#JMXBROKERNAME}: Version | The version of the broker.  | 
JMX | jmx[{#JMXOBJ},BrokerVersion] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Uptime | The uptime of the broker.  | 
JMX | jmx[{#JMXOBJ},UptimeMillis] Preprocessing: - MULTIPLIER:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Memory limit | Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.  | 
JMX | jmx[{#JMXOBJ},MemoryLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Memory usage in percents | Percent of memory limit used.  | 
JMX | jmx[{#JMXOBJ}, MemoryPercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Storage limit | Disk limit, in bytes, used for persistent messages before producers are blocked.  | 
JMX | jmx[{#JMXOBJ},StoreLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Storage usage in percents | Percent of store limit used.  | 
JMX | jmx[{#JMXOBJ},StorePercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Temp limit | Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.  | 
JMX | jmx[{#JMXOBJ},TempLimit] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Temp usage in percents | Percent of temp limit used.  | 
JMX | jmx[{#JMXOBJ},TempPercentUsage] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Messages enqueue rate | Rate of messages that have been sent to the broker.  | 
JMX | jmx[{#JMXOBJ},TotalEnqueueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Messages dequeue rate | Rate of messages that have been delivered by the broker and acknowledged by consumers.  | 
JMX | jmx[{#JMXOBJ},TotalDequeueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Consumers count total | Number of consumers attached to this broker.  | 
JMX | jmx[{#JMXOBJ},TotalConsumerCount] | 
| ActiveMQ | Broker {#JMXBROKERNAME}: Producers count total | Number of producers attached to this broker.  | 
JMX | jmx[{#JMXOBJ},TotalProducerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count | Number of consumers attached to this destination.  | 
JMX | jmx[{#JMXOBJ},ConsumerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME} | Number of consumers attached to the broker of this destination. Used to suppress destination's triggers when the count of consumers on the broker is lower than threshold.  | 
JMX | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing: - IN_RANGE:  ⛔️ON_FAIL:  - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count | Number of producers attached to this destination.  | 
JMX | jmx[{#JMXOBJ},ProducerCount] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME} | Number of producers attached to the broker of this destination. Used to suppress destination's triggers when the count of producers on the broker is lower than threshold.  | 
JMX | jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}] Preprocessing: - IN_RANGE:  ⛔️ON_FAIL:  - DISCARD_UNCHANGED_HEARTBEAT:   | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents | The percentage of the memory limit used.  | 
JMX | jmx[{#JMXOBJ},MemoryPercentUsage] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate | Rate of messages that have been sent to the destination.  | 
JMX | jmx[{#JMXOBJ},EnqueueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate | Rate of messages that has been acknowledged (and removed) from the destination.  | 
JMX | jmx[{#JMXOBJ},DequeueCount] Preprocessing: - CHANGE_PER_SECOND  | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size | Number of messages on this destination, including any that have been dispatched but not acknowledged.  | 
JMX | jmx[{#JMXOBJ},QueueSize] | 
| ActiveMQ | {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count | Number of messages that have been expired.  | 
JMX | jmx[{#JMXOBJ},ExpiredCount] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT:   | 
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info | 
|---|---|---|---|---|
| Broker {#JMXBROKERNAME}: Version has been changed | Broker {#JMXBROKERNAME} version has changed. Ack to close.  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},BrokerVersion].diff()}=1 and {TEMPLATE_NAME:jmx[{#JMXOBJ},BrokerVersion].strlen()}>0 | 
INFO | Manual close: YES  | 
| Broker {#JMXBROKERNAME}: Broker has been restarted (uptime < 10m) | Uptime is less than 10 minutes  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},UptimeMillis].last()}<10m | 
INFO | Manual close: YES  | 
| Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ}, MemoryPercentUsage].min({$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})}>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}%)  | 
| Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ}, MemoryPercentUsage].min({$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})}>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},StorePercentUsage].min({$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})}>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}%)  | 
| Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},StorePercentUsage].min({$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})}>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},TempPercentUsage].min({$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})}>{$ACTIVEMQ.TEMP.MAX.WARN} | 
AVERAGE | Depends on: - Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%)  | 
| Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},TempPercentUsage].min({$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})}>{$ACTIVEMQ.TEMP.MAX.HIGH} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate for {$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"} | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},TotalEnqueueCount].avg({$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})}>{TEMPLATE_NAME:jmx[{#JMXOBJ},TotalEnqueueCount].avg({$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"})} | 
AVERAGE | |
| Broker {#JMXBROKERNAME}: Consumers count is too low (below {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} for {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"}) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},TotalConsumerCount].max({$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})}<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| Broker {#JMXBROKERNAME}: Producers count is too low (below {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} for {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"}) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},TotalProducerCount].max({$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})}<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} | 
HIGH | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low (below {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"}) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},ConsumerCount].max({$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})}<{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and {TEMPLATE_NAME:jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}].last()}>{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"}Recovery expression: {TEMPLATE_NAME:jmx[{#JMXOBJ},ConsumerCount].min({$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})}>={$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | Manual close: YES  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low (below {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"}) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},ProducerCount].max({$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})}<{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} and {TEMPLATE_NAME:jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}].last()}>{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"}Recovery expression: {TEMPLATE_NAME:jmx[{#JMXOBJ},ProducerCount].min({$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})}>={$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | Manual close: YES  | 
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},MemoryPercentUsage].last()}>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"}%) | -  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},MemoryPercentUsage].last()}>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"} | 
HIGH | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate for {$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"} | Enqueue rate is higher than dequeue rate. It may indicate performance problems.  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},EnqueueCount].avg({$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})}>{TEMPLATE_NAME:jmx[{#JMXOBJ},DequeueCount].avg({$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"})} | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size higher than {$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"} | Queue size is higher than threshold. It may indicate performance problems.  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},QueueSize].min({$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})}>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1 | 
AVERAGE | |
| {#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count higher than {$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | This metric represents the number of messages that expired before they could be delivered. If you expect all messages to be delivered and acknowledged within a certain amount of time, you can set an expiration for each message, and investigate if your ExpiredCount metric rises above zero.  | 
{TEMPLATE_NAME:jmx[{#JMXOBJ},ExpiredCount].last()}>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"} | 
AVERAGE | 
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide a feedback, discuss the template or ask for help with it at ZABBIX forums.