zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
      name: Templates/Applications
  templates:
    - uuid: 5fa761bc51e4432a90c6c9eece930c4a
      template: 'RabbitMQ cluster by Zabbix agent'
      name: 'RabbitMQ cluster by Zabbix agent'
      description: |
        Get cluster metrics from RabbitMQ management plugin provided an HTTP-based API using Zabbix agent.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/387226-discussion-thread-for-official-zabbix-template-rabbitmq
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Applications
      items:
        - uuid: 31908a8287be442681a0ded564977ff2
          name: 'Messages acknowledged'
          type: DEPENDENT
          key: rabbitmq.overview.messages.ack
          description: 'The number of messages delivered to clients and acknowledged.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.ack
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: f78fabbd7e3f44dc81b1cf9c90b26f2e
          name: 'Messages acknowledged per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.ack.rate
          value_type: FLOAT
          description: 'The rate of messages (per second) delivered to clients and acknowledged.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.ack_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 45cf9b5cf5cd4b13b0e140383233799f
          name: 'Messages confirmed'
          type: DEPENDENT
          key: rabbitmq.overview.messages.confirm
          description: 'The count of confirmed messages.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.confirm
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: bc85a070e1e9451b953d85bb519ed63d
          name: 'Messages confirmed per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.confirm.rate
          value_type: FLOAT
          description: 'The rate of messages confirmed per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.confirm_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 004da545af4a4f61bd2167281bb9a02b
          name: 'Messages delivered'
          type: DEPENDENT
          key: rabbitmq.overview.messages.deliver_get
          description: 'The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.deliver_get
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: c00a84c8676544dcbdd74fec13881063
          name: 'Messages delivered per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.deliver_get.rate
          value_type: FLOAT
          description: 'The rate of the sum of messages (per second) delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.deliver_get_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 4215bdf87f0e426f85bd79434a0fb0bb
          name: 'Messages published'
          type: DEPENDENT
          key: rabbitmq.overview.messages.publish
          description: 'The count of published messages.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.publish
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: cfadadb681474c7eb0512d1f4d223ff6
          name: 'Messages published per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.publish.rate
          value_type: FLOAT
          description: 'The rate of messages published per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.publish_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: bb068ac7c6094fb8a59cd1a003e88c39
          name: 'Messages publish_in'
          type: DEPENDENT
          key: rabbitmq.overview.messages.publish_in
          description: 'The count of messages published from the channels into this overview.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.publish_in
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: db511bf1cd6c465f8fe1ae6b5fa08660
          name: 'Messages publish_in per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.publish_in.rate
          value_type: FLOAT
          description: 'The rate of messages (per second) published from the channels into this overview.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.publish_in_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 23dcb85dd9bc4fefb1a9682956181c2e
          name: 'Messages publish_out'
          type: DEPENDENT
          key: rabbitmq.overview.messages.publish_out
          description: 'The count of messages published from this overview into queues.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.publish_out
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 05e4c745be95412995749c352ec0f925
          name: 'Messages publish_out per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.publish_out.rate
          value_type: FLOAT
          description: 'The rate of messages (per second) published from this overview into queues.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.publish_out_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 650d6a94e381477299c62cfb2a2252cf
          name: 'Messages returned redeliver'
          type: DEPENDENT
          key: rabbitmq.overview.messages.redeliver
          description: 'The count of subset of messages in the `deliver_get`, which had the `redelivered` flag set.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.redeliver
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 6d7eb8880bca4c6e92f65f8a32911599
          name: 'Messages returned redeliver per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.redeliver.rate
          value_type: FLOAT
          description: 'The rate of subset of messages (per second) in the `deliver_get`, which had the `redelivered` flag set.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.redeliver_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: e3faec09ae0a4d7aa8aab50d71de7bb3
          name: 'Messages returned unroutable'
          type: DEPENDENT
          key: rabbitmq.overview.messages.return_unroutable
          description: 'The count of messages returned to a publisher as unroutable.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.return_unroutable
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 72267cce69cf490ea626ff3ae17b6362
          name: 'Messages returned unroutable per second'
          type: DEPENDENT
          key: rabbitmq.overview.messages.return_unroutable.rate
          value_type: FLOAT
          description: 'The rate of messages (per second) returned to a publisher as unroutable.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.message_stats.return_unroutable_details.rate
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 2b03117e863348ee84d94acfe877ef7f
          name: 'Channels total'
          type: DEPENDENT
          key: rabbitmq.overview.object_totals.channels
          description: 'The total number of channels.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.object_totals.channels
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: channels
        - uuid: b3cdd6739a964447b524df4fdd726434
          name: 'Connections total'
          type: DEPENDENT
          key: rabbitmq.overview.object_totals.connections
          description: 'The total number of connections.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.object_totals.connections
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: connections
        - uuid: c39007dbd4374bee943d61b7e90c0f01
          name: 'Consumers total'
          type: DEPENDENT
          key: rabbitmq.overview.object_totals.consumers
          description: 'The total number of consumers.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.object_totals.consumers
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: consumers
        - uuid: be0b952e5d08409aa2c65fe143a9193c
          name: 'Exchanges total'
          type: DEPENDENT
          key: rabbitmq.overview.object_totals.exchanges
          description: 'The total number of exchanges.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.object_totals.exchanges
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: exchanges
        - uuid: d7c86b4921f54924af1b72cd2493da1c
          name: 'Queues total'
          type: DEPENDENT
          key: rabbitmq.overview.object_totals.queues
          description: 'The total number of queues.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.object_totals.queues
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: queues
        - uuid: c98b2b3dd2bd4fec9e7c571bc631167b
          name: 'Messages total'
          type: DEPENDENT
          key: rabbitmq.overview.queue_totals.messages
          description: 'The total number of messages (ready, plus unacknowledged).'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.queue_totals.messages
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: efaabe175e5f4fffa8a810ea35753475
          name: 'Messages ready for delivery'
          type: DEPENDENT
          key: rabbitmq.overview.queue_totals.messages.ready
          description: 'The number of messages ready for delivery.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.queue_totals.messages_ready
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: 6cf09ed9d244464288c8050b10622e3a
          name: 'Messages unacknowledged'
          type: DEPENDENT
          key: rabbitmq.overview.queue_totals.messages.unacknowledged
          description: 'The number of unacknowledged messages.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.queue_totals.messages_unacknowledged
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: messages
        - uuid: f015f991bcea4c4dbf83dfb013300010
          name: 'Get exchanges'
          key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"]'
          history: 1h
          value_type: TEXT
          description: 'The HTTP API endpoint that returns exchanges metrics.'
          preprocessing:
            - type: REGEX
              parameters:
                - '\n\s?\n(.*)'
                - \1
          tags:
            - tag: component
              value: raw
        - uuid: 943eabfb44164908b9135aa4d6478bea
          name: 'Get overview'
          key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          history: 1h
          value_type: TEXT
          description: 'The HTTP API endpoint that returns cluster-wide metrics.'
          preprocessing:
            - type: REGEX
              parameters:
                - '\n\s?\n(.*)'
                - \1
          tags:
            - tag: component
              value: raw
          triggers:
            - uuid: 000d3e773f6e4ebf89f16daa2ce8c168
              expression: 'nodata(/RabbitMQ cluster by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"],30m)=1'
              name: 'Failed to fetch overview data'
              event_name: 'Failed to fetch overview data (or no data for 30m)'
              priority: WARNING
              description: 'Zabbix has not received any data for items for the last 30 minutes.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: availability
      discovery_rules:
        - uuid: e28b4491721d4dbf8eded86a5caeabc2
          name: 'Exchanges discovery'
          type: DEPENDENT
          key: rabbitmq.exchanges.discovery
          filter:
            evaltype: AND
            conditions:
              - macro: '{#EXCHANGE}'
                value: '{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES}'
              - macro: '{#EXCHANGE}'
                value: '{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          description: 'The metrics for an individual exchange.'
          item_prototypes:
            - uuid: 68892e56e0074516b5d052dd7178955f
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of messages (per second) delivered to clients and acknowledged.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.ack_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: fcf7807f096d4cddb8fa2b3671814dfa
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The number of messages delivered to clients and acknowledged.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.ack
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 858f8ce62fa04a31902569a712e58234
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of messages confirmed per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.confirm_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 38d41b5d815a40ff816f6fad2395b61a
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The count of confirmed messages.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.confirm
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: ab53a6957ea641fe8b2a7f26c4bcc743
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of the sum of messages (per second) delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.deliver_get_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 412e5003ad2d4e80832ee0551a596791
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.deliver_get
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 32a0c7af8b9940a482a3a1d63ee90940
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of messages published per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 1eccbe4450d74d5f9c5b8f7e6279b214
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The count of published messages.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 3520a523abd1413f88c1c19978e6d562
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of messages (per second) published from the channels into this overview.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish_in_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 520d8301e48540679472bf508a6e293b
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The count of messages published from the channels into this overview.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish_in
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 6beb5e40cb8b416a8722ea77abb7355d
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of messages (per second) published from this overview into queues.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish_out_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: beb929ee395e4caba73f3063c24a1d60
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The count of messages published from this overview into queues.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish_out
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 7485d5a12fb04a13810ea54b9cc598e1
              name: 'Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of subset of messages (per second) in the `deliver_get`, which had the `redelivered` flag set.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.redeliver_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 58a06005659943429122d451acb521e0
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The count of subset of messages in the `deliver_get`, which had the `redelivered` flag set.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.redeliver
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 295eeb3bd071400d921efe1f5a924a3e
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              value_type: FLOAT
              description: 'The rate of messages (per second) returned to a publisher as unroutable.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.return_unroutable_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 2901eccbd8ef483ba63c5522755155e7
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable'
              type: DEPENDENT
              key: 'rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              description: 'The count of messages returned to a publisher as unroutable.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.return_unroutable
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: exchange
                  value: '{#EXCHANGE}'
                - tag: type
                  value: '{#TYPE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 4491f48f732d40c0b7f29010cf4ca046
              name: 'Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data'
              type: DEPENDENT
              key: 'rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"]'
              history: '0'
              value_type: TEXT
              description: 'The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].first()'
              master_item:
                key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"]'
              tags:
                - tag: component
                  value: raw
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"]'
          lld_macro_paths:
            - lld_macro: '{#EXCHANGE}'
              path: $.name
            - lld_macro: '{#TYPE}'
              path: $.type
            - lld_macro: '{#VHOST}'
              path: $.vhost
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - 'return JSON.stringify(JSON.parse(value),[''name'',''type'',''vhost'']);'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
        - uuid: 406836367f45425fbd181a20dc3d08d7
          name: 'Health Check 3.8.10+ discovery'
          type: DEPENDENT
          key: rabbitmq.healthcheck.v3810.discovery
          description: 'Specific metrics for the versions: up to and including 3.8.10.'
          item_prototypes:
            - uuid: 4c93b04164d24eb8b9dbdab652afc7bc
              name: 'Healthcheck: alarms in effect in the cluster{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"]'
              description: |
                It responds with a status code `200 OK` if there are no alarms in effect in the cluster.
                Otherwise, it responds with a status code `503 Service Unavailable`.
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - HTTP\/1\.1\b\s(\d+)
                    - \1
                - type: JAVASCRIPT
                  parameters:
                    - |
                      switch(value){
                      case '200': return 1
                      case '503': return 0
                      default: 2}
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: 032949c387c64223b3125ba1120ae082
                  expression: 'last(/RabbitMQ cluster by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"])=0'
                  name: 'There are active alarms in the cluster'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'This is the default API endpoint path: http://{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/index.html.'
                  tags:
                    - tag: scope
                      value: notice
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.management_version
            - type: JAVASCRIPT
              parameters:
                - |
                  var rabbit_version = parseInt(value.split('.')[0]) * 10000 +
                  	parseInt(value.split('.')[1]) * 100 +
                  	parseInt(value.split('.')[2]);
                  return JSON.stringify(rabbit_version >= 30810 ? [{ '{#SINGLETON}': '' }] : []);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
      tags:
        - tag: class
          value: software
        - tag: target
          value: rabbitmq
      macros:
        - macro: '{$RABBITMQ.API.CLUSTER_HOST}'
          value: 127.0.0.1
          description: 'The hostname or IP of the API endpoint for the RabbitMQ cluster.'
        - macro: '{$RABBITMQ.API.PASSWORD}'
          value: zabbix
        - macro: '{$RABBITMQ.API.PORT}'
          value: '15672'
          description: 'The port of the RabbitMQ API endpoint.'
        - macro: '{$RABBITMQ.API.SCHEME}'
          value: http
          description: 'The request scheme, which may be HTTP or HTTPS.'
        - macro: '{$RABBITMQ.API.USER}'
          value: zbx_monitor
        - macro: '{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES}'
          value: '.*'
          description: 'This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level.'
        - macro: '{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level.'
      dashboards:
        - uuid: a886a871a00d47e28b8648cadae3bc99
          name: 'RabbitMQ overview'
          pages:
            - widgets:
                - type: graph
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ cluster by Zabbix agent'
                        name: 'RabbitMQ: Messages'
                    - type: STRING
                      name: reference
                      value: AAAAA
                - type: graph
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ cluster by Zabbix agent'
                        name: 'RabbitMQ: Messages status'
                    - type: STRING
                      name: reference
                      value: AAAAC
                - type: graph
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ cluster by Zabbix agent'
                        name: 'RabbitMQ: Messages per second'
                    - type: STRING
                      name: reference
                      value: AAAAE
                - type: graph
                  x: '36'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ cluster by Zabbix agent'
                        name: 'RabbitMQ: Connections'
                    - type: STRING
                      name: reference
                      value: AAAAB
                - type: graph
                  x: '36'
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ cluster by Zabbix agent'
                        name: 'RabbitMQ: Queues'
                    - type: STRING
                      name: reference
                      value: AAAAD
      valuemaps:
        - uuid: 78275d6daacf42b4b97e3d806dfe81fe
          name: 'RabbitMQ healthcheck'
          mappings:
            - value: '0'
              newvalue: Failed
            - value: '1'
              newvalue: Ok
            - value: '2'
              newvalue: Error
    - uuid: d5dc11ae9ab143a89c4be534bbb35188
      template: 'RabbitMQ node by Zabbix agent'
      name: 'RabbitMQ node by Zabbix agent'
      description: |
        Get node metrics from RabbitMQ management plugin provided an HTTP-based API using Zabbix agent.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/387226-discussion-thread-for-official-zabbix-template-rabbitmq
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Applications
      items:
        - uuid: b1f191f9077f4382b5b87e0085ae2622
          name: 'Service response time'
          key: 'net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"]'
          value_type: FLOAT
          units: s
          tags:
            - tag: component
              value: system
        - uuid: 6229b623f5ff40f9a65e9573b3b86e3f
          name: 'Service ping'
          key: 'net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"]'
          valuemap:
            name: 'Service state'
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 10m
          tags:
            - tag: component
              value: health
            - tag: component
              value: network
        - uuid: 8201cc537b124d9292fcf692922ee0ad
          name: 'Get processes summary'
          key: 'proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary]'
          history: '0'
          value_type: TEXT
          description: 'The aggregated data of summary metrics for all processes.'
          tags:
            - tag: component
              value: raw
        - uuid: 7dad79be93bd46bba7a2540b38080b06
          name: 'Free disk space'
          type: DEPENDENT
          key: rabbitmq.node.disk_free
          units: B
          description: 'The current free disk space.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.disk_free
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: storage
        - uuid: d8de1eb13f024ce99388fc4bb68d6ad0
          name: 'Disk free alarm'
          type: DEPENDENT
          key: rabbitmq.node.disk_free_alarm
          description: 'It checks whether the node has a disk alarm or not.'
          valuemap:
            name: 'Alarm state'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.disk_free_alarm
            - type: BOOL_TO_DECIMAL
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: storage
          triggers:
            - uuid: b68cb12ecd4046fd80a717fb557f04e8
              expression: 'last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1'
              name: 'Free disk space alarm'
              event_name: 'Free disk space alarm (Free space threshold has been reached)'
              opdata: 'Current state: {ITEM.LASTVALUE1}'
              priority: AVERAGE
              description: 'For more details see [Free Disk Space Alarms](https://www.rabbitmq.com/disk-alarms.html).'
              tags:
                - tag: scope
                  value: performance
        - uuid: 4e62b476bd11497f9190d1f720f22f75
          name: 'Disk free limit'
          type: DEPENDENT
          key: rabbitmq.node.disk_free_limit
          units: B
          description: 'The free space limit of a disk expressed in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.disk_free_limit
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: storage
        - uuid: 09aeab86c69846eb82d27c2f82f46d2b
          name: 'Used file descriptors'
          type: DEPENDENT
          key: rabbitmq.node.fd_used
          description: 'The descriptors of the used file.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.fd_used
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: storage
        - uuid: e059b278ba384133a72dc723c2b2c40b
          name: 'Memory alarm'
          type: DEPENDENT
          key: rabbitmq.node.mem_alarm
          description: 'It checks whether the host has a memory alarm or not.'
          valuemap:
            name: 'Alarm state'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.mem_alarm
            - type: BOOL_TO_DECIMAL
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: memory
          triggers:
            - uuid: ec6ae727fe774b0fa56bb4d9ad773e35
              expression: 'last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1'
              name: 'Memory alarm'
              event_name: 'Memory alarm (Memory usage threshold has been reached)'
              opdata: 'Current state: {ITEM.LASTVALUE1}'
              priority: AVERAGE
              description: 'For more details see [Memory Alarms](https://www.rabbitmq.com/memory.html).'
              tags:
                - tag: scope
                  value: performance
        - uuid: 54bd4a47d635444e8e2e955325dbb976
          name: 'Memory limit'
          type: DEPENDENT
          key: rabbitmq.node.mem_limit
          units: B
          description: 'The memory usage with high watermark properties expressed in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.mem_limit
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: memory
        - uuid: d6a01ec409a6449986c5c0a81ffaf914
          name: 'Memory used'
          type: DEPENDENT
          key: rabbitmq.node.mem_used
          units: B
          description: 'The memory usage expressed in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.mem_used
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: memory
        - uuid: db91f84a5ad7412c959fbfe4e3b6df88
          name: 'Management plugin version'
          type: DEPENDENT
          key: rabbitmq.node.overview.management_version
          value_type: CHAR
          description: 'The version of the management plugin in use.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.management_version
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: system
        - uuid: 52a0be5049ee40748761d301a644315b
          name: 'RabbitMQ version'
          type: DEPENDENT
          key: rabbitmq.node.overview.rabbitmq_version
          value_type: CHAR
          description: 'The version of the RabbitMQ on the node, which processed this request.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.rabbitmq_version
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: daf98bb4593d4697bc51423b2f65ba41
              expression: 'last(/RabbitMQ node by Zabbix agent/rabbitmq.node.overview.rabbitmq_version,#1)<>last(/RabbitMQ node by Zabbix agent/rabbitmq.node.overview.rabbitmq_version,#2) and length(last(/RabbitMQ node by Zabbix agent/rabbitmq.node.overview.rabbitmq_version))>0'
              name: 'Version has changed'
              event_name: 'Version has changed (new version: {ITEM.VALUE})'
              priority: INFO
              description: 'RabbitMQ version has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 5e8c1ed0b073461eb14477edac3c756a
          name: 'Number of network partitions'
          type: DEPENDENT
          key: rabbitmq.node.partitions
          description: 'The number of network partitions, which this node "sees".'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.partitions
            - type: JAVASCRIPT
              parameters:
                - 'return JSON.parse(value).length;'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: network
          triggers:
            - uuid: 5bed266725e94000804b0ecc7bce6209
              expression: 'min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0'
              name: 'Number of network partitions is too high'
              event_name: 'Number of network partitions is too high (more than 0 for 5m)'
              opdata: 'Current value: {ITEM.LASTVALUE1}'
              priority: WARNING
              description: 'For more details see [Detecting Network Partitions](https://www.rabbitmq.com/partitions.html#detecting).'
              tags:
                - tag: scope
                  value: performance
        - uuid: 087fcb3992ef4e35bacd4b6e69ef93d3
          name: 'Is running'
          type: DEPENDENT
          key: rabbitmq.node.running
          description: 'It "sees" whether the node is running or not.'
          valuemap:
            name: 'Service state'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.running
            - type: BOOL_TO_DECIMAL
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: system
        - uuid: 1ae6f429e99d4ddaa54aa6adab6b8100
          name: 'Runtime run queue'
          type: DEPENDENT
          key: rabbitmq.node.run_queue
          description: 'The average number of Erlang processes waiting to run.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.run_queue
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: system
        - uuid: 3aa508520f224150a05a7ebb64d22c5e
          name: 'Sockets available'
          type: DEPENDENT
          key: rabbitmq.node.sockets_total
          description: 'The file descriptors available for use as sockets.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.sockets_total
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: system
        - uuid: de2cbe02ff6c47d78b6c7105709f4805
          name: 'Sockets used'
          type: DEPENDENT
          key: rabbitmq.node.sockets_used
          description: 'The number of file descriptors used as sockets.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.sockets_used
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: system
        - uuid: a28b6c8cca5544b79c2d9946c1978c7e
          name: Uptime
          type: DEPENDENT
          key: rabbitmq.node.uptime
          value_type: FLOAT
          units: s
          description: 'Uptime expressed in milliseconds.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.uptime
            - type: MULTIPLIER
              parameters:
                - '0.001'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: 729c448ebabb417bb7ce17b1634c4484
              expression: 'last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m'
              name: 'Host has been restarted'
              event_name: '{HOST.NAME} has been restarted (uptime < 10m)'
              priority: INFO
              description: 'Uptime is less than 10 minutes.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 61730555a0ae4f798ea740effb82764c
          name: 'Get nodes'
          key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"]'
          history: 1h
          value_type: TEXT
          description: 'The HTTP API endpoint that returns metrics of the nodes.'
          preprocessing:
            - type: REGEX
              parameters:
                - '\n\s?\n(.*)'
                - \1
          tags:
            - tag: component
              value: raw
        - uuid: 1af326f40cdb407a96b34025062b4743
          name: 'Get node overview'
          key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          history: 1h
          value_type: TEXT
          description: 'The HTTP API endpoint that returns cluster-wide metrics.'
          preprocessing:
            - type: REGEX
              parameters:
                - '\n\s?\n(.*)'
                - \1
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          tags:
            - tag: component
              value: raw
        - uuid: 7fb61ad564db42d5a373912491f5c9d3
          name: 'Get queues'
          key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"]'
          history: 1h
          value_type: TEXT
          description: 'The HTTP API endpoint that returns metrics of the queues metrics.'
          preprocessing:
            - type: REGEX
              parameters:
                - '\n\s?\n(.*)'
                - \1
          tags:
            - tag: component
              value: raw
      discovery_rules:
        - uuid: 04ef7d13809c45009553815f60ef5ba8
          name: 'Health Check 3.8.9- discovery'
          type: DEPENDENT
          key: rabbitmq.healthcheck.v389.discovery
          description: 'Specific metrics for the versions: up to and including 3.8.4.'
          item_prototypes:
            - uuid: 8b959a9d03dc4ae8bed7292973f4fcc4
              name: 'Healthcheck{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"]'
              description: 'It checks whether the RabbitMQ application is running; and whether the channels and queues can be listed successfully; and that no alarms are in effect.'
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - '\n\s?\n(.*)'
                    - \1
                - type: JSONPATH
                  parameters:
                    - $.status
                - type: BOOL_TO_DECIMAL
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: bf6bcbda20ed46cbb779d9c1f446dfa8
                  expression: 'last(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"])=0'
                  name: 'Node healthcheck failed'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'For more details see [Health Checks](https://www.rabbitmq.com/monitoring.html#health-checks).'
                  tags:
                    - tag: scope
                      value: availability
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.management_version
            - type: JAVASCRIPT
              parameters:
                - |
                  var rabbit_version = parseInt(value.split('.')[0]) * 10000 +
                  	parseInt(value.split('.')[1]) * 100 +
                  	parseInt(value.split('.')[2]);
                  return JSON.stringify(rabbit_version < 30810 ? [{ '{#SINGLETON}': '' }] : []);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
        - uuid: 3c0021a3e57142eb806deb5b47b6700a
          name: 'Health Check 3.8.10+ discovery'
          type: DEPENDENT
          key: rabbitmq.healthcheck.v3810.discovery
          description: 'Specific metrics for the versions: up to and including 3.8.10.'
          item_prototypes:
            - uuid: 0f1cd729d8f4447db25e0af19eae595d
              name: 'Healthcheck: expiration date on the certificates{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/certificate-expiration/1/months{#SINGLETON}"]'
              description: |
                It checks the expiration date on the certificates for every listener configured to use the Transport Layer Security (TLS).
                It responds with a status code `200 OK` if all the certificates are valid (have not expired).
                Otherwise, it responds with a status code `503 Service Unavailable`.
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - HTTP\/1\.1\b\s(\d+)
                    - \1
                - type: JAVASCRIPT
                  parameters:
                    - |
                      switch(value){
                      case '200': return 1
                      case '503': return 0
                      default: 2}
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              tags:
                - tag: component
                  value: certificate
                - tag: component
                  value: health
              trigger_prototypes:
                - uuid: d180912136c74e5cb246655ecab75f57
                  expression: 'last(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/certificate-expiration/1/months{#SINGLETON}"])=0'
                  name: 'There are valid TLS certificates expiring in the next month'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'It checks if there are valid TLS certificates expiring in the next month. This is the default API endpoint path: http://{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/index.html.'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 701449b128cb42cdb971fc608ba9f29b
              name: 'Healthcheck: local alarms in effect on this node{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"]'
              description: |
                It responds with a status code `200 OK` if there are no local alarms in effect on the target node.
                Otherwise, it responds with a status code `503 Service Unavailable`.
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - HTTP\/1\.1\b\s(\d+)
                    - \1
                - type: JAVASCRIPT
                  parameters:
                    - |
                      switch(value){
                      case '200': return 1
                      case '503': return 0
                      default: 2}
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: 62962f18baa4480294e097fec2cc5e4c
                  expression: 'last(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"])=0'
                  name: 'There are active alarms in the node'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'It checks the active alarms in the nodes via API. This is the default API endpoint path: http://{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/index.html.'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 7a07966d8dde4f2caa9ff95693b86974
              name: 'Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-mirror-sync-critical{#SINGLETON}"]'
              description: |
                It checks if there are classic mirrored queues without synchronized mirrors online (queues that would potentially lose data if the target node is shut down).
                It responds with a status code `200 OK` if there are no such classic mirrored queues.
                Otherwise, it responds with a status code `503 Service Unavailable`.
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - HTTP\/1\.1\b\s(\d+)
                    - \1
                - type: JAVASCRIPT
                  parameters:
                    - |
                      switch(value){
                      case '200': return 1
                      case '503': return 0
                      default: 2}
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: queues
              trigger_prototypes:
                - uuid: 19e392f9e48e4c8287e04751a2a73843
                  expression: 'last(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-mirror-sync-critical{#SINGLETON}"])=0'
                  name: 'There are queues that could potentially lose data if this node goes offline.'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'It checks whether there are queues that could potentially lose data if this node goes offline via API. This is the default API endpoint path: http://{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/index.html.'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: f6ec1bb1cc4741be852136fac2c63333
              name: 'Healthcheck: queues with minimum online quorum{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-quorum-critical{#SINGLETON}"]'
              description: |
                It checks if there are quorum queues with minimum online quorum (queues that would lose their quorum and availability if the target node is shut down).
                It responds with a status code `200 OK` if there are no such quorum queues.
                Otherwise, it responds with a status code `503 Service Unavailable`.
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - HTTP\/1\.1\b\s(\d+)
                    - \1
                - type: JAVASCRIPT
                  parameters:
                    - |
                      switch(value){
                      case '200': return 1
                      case '503': return 0
                      default: 2}
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: queues
              trigger_prototypes:
                - uuid: e063b6dde6a0484ba1561861d8b1f0c1
                  expression: 'last(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/node-is-quorum-critical{#SINGLETON}"])=0'
                  name: 'There are queues that would lose their quorum and availability if this node is shut down.'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'It checks if there are queues that could potentially lose data if this node goes offline via API. This is the default API endpoint path: http://{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/index.html.'
                  tags:
                    - tag: scope
                      value: notice
            - uuid: 0d1ad3daf2bb46dba2c9913c1684a0d4
              name: 'Healthcheck: virtual hosts on this node{#SINGLETON}'
              key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"]'
              description: |
                It responds with It responds with a status code `200 OK` if all virtual hosts are running on the target node.
                Otherwise it responds with a status code `503 Service Unavailable`.
              valuemap:
                name: 'RabbitMQ healthcheck'
              preprocessing:
                - type: REGEX
                  parameters:
                    - HTTP\/1\.1\b\s(\d+)
                    - \1
                - type: JAVASCRIPT
                  parameters:
                    - |
                      switch(value){
                      case '200': return 1
                      case '503': return 0
                      default: 2}
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 3h
              tags:
                - tag: component
                  value: health
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: b61117e5eeff4d41a9a2f1729ec174b2
                  expression: 'last(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"])=0'
                  name: 'There are not running virtual hosts'
                  opdata: 'Current state: {ITEM.LASTVALUE1}'
                  priority: AVERAGE
                  description: 'It checks if there are not running virtual hosts via API. This is the default API endpoint path: http://{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/index.html.'
                  tags:
                    - tag: scope
                      value: notice
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"]'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.management_version
            - type: JAVASCRIPT
              parameters:
                - |
                  var rabbit_version = parseInt(value.split('.')[0]) * 10000 +
                  	parseInt(value.split('.')[1]) * 100 +
                  	parseInt(value.split('.')[2]);
                  return JSON.stringify(rabbit_version >= 30810 ? [{ '{#SINGLETON}': '' }] : []);
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
        - uuid: 7cdf2316fa664f34b5de4f315bb7caf9
          name: 'RabbitMQ process discovery'
          type: DEPENDENT
          key: rabbitmq.proc.discovery
          filter:
            evaltype: AND
            conditions:
              - macro: '{#RABBITMQ.NAME}'
                value: '{$RABBITMQ.PROCESS_NAME}'
          description: 'The discovery of the RabbitMQ summary processes.'
          item_prototypes:
            - uuid: 0b195bf594c44b1f869b4a7671f61453
              name: 'CPU utilization'
              key: 'proc.cpu.util[{#RABBITMQ.NAME}]'
              value_type: FLOAT
              units: '%'
              description: 'The percentage of the CPU utilization by a process {#RABBITMQ.NAME}.'
              tags:
                - tag: component
                  value: cpu
            - uuid: 882cf9cfecb448f3af17e12bf9aa7bef
              name: 'Get process data'
              type: DEPENDENT
              key: 'rabbitmq.proc.get[{#RABBITMQ.NAME}]'
              history: '0'
              value_type: TEXT
              description: 'The summary metrics aggregated by a process {#RABBITMQ.NAME}.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@["name"]=="{#RABBITMQ.NAME}")].first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: 'Failed to retrieve process {#RABBITMQ.NAME} data'
              master_item:
                key: 'proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary]'
              tags:
                - tag: component
                  value: raw
            - uuid: 8f1c8d2449c44ab590842184d9deb3a6
              name: 'Number of running processes'
              type: DEPENDENT
              key: 'rabbitmq.proc.num[{#RABBITMQ.NAME}]'
              description: 'The number of running processes {#RABBITMQ.NAME}.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.processes
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'rabbitmq.proc.get[{#RABBITMQ.NAME}]'
              tags:
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: 2979bc7d779b404696f7eac273e99ea7
                  expression: 'last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])=0'
                  name: 'Process is not running'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: availability
            - uuid: 875ab477c06943d7881ee896936ee8a2
              name: 'Memory usage, %'
              type: DEPENDENT
              key: 'rabbitmq.proc.pmem[{#RABBITMQ.NAME}]'
              value_type: FLOAT
              units: '%'
              description: 'The percentage of real memory used by a process {#RABBITMQ.NAME}.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.pmem
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'rabbitmq.proc.get[{#RABBITMQ.NAME}]'
              tags:
                - tag: component
                  value: memory
            - uuid: 6f13f672d8ce4c9592e0f3f5ec3b0ec4
              name: 'Memory usage (rss)'
              type: DEPENDENT
              key: 'rabbitmq.proc.rss[{#RABBITMQ.NAME}]'
              units: B
              description: 'The summary of resident set size memory used by a process {#RABBITMQ.NAME} expressed in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.rss
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'rabbitmq.proc.get[{#RABBITMQ.NAME}]'
              tags:
                - tag: component
                  value: memory
            - uuid: 4faac75027d14304ab071602df8f2937
              name: 'Memory usage (vsize)'
              type: DEPENDENT
              key: 'rabbitmq.proc.vmem[{#RABBITMQ.NAME}]'
              units: B
              description: 'The summary of virtual memory used by a process {#RABBITMQ.NAME} expressed in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.vsize
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'rabbitmq.proc.get[{#RABBITMQ.NAME}]'
              tags:
                - tag: component
                  value: memory
          trigger_prototypes:
            - uuid: 4f2a88d09b1b49879d80e0794ec19e0e
              expression: 'nodata(/RabbitMQ node by Zabbix agent/web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"],30m)=1 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0'
              name: 'Failed to fetch nodes data'
              event_name: 'Failed to fetch nodes data (or no data for 30m)'
              priority: WARNING
              description: 'Zabbix has not received any data for items for the last 30 minutes.'
              manual_close: 'YES'
              dependencies:
                - name: 'Process is not running'
                  expression: 'last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])=0'
              tags:
                - tag: scope
                  value: availability
            - uuid: 253acf98446e4790975b330d44dd6b96
              expression: 'max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0'
              name: 'Node is not running'
              opdata: 'Current state: {ITEM.LASTVALUE1}'
              priority: AVERAGE
              description: 'RabbitMQ node is not running.'
              dependencies:
                - name: 'Service is down'
                  expression: 'last(/RabbitMQ node by Zabbix agent/net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"])=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0'
              tags:
                - tag: scope
                  value: availability
            - uuid: af5cfb0004e04562a9720b9e1b41fd5b
              expression: 'last(/RabbitMQ node by Zabbix agent/net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"])=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0'
              name: 'Service is down'
              priority: AVERAGE
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: availability
            - uuid: 5cb80a7552d74e44a83d0825f039f89f
              expression: 'min(/RabbitMQ node by Zabbix agent/net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"],5m)>{$RABBITMQ.RESPONSE_TIME.MAX.WARN} and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0'
              name: 'Service response time is too high'
              event_name: 'Service response time is too high (over {$RABBITMQ.RESPONSE_TIME.MAX.WARN}s for 5m)'
              priority: WARNING
              manual_close: 'YES'
              dependencies:
                - name: 'Service is down'
                  expression: 'last(/RabbitMQ node by Zabbix agent/net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"])=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0'
              tags:
                - tag: scope
                  value: performance
          graph_prototypes:
            - uuid: 180a5d36d48f44fbaf6f86c5cf9e10f9
              name: 'RabbitMQ: Memory usage[{#RABBITMQ.NAME}]'
              graph_items:
                - drawtype: BOLD_LINE
                  color: 199C0D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.proc.vmem[{#RABBITMQ.NAME}]'
                - sortorder: '1'
                  drawtype: BOLD_LINE
                  color: F63100
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.proc.rss[{#RABBITMQ.NAME}]'
          master_item:
            key: 'proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary]'
          lld_macro_paths:
            - lld_macro: '{#RABBITMQ.NAME}'
              path: $.name
        - uuid: d1d32fc6ae1f445a98144a31214ca825
          name: 'Queues discovery'
          type: DEPENDENT
          key: rabbitmq.queues.discovery
          filter:
            evaltype: AND
            conditions:
              - macro: '{#NODE}'
                value: '{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}'
              - macro: '{#QUEUE}'
                value: '{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES}'
              - macro: '{#QUEUE}'
                value: '{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES}'
                operator: NOT_MATCHES_REGEX
          description: 'The metrics for an individual queue.'
          item_prototypes:
            - uuid: 158f41423b094efcb90ac273d1e6349c
              name: 'Queue [{#VHOST}][{#QUEUE}]: Get data'
              type: DEPENDENT
              key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              history: '0'
              value_type: TEXT
              description: 'The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].first()'
              master_item:
                key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"]'
              tags:
                - tag: component
                  value: raw
            - uuid: fcbee789f2864010b26ac69894659e77
              name: 'Queue [{#VHOST}][{#QUEUE}]: Consumers'
              type: DEPENDENT
              key: 'rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"]'
              description: 'The number of consumers.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.consumers
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: consumers
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 4b4491d5fb2b41eeae044c3d28de1b18
              name: 'Queue [{#VHOST}][{#QUEUE}]: Memory'
              type: DEPENDENT
              key: 'rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"]'
              units: B
              description: 'The bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.memory
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: memory
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 223fa7a8372f4e9883d376c9f3e1af2e
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The number of messages (per second) delivered to clients and acknowledged.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.ack_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 335513a34e6a4909acfa1be278dd31b3
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"]'
              description: 'The number of messages delivered to clients and acknowledged.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.ack
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 55b774e5aac249edbb8881373060b15b
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The count of messages (per second) delivered to consumers in acknowledgement mode.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.deliver_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 2a87988327e1483c84d3f1867bab367f
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages delivered'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"]'
              description: 'The count of messages delivered to consumers in acknowledgement mode.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.deliver
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 3f3024da744349b59c7810dfd10d11a3
              name: 'Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The rate of delivery per second. The sum of messages delivered (per second) to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to `basic.get`: in acknowledgement mode and in no-acknowledgement mode.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.deliver_get_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: ad5e9fa0260e4170887fb2dfdc508959
              name: 'Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"]'
              description: 'The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the `basic.get`: in acknowledgement mode and in no-acknowledgement mode.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.deliver_get
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 393306b9cb0148038d02ad9c48cf1fbb
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages published per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The rate of published messages per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 44814c9f6f154fdcbab66249d0777eae
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages published'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"]'
              description: 'The count of published messages.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.publish
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 9096e81341374d2fb7dd58e932783afc
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The count of total messages per second in the queue.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.messages_details.rate
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 8902103fd86746d0851b75a1262e36a9
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The rate of messages redelivered per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.redeliver_details.rate
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 3ac1a4b83c9f4d4c8a438d39aca8e82a
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages redelivered'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"]'
              description: 'The count of subset of messages in the `deliver_get` queue with the `redelivered` flag set.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.message_stats.redeliver
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: aabd7d6fe6a047d186504386d3a48ae1
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages total'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"]'
              description: 'The count of total messages in the queue.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.messages
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
              trigger_prototypes:
                - uuid: 58986cee2b4846b3b7bd3caf772d7ac6
                  expression: 'min(/RabbitMQ node by Zabbix agent/rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"],5m)>{$RABBITMQ.MESSAGES.MAX.WARN:"{#QUEUE}"}'
                  name: 'Too many messages in queue [{#VHOST}][{#QUEUE}]'
                  event_name: 'Too many messages in queue [{#VHOST}][{#QUEUE}] (over {$RABBITMQ.MESSAGES.MAX.WARN:"{#QUEUE}"} for 5m)'
                  opdata: 'Current value: {ITEM.LASTVALUE1}'
                  priority: WARNING
                  tags:
                    - tag: scope
                      value: performance
            - uuid: d2e1a2857b314ed3818f92312f5d0043
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages ready per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The number of messages per second ready to be delivered to clients.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.messages_ready_details.rate
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 4a75c2d9e0354f47b1c8243bad17bd58
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages ready'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"]'
              description: 'The number of messages ready to be delivered to clients.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.messages_ready
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: d5d88879e3b844d7b03ab956a673daff
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"]'
              value_type: FLOAT
              description: 'The number of messages per second delivered to clients but not yet acknowledged.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.messages_unacknowledged_details.rate
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
            - uuid: 252dcf1262014ce599a2eec81f7223eb
              name: 'Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged'
              type: DEPENDENT
              key: 'rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"]'
              description: 'The number of messages delivered to clients but not yet acknowledged.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.messages_unacknowledged
              master_item:
                key: 'rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"]'
              tags:
                - tag: component
                  value: messages
                - tag: queue
                  value: '{#QUEUE}'
                - tag: vhost
                  value: '{#VHOST}'
          graph_prototypes:
            - uuid: a6223df79d334c29ada36ba20729b885
              name: 'RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages per second'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '3'
                  color: F7941D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '4'
                  color: FC6EA3
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '5'
                  color: 6C59DC
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '6'
                  color: C7A72D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"]'
                - sortorder: '7'
                  color: BA2A5D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"]'
            - uuid: 03c88aa9d8b94389aafcf607dff1756f
              name: 'RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages status'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"]'
                - sortorder: '3'
                  color: F7941D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"]'
                - sortorder: '4'
                  color: FC6EA3
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"]'
                - sortorder: '5'
                  color: 6C59DC
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"]'
                - sortorder: '6'
                  color: C7A72D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"]'
                - sortorder: '7'
                  color: BA2A5D
                  item:
                    host: 'RabbitMQ node by Zabbix agent'
                    key: 'rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"]'
          master_item:
            key: 'web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"]'
          lld_macro_paths:
            - lld_macro: '{#NODE}'
              path: $.node
            - lld_macro: '{#QUEUE}'
              path: $.name
            - lld_macro: '{#VHOST}'
              path: $.vhost
          preprocessing:
            - type: JAVASCRIPT
              parameters:
                - 'return JSON.stringify(JSON.parse(value),[''node'',''name'',''vhost'']);'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
      tags:
        - tag: class
          value: software
        - tag: target
          value: rabbitmq
      macros:
        - macro: '{$RABBITMQ.API.HOST}'
          value: 127.0.0.1
          description: 'The hostname or IP of the API endpoint for the RabbitMQ.'
        - macro: '{$RABBITMQ.API.PASSWORD}'
          value: zabbix
        - macro: '{$RABBITMQ.API.PORT}'
          value: '15672'
          description: 'The port of the RabbitMQ API endpoint.'
        - macro: '{$RABBITMQ.API.SCHEME}'
          value: http
          description: 'The request scheme, which may be HTTP or HTTPS.'
        - macro: '{$RABBITMQ.API.USER}'
          value: zbx_monitor
        - macro: '{$RABBITMQ.CLUSTER.NAME}'
          value: rabbit
          description: 'The name of the RabbitMQ cluster.'
        - macro: '{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES}'
          value: '.*'
          description: 'This macro is used in the discovery of queues. It can be overridden at host level or its linked template level.'
        - macro: '{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES}'
          value: CHANGE_IF_NEEDED
          description: 'This macro is used in the discovery of queues. It can be overridden at host level or its linked template level.'
        - macro: '{$RABBITMQ.MESSAGES.MAX.WARN}'
          value: '1000'
          description: 'The maximum number of messages in the queue for a trigger expression.'
        - macro: '{$RABBITMQ.PROCESS.NAME.PARAMETER}'
          description: 'The process name of the RabbitMQ server used in the item key `proc.get`. It could be specified if the correct process name is known.'
        - macro: '{$RABBITMQ.PROCESS_NAME}'
          value: beam.smp
          description: 'The process name filter for the RabbitMQ process discovery.'
        - macro: '{$RABBITMQ.RESPONSE_TIME.MAX.WARN}'
          value: '10'
          description: 'The maximum response time by the RabbitMQ expressed in seconds for a trigger expression.'
      dashboards:
        - uuid: ce0af043ed2c4e7c988674c9ecb787d6
          name: 'RabbitMQ node status'
          pages:
            - widgets:
                - type: graph
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ node by Zabbix agent'
                        name: 'RabbitMQ: Node status'
                    - type: STRING
                      name: reference
                      value: AAAAA
                - type: graph
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ node by Zabbix agent'
                        name: 'RabbitMQ: Disk free'
                    - type: STRING
                      name: reference
                      value: AAAAC
                - type: graph
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ node by Zabbix agent'
                        name: 'RabbitMQ: File descriptors'
                    - type: STRING
                      name: reference
                      value: AAAAE
                - type: graph
                  x: '36'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ node by Zabbix agent'
                        name: 'RabbitMQ: Uptime'
                    - type: STRING
                      name: reference
                      value: AAAAB
                - type: graph
                  x: '36'
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ node by Zabbix agent'
                        name: 'RabbitMQ: Memory used'
                    - type: STRING
                      name: reference
                      value: AAAAD
                - type: graph
                  x: '36'
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'RabbitMQ node by Zabbix agent'
                        name: 'RabbitMQ: Sockets'
                    - type: STRING
                      name: reference
                      value: AAAAF
      valuemaps:
        - uuid: ce579def20ac488dbce1ff69baaa8c50
          name: 'Alarm state'
          mappings:
            - value: '0'
              newvalue: Ok
            - value: '1'
              newvalue: Alarm
        - uuid: 08ee896f31a1457a8e9b4f6f251700d4
          name: 'RabbitMQ healthcheck'
          mappings:
            - value: '0'
              newvalue: Failed
            - value: '1'
              newvalue: Ok
            - value: '2'
              newvalue: Error
        - uuid: c369d410303349b4973431b6ff8dcb85
          name: 'Service state'
          mappings:
            - value: '0'
              newvalue: Down
            - value: '1'
              newvalue: Up
  graphs:
    - uuid: 2dbd4f9285a34786a210c6e16d87ed85
      name: 'RabbitMQ: Connections'
      graph_items:
        - color: 199C0D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.object_totals.connections
        - sortorder: '1'
          color: F63100
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.object_totals.channels
        - sortorder: '2'
          color: 00611C
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.object_totals.consumers
    - uuid: 72472749150041d59a52ce5abb3dc03e
      name: 'RabbitMQ: Disk free'
      graph_items:
        - drawtype: GRADIENT_LINE
          color: 199C0D
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.disk_free
        - sortorder: '1'
          drawtype: BOLD_LINE
          color: FF0000
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.disk_free_limit
    - uuid: 132133fc0fd04002a5a50fc0d5169e6a
      name: 'RabbitMQ: File descriptors'
      graph_items:
        - color: 199C0D
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.fd_used
    - uuid: a5949ccf83434f1fb26cfe0a3671085e
      name: 'RabbitMQ: Memory used'
      graph_items:
        - drawtype: GRADIENT_LINE
          color: 199C0D
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.mem_used
        - sortorder: '1'
          drawtype: BOLD_LINE
          color: FF0000
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.mem_limit
    - uuid: dca08567e6ce4dcbb60f72a431de5ddf
      name: 'RabbitMQ: Messages'
      graph_items:
        - color: 199C0D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.queue_totals.messages
        - sortorder: '1'
          color: F63100
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.queue_totals.messages.ready
        - sortorder: '2'
          color: 00611C
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.queue_totals.messages.unacknowledged
    - uuid: ad303b1816a84248a347ef4773bf2c44
      name: 'RabbitMQ: Messages per second'
      graph_items:
        - color: 199C0D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.publish.rate
        - sortorder: '1'
          color: F63100
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.ack.rate
        - sortorder: '2'
          color: 00611C
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.confirm.rate
        - sortorder: '3'
          color: F7941D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.deliver_get.rate
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.publish_in.rate
        - sortorder: '5'
          color: 6C59DC
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.publish_out.rate
        - sortorder: '6'
          color: C7A72D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.redeliver.rate
        - sortorder: '7'
          color: BA2A5D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.return_unroutable.rate
    - uuid: 94fa39136a0d42b2997dd3b9a7581621
      name: 'RabbitMQ: Messages status'
      graph_items:
        - color: 199C0D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.publish
        - sortorder: '1'
          color: F63100
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.ack
        - sortorder: '2'
          color: 00611C
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.confirm
        - sortorder: '3'
          color: F7941D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.deliver_get
        - sortorder: '4'
          color: FC6EA3
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.publish_in
        - sortorder: '5'
          color: 6C59DC
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.publish_out
        - sortorder: '6'
          color: C7A72D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.redeliver
        - sortorder: '7'
          color: BA2A5D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.messages.return_unroutable
    - uuid: 358fb67c294d4486a79797818ebde851
      name: 'RabbitMQ: Node status'
      graph_items:
        - drawtype: BOLD_LINE
          color: 199C0D
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.running
    - uuid: 3205b991eb5443e680b571b23b4a1721
      name: 'RabbitMQ: Queues'
      graph_items:
        - drawtype: GRADIENT_LINE
          color: 199C0D
          item:
            host: 'RabbitMQ cluster by Zabbix agent'
            key: rabbitmq.overview.object_totals.queues
    - uuid: 7e5fec850547465091a38f78268a207f
      name: 'RabbitMQ: Sockets'
      graph_items:
        - drawtype: GRADIENT_LINE
          color: 199C0D
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.sockets_used
        - sortorder: '1'
          color: F63100
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.sockets_total
    - uuid: bf2b0b66f4d94549aae9cbe04dfe9bd2
      name: 'RabbitMQ: Uptime'
      graph_items:
        - color: 199C0D
          item:
            host: 'RabbitMQ node by Zabbix agent'
            key: rabbitmq.node.uptime
