zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
      name: Templates/Applications
  templates:
    - uuid: c87e0a2e0683483ab7c6f3c380e9f840
      template: 'Apache ActiveMQ by JMX'
      name: 'Apache ActiveMQ by JMX'
      description: |
        The template to monitor Apache ActiveMQ by Zabbix that work without any external scripts.
        The metrics are collected by JMX.
        You can set macro values and add macros with context for specific brokers or destinations following macro description.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/411049-discussion-thread-for-official-zabbix-template-amq
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Applications
      discovery_rules:
        - uuid: cbd9f98c2c1e412081a546e18066a868
          name: 'Brokers discovery'
          type: JMX
          key: 'jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*"]'
          delay: 1h
          username: '{$ACTIVEMQ.USER}'
          password: '{$ACTIVEMQ.PASSWORD}'
          filter:
            evaltype: FORMULA
            formula: 'A and B'
            conditions:
              - macro: '{#JMXBROKERNAME}'
                value: '{$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES}'
                formulaid: A
              - macro: '{#JMXBROKERNAME}'
                value: '{$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
          description: 'Discovery of brokers'
          item_prototypes:
            - uuid: 29a0f197bfe847d596dad4923364490e
              name: 'Broker {#JMXBROKERNAME}: Version'
              type: JMX
              key: 'jmx[{#JMXOBJ},BrokerVersion]'
              value_type: TEXT
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'The version of the broker.'
              preprocessing:
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: inventory
              trigger_prototypes:
                - uuid: 7902d81681874aa3acf33d90316f9864
                  expression: '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'
                  name: 'Broker {#JMXBROKERNAME}: Version has been changed'
                  event_name: 'Broker {#JMXBROKERNAME}: Version has changed (new version: {ITEM.VALUE})'
                  priority: INFO
                  description: 'The Broker {#JMXBROKERNAME} version has changed. Acknowledge to close the problem manually.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 85c19ccb8b6a4242a8ba699e76836427
              name: 'Broker {#JMXBROKERNAME}: Memory limit'
              type: JMX
              key: 'jmx[{#JMXOBJ},MemoryLimit]'
              units: B
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Memory limit, in bytes, used for holding undelivered messages before paging to temporary storage.'
              preprocessing:
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: memory
            - uuid: 5e2a5638adf6405087014bfcfc8ffc93
              name: 'Broker {#JMXBROKERNAME}: Memory usage in percents'
              type: JMX
              key: 'jmx[{#JMXOBJ}, MemoryPercentUsage]'
              units: '%'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Percent of memory limit used.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: memory
              trigger_prototypes:
                - uuid: e805b8cca9744940affc3bdd234a7587
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}'
                  name: 'Broker {#JMXBROKERNAME}: Memory usage is too high'
                  event_name: 'Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}%)'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: performance
                - uuid: 3e741e339fff422fae67b5333faa1e20
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"}'
                  name: 'Broker {#JMXBROKERNAME}: Memory usage is too high'
                  event_name: 'Broker {#JMXBROKERNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.WARN:"{#JMXBROKERNAME}"}%)'
                  priority: AVERAGE
                  dependencies:
                    - name: 'Broker {#JMXBROKERNAME}: Memory usage is too high'
                      expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ}, MemoryPercentUsage],{$ACTIVEMQ.MEM.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXBROKERNAME}"}'
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 78806476b5cb4ce48f8ca8dbd173c7c3
              name: 'Broker {#JMXBROKERNAME}: Storage limit'
              type: JMX
              key: 'jmx[{#JMXOBJ},StoreLimit]'
              units: B
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Disk limit, in bytes, used for persistent messages before producers are blocked.'
              preprocessing:
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: storage
            - uuid: fc4c79543a6f4b7b9c22f11b61b644c9
              name: 'Broker {#JMXBROKERNAME}: Storage usage in percents'
              type: JMX
              key: 'jmx[{#JMXOBJ},StorePercentUsage]'
              units: '%'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Percent of store limit used.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: storage
              trigger_prototypes:
                - uuid: 2e1c9f92c87f446ebab68ac638c713c5
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}'
                  name: 'Broker {#JMXBROKERNAME}: Storage usage is too high'
                  event_name: 'Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}%)'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: capacity
                - uuid: 271b33edce84439a91d6a253f45e5bf6
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"}'
                  name: 'Broker {#JMXBROKERNAME}: Storage usage is too high'
                  event_name: 'Broker {#JMXBROKERNAME}: Storage usage is too high (over {$ACTIVEMQ.STORE.MAX.WARN:"{#JMXBROKERNAME}"}%)'
                  priority: AVERAGE
                  dependencies:
                    - name: 'Broker {#JMXBROKERNAME}: Storage usage is too high'
                      expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},StorePercentUsage],{$ACTIVEMQ.STORE.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.STORE.MAX.HIGH:"{#JMXBROKERNAME}"}'
                  tags:
                    - tag: scope
                      value: capacity
            - uuid: 09db80ee80ea47189142130d35a8e1c2
              name: 'Broker {#JMXBROKERNAME}: Temp limit'
              type: JMX
              key: 'jmx[{#JMXOBJ},TempLimit]'
              units: B
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Disk limit, in bytes, used for non-persistent messages and temporary data before producers are blocked.'
              preprocessing:
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: storage
            - uuid: 95354144839e4d22a82c4e9a1fab83d9
              name: 'Broker {#JMXBROKERNAME}: Temp usage in percents'
              type: JMX
              key: 'jmx[{#JMXOBJ},TempPercentUsage]'
              units: '%'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Percent of temp limit used.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: storage
              trigger_prototypes:
                - uuid: 422252a81e3e4261bbd7f331f48c6257
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH}'
                  name: 'Broker {#JMXBROKERNAME}: Temp usage is too high'
                  event_name: 'Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%)'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: capacity
                - uuid: acb8f6e0762f48c2bd4c03f2a55b2f44
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.WARN}'
                  name: 'Broker {#JMXBROKERNAME}: Temp usage is too high'
                  event_name: 'Broker {#JMXBROKERNAME}: Temp usage is too high (over {$ACTIVEMQ.TEMP.MAX.WARN:"{#JMXBROKERNAME}"}%)'
                  priority: AVERAGE
                  dependencies:
                    - name: 'Broker {#JMXBROKERNAME}: Temp usage is too high'
                      expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TempPercentUsage],{$ACTIVEMQ.TEMP.TIME:"{#JMXBROKERNAME}"})>{$ACTIVEMQ.TEMP.MAX.HIGH}'
                  tags:
                    - tag: scope
                      value: capacity
            - uuid: 64ab04e456804e10a6c78c3190807506
              name: 'Broker {#JMXBROKERNAME}: Consumers count total'
              type: JMX
              key: 'jmx[{#JMXOBJ},TotalConsumerCount]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Number of consumers attached to this broker.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: broker
              trigger_prototypes:
                - uuid: 6906f0a1ef804da4a1203ca9d96ab8a0
                  expression: 'max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalConsumerCount],{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"}'
                  name: 'Broker {#JMXBROKERNAME}: Consumers count is too low'
                  event_name: 'Broker {#JMXBROKERNAME}: Consumers count is too low (below {$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH:"{#JMXBROKERNAME}"} for {$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME:"{#JMXBROKERNAME}"})'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 48bc7dab4a1a40d8a823e880018cf8e7
              name: 'Broker {#JMXBROKERNAME}: Messages dequeue rate'
              type: JMX
              key: 'jmx[{#JMXOBJ},TotalDequeueCount]'
              units: messages/sec
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Rate of messages that have been delivered by the broker and acknowledged by consumers.'
              preprocessing:
                - type: CHANGE_PER_SECOND
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: broker
            - uuid: a462499eecbd443e931a9aa831240f65
              name: 'Broker {#JMXBROKERNAME}: Messages enqueue rate'
              type: JMX
              key: 'jmx[{#JMXOBJ},TotalEnqueueCount]'
              units: messages/sec
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Rate of messages that have been sent to the broker.'
              preprocessing:
                - type: CHANGE_PER_SECOND
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: broker
              trigger_prototypes:
                - uuid: a3ab7bca031c45059418fa82a3c67369
                  expression: '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}"})'
                  name: 'Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate'
                  event_name: 'Broker {#JMXBROKERNAME}: Message enqueue rate is higher than dequeue rate for {$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXBROKERNAME}"}'
                  priority: AVERAGE
                  description: 'Enqueue rate is higher than dequeue rate. It may indicate performance problems.'
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 2453d8221cec4e1ead6622c001ac9a8c
              name: 'Broker {#JMXBROKERNAME}: Producers count total'
              type: JMX
              key: 'jmx[{#JMXOBJ},TotalProducerCount]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Number of producers attached to this broker.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: broker
              trigger_prototypes:
                - uuid: 2ee6ad72a98143b59d8d1136fffdbe50
                  expression: 'max(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},TotalProducerCount],{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})<{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"}'
                  name: 'Broker {#JMXBROKERNAME}: Producers count is too low'
                  event_name: 'Broker {#JMXBROKERNAME}: Producers count is too low (below {$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH:"{#JMXBROKERNAME}"} for {$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME:"{#JMXBROKERNAME}"})'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: notice
            - uuid: a46d7281cb234ccaadacbb7d311cbd39
              name: 'Broker {#JMXBROKERNAME}: Uptime'
              type: JMX
              key: 'jmx[{#JMXOBJ},UptimeMillis]'
              units: s
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'The uptime of the broker.'
              preprocessing:
                - type: MULTIPLIER
                  parameters:
                    - '0.001'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: 6abb3813bb52465aa4a5f4bebfe999c3
                  expression: 'last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},UptimeMillis])<10m'
                  name: 'Broker {#JMXBROKERNAME}: Broker has been restarted'
                  event_name: 'Broker {#JMXBROKERNAME}: Broker has been restarted (uptime < 10m)'
                  priority: INFO
                  description: 'Uptime is less than 10 minutes.'
                  manual_close: 'YES'
                  tags:
                    - tag: scope
                      value: notice
          graph_prototypes:
            - uuid: 465b9319e0dc4728a2733c69521e9e81
              name: 'Broker {#JMXBROKERNAME}: Messages rate'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},TotalEnqueueCount]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},TotalDequeueCount]'
            - uuid: 9cdb5b2bed724f45a305a8434d28c105
              name: 'Broker {#JMXBROKERNAME}: Producers and consumers'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},TotalProducerCount]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},TotalConsumerCount]'
            - uuid: 6b018bbe9d154d2d865b7922eaa7ae28
              name: 'Broker {#JMXBROKERNAME}: Resources usage'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ}, MemoryPercentUsage]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},StorePercentUsage]'
                - sortorder: '2'
                  drawtype: GRADIENT_LINE
                  color: 00611C
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},TempPercentUsage]'
          jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
        - uuid: 14432547793d42d2b75c7b08fcbb3545
          name: 'Destinations discovery'
          type: JMX
          key: 'jmx.discovery[beans,"org.apache.activemq:type=Broker,brokerName=*,destinationType=*,destinationName=*"]'
          delay: 1h
          username: '{$ACTIVEMQ.USER}'
          password: '{$ACTIVEMQ.PASSWORD}'
          filter:
            evaltype: FORMULA
            formula: 'A and B'
            conditions:
              - macro: '{#JMXDESTINATIONNAME}'
                value: '{$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES}'
                formulaid: A
              - macro: '{#JMXDESTINATIONNAME}'
                value: '{$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
                formulaid: B
          description: 'Discovery of destinations'
          item_prototypes:
            - uuid: fd8129c9a66043d896a70c91c8b0d471
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count total on {#JMXBROKERNAME}'
              type: JMX
              key: 'jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT: "{#JMXDESTINATIONNAME}"}]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: '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.'
              preprocessing:
                - type: IN_RANGE
                  parameters:
                    - '0'
                    - '{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH}'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH}'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
            - uuid: 99f2094b02f848e785e40296958c5450
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count total on {#JMXBROKERNAME}'
              type: JMX
              key: 'jmx["org.apache.activemq:type=Broker,brokerName={#JMXBROKERNAME}",{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT: "{#JMXDESTINATIONNAME}"}]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: '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.'
              preprocessing:
                - type: IN_RANGE
                  parameters:
                    - '0'
                    - '{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH}'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH}'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
            - uuid: 5e93e53a0c2d49a49d421ded87b6b1f8
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count'
              type: JMX
              key: 'jmx[{#JMXOBJ},ConsumerCount]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Number of consumers attached to this destination.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
            - uuid: 3536ec77069a434e854415f0a3270e67
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages dequeue rate'
              type: JMX
              key: 'jmx[{#JMXOBJ},DequeueCount]'
              units: messages/sec
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Rate of messages that has been acknowledged (and removed) from the destination.'
              preprocessing:
                - type: CHANGE_PER_SECOND
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
            - uuid: a6dacc8c4d1f4724bf49c63449992035
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages enqueue rate'
              type: JMX
              key: 'jmx[{#JMXOBJ},EnqueueCount]'
              units: messages/sec
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Rate of messages that have been sent to the destination.'
              preprocessing:
                - type: CHANGE_PER_SECOND
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
            - uuid: 1c4ea913a9564d74b31ef82314203a15
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count'
              type: JMX
              key: 'jmx[{#JMXOBJ},ExpiredCount]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Number of messages that have been expired.'
              preprocessing:
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
              trigger_prototypes:
                - uuid: a498405c5b764c1ea9f0e151adf94ed7
                  expression: 'last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ExpiredCount])>{$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"}'
                  name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count is high'
                  event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Expired messages count higher than {$ACTIVEMQ.EXPIRED.WARN:"{#JMXDESTINATIONNAME}"}'
                  priority: AVERAGE
                  description: '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.'
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 158fac5a1b3c4f07a4004a733f9b6995
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage in percents'
              type: JMX
              key: 'jmx[{#JMXOBJ},MemoryPercentUsage]'
              units: '%'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'The percentage of the memory limit used.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: memory
              trigger_prototypes:
                - uuid: 197ab32730a84f79ba1b1e827a10e175
                  expression: 'last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"}'
                  name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high'
                  event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.HIGH:"{#JMXDESTINATIONNAME}"}%)'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: performance
                - uuid: 1e4e3a969b434c6d972251f8c9b3f2a7
                  expression: 'last(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},MemoryPercentUsage])>{$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"}'
                  name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high'
                  event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage is too high (over {$ACTIVEMQ.MEM.MAX.WARN:"{#JMXDESTINATIONNAME}"}%)'
                  priority: AVERAGE
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 82ee74872f6e46efbf16ae0705bcf2a6
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count'
              type: JMX
              key: 'jmx[{#JMXOBJ},ProducerCount]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Number of producers attached to this destination.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
            - uuid: fdc1e26fbe6545d3bdfc86f6f8c91b8b
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size'
              type: JMX
              key: 'jmx[{#JMXOBJ},QueueSize]'
              username: '{$ACTIVEMQ.USER}'
              password: '{$ACTIVEMQ.PASSWORD}'
              description: 'Number of messages on this destination, including any that have been dispatched but not acknowledged.'
              jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
              tags:
                - tag: component
                  value: destination
              trigger_prototypes:
                - uuid: f1c49943152c407088e3bf288b650b41
                  expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},QueueSize],{$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"})>{$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} and {$ACTIVEMQ.QUEUE.ENABLED:"{#JMXDESTINATIONNAME}"}=1'
                  name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size is high'
                  event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Queue size higher than {$ACTIVEMQ.QUEUE.WARN:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.QUEUE.TIME:"{#JMXDESTINATIONNAME}"}'
                  priority: AVERAGE
                  description: 'Queue size is higher than threshold. It may indicate performance problems.'
                  tags:
                    - tag: scope
                      value: performance
          trigger_prototypes:
            - uuid: c366d4b329c0471386566d6795c5787f
              expression: '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_mode: RECOVERY_EXPRESSION
              recovery_expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ConsumerCount],{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})>={$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"}'
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low'
              event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Consumers count is too low (below {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})'
              priority: AVERAGE
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
            - uuid: 344a0b83a5444d009aa56e97c1c0171b
              expression: '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}"})'
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate'
              event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Message enqueue rate is higher than dequeue rate for {$ACTIVEMQ.MSG.RATE.WARN.TIME:"{#JMXDESTINATIONNAME}"}'
              priority: AVERAGE
              description: 'Enqueue rate is higher than dequeue rate. It may indicate performance problems.'
              tags:
                - tag: scope
                  value: notice
            - uuid: 725d0270554e4fe59d138becfa3e6377
              expression: '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_mode: RECOVERY_EXPRESSION
              recovery_expression: 'min(/Apache ActiveMQ by JMX/jmx[{#JMXOBJ},ProducerCount],{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})>={$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"}'
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low'
              event_name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers count is too low (below {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH:"{#JMXDESTINATIONNAME}"} for {$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME:"{#JMXDESTINATIONNAME}"})'
              priority: AVERAGE
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
          graph_prototypes:
            - uuid: 006f397fbb664f9981b9228808870239
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},MemoryPercentUsage]'
            - uuid: 1c9a999ec2b94942ad10f408b470b1a2
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Messages rate'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},EnqueueCount]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},DequeueCount]'
            - uuid: 0854230a67bc4d29b3b3dc2cb7eeaefa
              name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Producers and consumers'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},ProducerCount]'
                - sortorder: '1'
                  drawtype: GRADIENT_LINE
                  color: F63100
                  item:
                    host: 'Apache ActiveMQ by JMX'
                    key: 'jmx[{#JMXOBJ},ConsumerCount]'
          jmx_endpoint: 'service:jmx:rmi:///jndi/rmi://{HOST.CONN}:{HOST.PORT}/jmxrmi'
      tags:
        - tag: class
          value: application
        - tag: target
          value: apache-activemq
      macros:
        - macro: '{$ACTIVEMQ.BROKER.CONSUMERS.MIN.HIGH}'
          value: '1'
          description: 'Minimum amount of consumers for broker. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.BROKER.CONSUMERS.MIN.TIME}'
          value: 5m
          description: 'Time during which there may be no consumers on destination. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.BROKER.PRODUCERS.MIN.HIGH}'
          value: '1'
          description: 'Minimum amount of producers for broker. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.BROKER.PRODUCERS.MIN.TIME}'
          value: 5m
          description: 'Time during which there may be no producers on broker. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.HIGH}'
          value: '1'
          description: 'Minimum amount of consumers for destination. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.DESTINATION.CONSUMERS.MIN.TIME}'
          value: 10m
          description: 'Time during which there may be no consumers in destination. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.HIGH}'
          value: '1'
          description: 'Minimum amount of producers for destination. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.DESTINATION.PRODUCERS.MIN.TIME}'
          value: 10m
          description: 'Time during which there may be no producers on destination. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.EXPIRED.WARN}'
          value: '0'
          description: 'Threshold for expired messages count. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.LLD.FILTER.BROKER.MATCHES}'
          value: '.*'
          description: 'Filter of discoverable discovered brokers'
        - macro: '{$ACTIVEMQ.LLD.FILTER.BROKER.NOT_MATCHES}'
          value: 'CHANGE IF NEEDED'
          description: 'Filter to exclude discovered brokers'
        - macro: '{$ACTIVEMQ.LLD.FILTER.DESTINATION.MATCHES}'
          value: '.*'
          description: 'Filter of discoverable discovered destinations'
        - macro: '{$ACTIVEMQ.LLD.FILTER.DESTINATION.NOT_MATCHES}'
          value: 'CHANGE IF NEEDED'
          description: 'Filter to exclude discovered destinations'
        - macro: '{$ACTIVEMQ.MEM.MAX.HIGH}'
          value: '90'
          description: 'Memory threshold for HIGH trigger. Can be used with destination or broker name as context.'
        - macro: '{$ACTIVEMQ.MEM.MAX.WARN}'
          value: '75'
          description: 'Memory threshold for AVERAGE trigger. Can be used with destination or broker name as context.'
        - macro: '{$ACTIVEMQ.MEM.TIME}'
          value: 5m
          description: 'Time during which the metric can be above the threshold. Can be used with destination or broker name as context.'
        - macro: '{$ACTIVEMQ.MSG.RATE.WARN.TIME}'
          value: 15m
          description: 'The time for message enqueue/dequeue rate. Can be used with destination or broker name as context.'
        - macro: '{$ACTIVEMQ.PASSWORD}'
          value: activemq
          description: 'Password for JMX'
        - macro: '{$ACTIVEMQ.PORT}'
          value: '1099'
          description: 'Port for JMX'
        - macro: '{$ACTIVEMQ.QUEUE.ENABLED}'
          value: '1'
          description: 'Use this to disable alerting for specific destination. 1 = enabled, 0 = disabled. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.QUEUE.TIME}'
          value: 10m
          description: 'Time during which the QueueSize can be higher than threshold. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.QUEUE.WARN}'
          value: '100'
          description: 'Threshold for QueueSize. Can be used with destination name as context.'
        - macro: '{$ACTIVEMQ.STORE.MAX.HIGH}'
          value: '90'
          description: 'Storage threshold for HIGH trigger. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.STORE.MAX.WARN}'
          value: '75'
          description: 'Storage threshold for AVERAGE trigger. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.STORE.TIME}'
          value: 5m
          description: 'Time during which the metric can be above the threshold. Can be used with destination or broker name as context.'
        - macro: '{$ACTIVEMQ.TEMP.MAX.HIGH}'
          value: '90'
          description: 'Temp threshold for HIGH trigger. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.TEMP.MAX.WARN}'
          value: '75'
          description: 'Temp threshold for AVERAGE trigger. Can be used with broker name as context.'
        - macro: '{$ACTIVEMQ.TEMP.TIME}'
          value: 5m
          description: 'Time during which the metric can be above the threshold. Can be used with destination or broker name as context.'
        - macro: '{$ACTIVEMQ.TOTAL.CONSUMERS.COUNT}'
          value: TotalConsumerCount
          description: 'Attribute for TotalConsumerCount per destination. Used to suppress destination''s triggers when the count of consumers on the broker is lower than threshold.'
        - macro: '{$ACTIVEMQ.TOTAL.PRODUCERS.COUNT}'
          value: TotalProducerCount
          description: 'Attribute for TotalProducerCount per destination. Used to suppress destination''s triggers when the count of consumers on the broker is lower than threshold.'
        - macro: '{$ACTIVEMQ.USER}'
          value: admin
          description: 'User for JMX'
      dashboards:
        - uuid: 292193a9f5fc4a40a78aa304a6ceb536
          name: 'Apache ActiveMQ: Overview'
          pages:
            - name: General
              widgets:
                - type: graphprototype
                  width: '36'
                  height: '15'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Apache ActiveMQ by JMX'
                        name: '{#JMXBROKERNAME}: {#JMXDESTINATIONTYPE} {#JMXDESTINATIONNAME}: Memory usage'
                    - type: STRING
                      name: reference
                      value: AAAAA
                    - type: INTEGER
                      name: rows
                      value: '3'
                - type: graphprototype
                  x: '36'
                  width: '36'
                  height: '15'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'Apache ActiveMQ by JMX'
                        name: 'Broker {#JMXBROKERNAME}: Resources usage'
                    - type: STRING
                      name: reference
                      value: AAAAB
                    - type: INTEGER
                      name: rows
                      value: '3'
