RabbitMQ

RabbitMQ is an open-source message-broker software that originally implemented the Advanced Message Queuing Protocol and has since been extended with a plug-in architecture to support Streaming Text Oriented Messaging Protocol, Message Queuing Telemetry Transport, and other protocols.

Available solutions




This template is for Zabbix version: 6.2
Also available for: 6.0 5.4 5.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/6.2

RabbitMQ cluster by Zabbix agent

Overview

For Zabbix version: 6.2 and higher
The template to monitor RabbitMQ by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.

Template RabbitMQ Cluster — collects metrics by polling RabbitMQ management plugin with Zabbix agent.

This template was tested on:

  • RabbitMQ, version 3.5.7, 3.7.17, 3.7.18, 3.7.7, 3.8.5, 3.8.12

Setup

See Zabbix template operation for basic instructions.

Enable the RabbitMQ management plugin. See RabbitMQ's documentation to enable it.

Create a user to monitor the service:

rabbitmqctl add_user zbx_monitor <PASSWORD>
rabbitmqctl set_permissions  -p / zbx_monitor "" "" ".*"
rabbitmqctl set_user_tags zbx_monitor monitoring

Login and password are also set in macros:

  • {$RABBITMQ.API.USER}
  • {$RABBITMQ.API.PASSWORD}

If your cluster consists of several nodes, it is recommended to assign the cluster template to a separate balancing host. In the case of a single-node installation, you can assign the cluster template to one host with a node template.

If you use another API endpoint, then don't forget to change {$RABBITMQ.API.CLUSTER_HOST} macro.

Install and setup Zabbix agent.

Zabbix configuration

No specific Zabbix configuration is required.

Macros used

Name Description Default
{$RABBITMQ.API.CLUSTER_HOST}

The hostname or IP of RabbitMQ cluster API endpoint

127.0.0.1
{$RABBITMQ.API.PASSWORD}

-

zabbix
{$RABBITMQ.API.PORT}

The port of RabbitMQ API endpoint

15672
{$RABBITMQ.API.SCHEME}

Request scheme which may be http or https

http
{$RABBITMQ.API.USER}

-

zbx_monitor
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES}

Filter of discoverable exchanges

.*
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES}

Filter to exclude discovered exchanges

CHANGE_IF_NEEDED

Template links

There are no template links in this template.

Discovery rules

Name Description Type Key and additional info
Exchanges discovery

Individual exchange metrics

DEPENDENT rabbitmq.exchanges.discovery

Filter:

AND

- {#EXCHANGE} MATCHES_REGEX {$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES}

- {#EXCHANGE} NOT_MATCHES_REGEX {$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES}

Health Check 3.8.10+ discovery

Version 3.8.10+ specific metrics

DEPENDENT rabbitmq.healthcheck.v3810.discovery

Preprocessing:

- JSONPATH: $.management_version

- JAVASCRIPT: The text is too long. Please see the template.

Items collected

Group Name Description Type Key and additional info
RabbitMQ RabbitMQ: Connections total

Total number of connections

DEPENDENT rabbitmq.overview.object_totals.connections

Preprocessing:

- JSONPATH: $.object_totals.connections

RabbitMQ RabbitMQ: Channels total

Total number of channels

DEPENDENT rabbitmq.overview.object_totals.channels

Preprocessing:

- JSONPATH: $.object_totals.channels

RabbitMQ RabbitMQ: Queues total

Total number of queues

DEPENDENT rabbitmq.overview.object_totals.queues

Preprocessing:

- JSONPATH: $.object_totals.queues

RabbitMQ RabbitMQ: Consumers total

Total number of consumers

DEPENDENT rabbitmq.overview.object_totals.consumers

Preprocessing:

- JSONPATH: $.object_totals.consumers

RabbitMQ RabbitMQ: Exchanges total

Total number of exchanges

DEPENDENT rabbitmq.overview.object_totals.exchanges

Preprocessing:

- JSONPATH: $.object_totals.exchanges

RabbitMQ RabbitMQ: Messages total

Total number of messages (ready plus unacknowledged)

DEPENDENT rabbitmq.overview.queue_totals.messages

Preprocessing:

- JSONPATH: $.queue_totals.messages

RabbitMQ RabbitMQ: Messages ready for delivery

Number of messages ready for deliver

DEPENDENT rabbitmq.overview.queue_totals.messages.ready

Preprocessing:

- JSONPATH: $.queue_totals.messages_ready

RabbitMQ RabbitMQ: Messages unacknowledged

Number of unacknowledged messages

DEPENDENT rabbitmq.overview.queue_totals.messages.unacknowledged

Preprocessing:

- JSONPATH: $.queue_totals.messages_unacknowledged

RabbitMQ RabbitMQ: Messages acknowledged

Number of messages delivered to clients and acknowledged

DEPENDENT rabbitmq.overview.messages.ack

Preprocessing:

- JSONPATH: $.message_stats.ack

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages acknowledged per second

Rate of messages delivered to clients and acknowledged per second

DEPENDENT rabbitmq.overview.messages.ack.rate

Preprocessing:

- JSONPATH: $.message_stats.ack_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages confirmed

Count of messages confirmed

DEPENDENT rabbitmq.overview.messages.confirm

Preprocessing:

- JSONPATH: $.message_stats.confirm

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages confirmed per second

Rate of messages confirmed per second

DEPENDENT rabbitmq.overview.messages.confirm.rate

Preprocessing:

- JSONPATH: $.message_stats.confirm_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages delivered

Sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get

DEPENDENT rabbitmq.overview.messages.deliver_get

Preprocessing:

- JSONPATH: $.message_stats.deliver_get

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages delivered per second

Rate per second of the sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get

DEPENDENT rabbitmq.overview.messages.deliver_get.rate

Preprocessing:

- JSONPATH: $.message_stats.deliver_get_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages published

Count of messages published

DEPENDENT rabbitmq.overview.messages.publish

Preprocessing:

- JSONPATH: $.message_stats.publish

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages published per second

Rate of messages published per second

DEPENDENT rabbitmq.overview.messages.publish.rate

Preprocessing:

- JSONPATH: $.message_stats.publish_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages publish_in

Count of messages published from channels into this overview

DEPENDENT rabbitmq.overview.messages.publish_in

Preprocessing:

- JSONPATH: $.message_stats.publish_in

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages publish_in per second

Rate of messages published from channels into this overview per sec

DEPENDENT rabbitmq.overview.messages.publish_in.rate

Preprocessing:

- JSONPATH: $.message_stats.publish_in_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages publish_out

Count of messages published from this overview into queues

DEPENDENT rabbitmq.overview.messages.publish_out

Preprocessing:

- JSONPATH: $.message_stats.publish_out

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages publish_out per second

Rate of messages published from this overview into queues per second,0,rabbitmq,total msgs pub out rate

DEPENDENT rabbitmq.overview.messages.publish_out.rate

Preprocessing:

- JSONPATH: $.message_stats.publish_out_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages returned unroutable

Count of messages returned to publisher as unroutable

DEPENDENT rabbitmq.overview.messages.return_unroutable

Preprocessing:

- JSONPATH: $.message_stats.return_unroutable

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages returned unroutable per second

Rate of messages returned to publisher as unroutable per second

DEPENDENT rabbitmq.overview.messages.return_unroutable.rate

Preprocessing:

- JSONPATH: $.message_stats.return_unroutable_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages returned redeliver

Count of subset of messages in deliver_get which had the redelivered flag set

DEPENDENT rabbitmq.overview.messages.redeliver

Preprocessing:

- JSONPATH: $.message_stats.redeliver

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Messages returned redeliver per second

Rate of subset of messages in deliver_get which had the redelivered flag set per second

DEPENDENT rabbitmq.overview.messages.redeliver.rate

Preprocessing:

- JSONPATH: $.message_stats.redeliver_details.rate

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON}

Responds a 200 OK if there are no alarms in effect in the cluster, otherwise responds with a 503 Service Unavailable.

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"]

Preprocessing:

- REGEX: HTTP\/1\.1\b\s(\d+) \1

- JAVASCRIPT: switch(value){ case '200': return 1 case '503': return 0 default: 2}

- DISCARD_UNCHANGED_HEARTBEAT: 3h

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged

Number of messages delivered to clients and acknowledged

DEPENDENT rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.ack.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second

Rate of messages delivered to clients and acknowledged per second

DEPENDENT rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.ack_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed

Count of messages confirmed

DEPENDENT rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.confirm.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second

Rate of messages confirmed per second

DEPENDENT rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.confirm_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered

Sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get

DEPENDENT rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.deliver_get.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second

Rate per second of the sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get

DEPENDENT rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.deliver_get_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published

Count of messages published

DEPENDENT rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.publish.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second

Rate of messages published per second

DEPENDENT rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.publish_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in

Count of messages published from channels into this overview

DEPENDENT rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.publish_in.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second

Rate of messages published from channels into this overview per sec

DEPENDENT rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.publish_in_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out

Count of messages published from this overview into queues

DEPENDENT rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.publish_out.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second

Rate of messages published from this overview into queues per second,0,rabbitmq,total msgs pub out rate

DEPENDENT rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.publish_out_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable

Count of messages returned to publisher as unroutable

DEPENDENT rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.return_unroutable.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second

Rate of messages returned to publisher as unroutable per second

DEPENDENT rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.return_unroutable_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered

Count of subset of messages in deliver_get which had the redelivered flag set

DEPENDENT rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.redeliver.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second

Rate of subset of messages in deliver_get which had the redelivered flag set per second

DEPENDENT rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#EXCHANGE}" && @.vhost == "{#VHOST}" && @.type =="{#TYPE}")].message_stats.redeliver_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

Zabbix raw items RabbitMQ: Get overview

The HTTP API endpoint that returns cluster-wide metrics

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"]

Preprocessing:

- REGEX: \n\s?\n(.*) \1

Zabbix raw items RabbitMQ: Get exchanges

The HTTP API endpoint that returns exchanges metrics

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"]

Preprocessing:

- REGEX: \n\s?\n(.*) \1

Triggers

Name Description Expression Severity Dependencies and additional info
RabbitMQ: There are active alarms in the cluster

http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html

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 AVERAGE
RabbitMQ: Failed to fetch overview data

Zabbix has not received data for items for the last 30 minutes

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 WARNING

Manual close: YES

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template or ask for help with it at ZABBIX forums.

RabbitMQ node by Zabbix agent

Overview

For Zabbix version: 6.2 and higher
The template to monitor RabbitMQ by Zabbix that work without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.

Template RabbitMQ Node — (Zabbix version >= 4.2) collects metrics by polling RabbitMQ management plugin with Zabbix agent.

It also uses Zabbix agent to collect RabbitMQ Linux process stats like CPU usage, memory usage and whether process is running or not.

This template was tested on:

  • RabbitMQ, version 3.5.7, 3.7.17, 3.7.18, 3.7.7, 3.8.5, 3.8.12

Setup

Enable the RabbitMQ management plugin. See RabbitMQ's documentation to enable it.

Create a user to monitor the service:

rabbitmqctl add_user zbx_monitor <PASSWORD>
rabbitmqctl set_permissions  -p / zbx_monitor "" "" ".*"
rabbitmqctl set_user_tags zbx_monitor monitoring

Login and password are also set in macros:

  • {$RABBITMQ.API.USER}
  • {$RABBITMQ.API.PASSWORD}

If you use another API endpoint, then don't forget to change {$RABBITMQ.API.HOST} macro. Install and setup Zabbix agent.

Zabbix configuration

No specific Zabbix configuration is required.

Macros used

Name Description Default
{$RABBITMQ.API.HOST}

The hostname or IP of RabbitMQ API endpoint

127.0.0.1
{$RABBITMQ.API.PASSWORD}

-

zabbix
{$RABBITMQ.API.PORT}

The port of RabbitMQ API endpoint

15672
{$RABBITMQ.API.SCHEME}

Request scheme which may be http or https

http
{$RABBITMQ.API.USER}

-

zbx_monitor
{$RABBITMQ.CLUSTER.NAME}

The name of RabbitMQ cluster

rabbit
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES}

Filter of discoverable queues

.*
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES}

Filter to exclude discovered queues

CHANGE_IF_NEEDED
{$RABBITMQ.MESSAGES.MAX.WARN}

Maximum number of messages in the queue for trigger expression

1000
{$RABBITMQ.PROCESS_NAME}

RabbitMQ server process name

beam.smp
{$RABBITMQ.RESPONSE_TIME.MAX.WARN}

Maximum RabbitMQ response time in seconds for trigger expression

10

Template links

There are no template links in this template.

Discovery rules

Name Description Type Key and additional info
Health Check 3.8.10+ discovery

Version 3.8.10+ specific metrics

DEPENDENT rabbitmq.healthcheck.v3810.discovery

Preprocessing:

- JSONPATH: $.management_version

- JAVASCRIPT: The text is too long. Please see the template.

Health Check 3.8.9- discovery

Specific metrics up to and including version 3.8.4

DEPENDENT rabbitmq.healthcheck.v389.discovery

Preprocessing:

- JSONPATH: $.management_version

- JAVASCRIPT: The text is too long. Please see the template.

Queues discovery

Individual queue metrics

DEPENDENT rabbitmq.queues.discovery

Filter:

AND

- {#QUEUE} MATCHES_REGEX {$RABBITMQ.LLD.FILTER.QUEUE.MATCHES}

- {#QUEUE} NOT_MATCHES_REGEX {$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES}

- {#NODE} MATCHES_REGEX {$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}

Items collected

Group Name Description Type Key and additional info
RabbitMQ RabbitMQ: Management plugin version

Version of the management plugin in use

DEPENDENT rabbitmq.node.overview.management_version

Preprocessing:

- JSONPATH: $.management_version

- DISCARD_UNCHANGED_HEARTBEAT: 1d

RabbitMQ RabbitMQ: RabbitMQ version

Version of RabbitMQ on the node which processed this request

DEPENDENT rabbitmq.node.overview.rabbitmq_version

Preprocessing:

- JSONPATH: $.rabbitmq_version

- DISCARD_UNCHANGED_HEARTBEAT: 1d

RabbitMQ RabbitMQ: Used file descriptors

Used file descriptors

DEPENDENT rabbitmq.node.fd_used

Preprocessing:

- JSONPATH: $.fd_used

RabbitMQ RabbitMQ: Free disk space

Current free disk space

DEPENDENT rabbitmq.node.disk_free

Preprocessing:

- JSONPATH: $.disk_free

RabbitMQ RabbitMQ: Memory used

Memory used in bytes

DEPENDENT rabbitmq.node.mem_used

Preprocessing:

- JSONPATH: $.mem_used

RabbitMQ RabbitMQ: Memory limit

Memory usage high watermark in bytes

DEPENDENT rabbitmq.node.mem_limit

Preprocessing:

- JSONPATH: $.mem_limit

RabbitMQ RabbitMQ: Disk free limit

Disk free space limit in bytes

DEPENDENT rabbitmq.node.disk_free_limit

Preprocessing:

- JSONPATH: $.disk_free_limit

RabbitMQ RabbitMQ: Runtime run queue

Average number of Erlang processes waiting to run

DEPENDENT rabbitmq.node.run_queue

Preprocessing:

- JSONPATH: $.run_queue

RabbitMQ RabbitMQ: Sockets used

Number of file descriptors used as sockets

DEPENDENT rabbitmq.node.sockets_used

Preprocessing:

- JSONPATH: $.sockets_used

RabbitMQ RabbitMQ: Sockets available

File descriptors available for use as sockets

DEPENDENT rabbitmq.node.sockets_total

Preprocessing:

- JSONPATH: $.sockets_total

RabbitMQ RabbitMQ: Number of network partitions

Number of network partitions this node is seeing

DEPENDENT rabbitmq.node.partitions

Preprocessing:

- JSONPATH: $.partitions

- JAVASCRIPT: return JSON.parse(value).length;

RabbitMQ RabbitMQ: Is running

Is the node running or not

DEPENDENT rabbitmq.node.running

Preprocessing:

- JSONPATH: $.running

- BOOL_TO_DECIMAL

RabbitMQ RabbitMQ: Memory alarm

Does the host has memory alarm

DEPENDENT rabbitmq.node.mem_alarm

Preprocessing:

- JSONPATH: $.mem_alarm

- BOOL_TO_DECIMAL

RabbitMQ RabbitMQ: Disk free alarm

Does the node have disk alarm

DEPENDENT rabbitmq.node.disk_free_alarm

Preprocessing:

- JSONPATH: $.disk_free_alarm

- BOOL_TO_DECIMAL

RabbitMQ RabbitMQ: Uptime

Uptime in milliseconds

DEPENDENT rabbitmq.node.uptime

Preprocessing:

- JSONPATH: $.uptime

- MULTIPLIER: 0.001

RabbitMQ RabbitMQ: Number of processes running

-

ZABBIX_PASSIVE proc.num["{$RABBITMQ.PROCESS_NAME}"]
RabbitMQ RabbitMQ: Memory usage (rss)

Resident set size memory used by process in bytes.

ZABBIX_PASSIVE proc.mem["{$RABBITMQ.PROCESS_NAME}",,,,rss]
RabbitMQ RabbitMQ: Memory usage (vsize)

Virtual memory size used by process in bytes.

ZABBIX_PASSIVE proc.mem["{$RABBITMQ.PROCESS_NAME}",,,,vsize]
RabbitMQ RabbitMQ: CPU utilization

Process CPU utilization percentage.

ZABBIX_PASSIVE proc.cpu.util["{$RABBITMQ.PROCESS_NAME}"]
RabbitMQ RabbitMQ: Service ping

-

ZABBIX_PASSIVE net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"]

Preprocessing:

- DISCARD_UNCHANGED_HEARTBEAT: 10m

RabbitMQ RabbitMQ: Service response time

-

ZABBIX_PASSIVE net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"]
RabbitMQ RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON}

Responds a 200 OK if there are no local alarms in effect on the target node, otherwise responds with a 503 Service Unavailable.

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"]

Preprocessing:

- REGEX: HTTP\/1\.1\b\s(\d+) \1

- JAVASCRIPT: switch(value){ case '200': return 1 case '503': return 0 default: 2}

- DISCARD_UNCHANGED_HEARTBEAT: 3h

RabbitMQ RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON}

Checks the expiration date on the certificates for every listener configured to use TLS. Responds a 200 OK if all certificates are valid (have not expired), otherwise responds with a 503 Service Unavailable.

ZABBIX_PASSIVE 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}"]

Preprocessing:

- REGEX: HTTP\/1\.1\b\s(\d+) \1

- JAVASCRIPT: switch(value){ case '200': return 1 case '503': return 0 default: 2}

- DISCARD_UNCHANGED_HEARTBEAT: 3h

RabbitMQ RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON}

Responds a 200 OK if all virtual hosts and running on the target node, otherwise responds with a 503 Service Unavailable.

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"]

Preprocessing:

- REGEX: HTTP\/1\.1\b\s(\d+) \1

- JAVASCRIPT: switch(value){ case '200': return 1 case '503': return 0 default: 2}

- DISCARD_UNCHANGED_HEARTBEAT: 3h

RabbitMQ RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON}

Checks if there are classic mirrored queues without synchronized mirrors online (queues that would potentially lose data if the target node is shut down). Responds a 200 OK if there are no such classic mirrored queues, otherwise responds with a 503 Service Unavailable.

ZABBIX_PASSIVE 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}"]

Preprocessing:

- REGEX: HTTP\/1\.1\b\s(\d+) \1

- JAVASCRIPT: switch(value){ case '200': return 1 case '503': return 0 default: 2}

- DISCARD_UNCHANGED_HEARTBEAT: 3h

RabbitMQ RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON}

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). Responds a 200 OK if there are no such quorum queues, otherwise responds with a 503 Service Unavailable.

ZABBIX_PASSIVE 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}"]

Preprocessing:

- REGEX: HTTP\/1\.1\b\s(\d+) \1

- JAVASCRIPT: switch(value){ case '200': return 1 case '503': return 0 default: 2}

- DISCARD_UNCHANGED_HEARTBEAT: 3h

RabbitMQ RabbitMQ: Healthcheck{#SINGLETON}

Runs basic healthchecks in the current node. Checks that the rabbit application is running, channels and queues can be listed successfully, and that no alarms are in effect.

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"]

Preprocessing:

- REGEX: \n\s?\n(.*) \1

- JSONPATH: $.status

- BOOL_TO_DECIMAL

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages

Count of the total messages in the queue

DEPENDENT rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].messages.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages per second

Count per second of the total messages in the queue

DEPENDENT rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].messages_details.rate.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Consumers

Number of consumers

DEPENDENT rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].consumers.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Memory

Bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures

DEPENDENT rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].memory.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages ready

Number of messages ready to be delivered to clients

DEPENDENT rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].messages_ready.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages ready per second

Number per second of messages ready to be delivered to clients

DEPENDENT rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].messages_ready_details.rate.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged

Number of messages delivered to clients but not yet acknowledged

DEPENDENT rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].messages_unacknowledged.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second

Number per second of messages delivered to clients but not yet acknowledged

DEPENDENT rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].messages_unacknowledged_details.rate.first()

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged

Number of messages delivered to clients and acknowledged

DEPENDENT rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.ack.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second

Number per second of messages delivered to clients and acknowledged

DEPENDENT rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.ack_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered

Count of messages delivered in acknowledgement mode to consumers

DEPENDENT rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.deliver.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second

Count of messages delivered in acknowledgement mode to consumers

DEPENDENT rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.deliver_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered

Sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get

DEPENDENT rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.deliver_get.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second

Rate per second of the sum of messages delivered in acknowledgement mode to consumers, in no-acknowledgement mode to consumers, in acknowledgement mode in response to basic.get, and in no-acknowledgement mode in response to basic.get

DEPENDENT rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.deliver_get_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published

Count of messages published

DEPENDENT rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.publish.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published per second

Rate per second of messages published

DEPENDENT rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.publish_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered

Count of subset of messages in deliver_get which had the redelivered flag set

DEPENDENT rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.redeliver.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

RabbitMQ RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second

Rate per second of subset of messages in deliver_get which had the redelivered flag set

DEPENDENT rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"]

Preprocessing:

- JSONPATH: $[?(@.name == "{#QUEUE}" && @.vhost == "{#VHOST}")].message_stats.redeliver_details.rate.first()

⛔️ON_FAIL: CUSTOM_VALUE -> 0

Zabbix raw items RabbitMQ: Get node overview

The HTTP API endpoint that returns cluster-wide metrics

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"]

Preprocessing:

- REGEX: \n\s?\n(.*) \1

Zabbix raw items RabbitMQ: Get nodes

The HTTP API endpoint that returns nodes metrics

ZABBIX_PASSIVE 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"]

Preprocessing:

- REGEX: \n\s?\n(.*) \1

Zabbix raw items RabbitMQ: Get queues

The HTTP API endpoint that returns queues metrics

ZABBIX_PASSIVE web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"]

Preprocessing:

- REGEX: \n\s?\n(.*) \1

Triggers

Name Description Expression Severity Dependencies and additional info
RabbitMQ: Version has changed

RabbitMQ version has changed. Ack to close.

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 INFO

Manual close: YES

RabbitMQ: Number of network partitions is too high

https://www.rabbitmq.com/partitions.html#detecting

min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0 WARNING
RabbitMQ: Node is not running

RabbitMQ node is not running

max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 AVERAGE

Depends on:

- RabbitMQ: Process is not running

- RabbitMQ: Service is down

RabbitMQ: Memory alarm

https://www.rabbitmq.com/memory.html

last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 AVERAGE
RabbitMQ: Free disk space alarm

https://www.rabbitmq.com/disk-alarms.html

last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 AVERAGE
RabbitMQ: has been restarted

Uptime is less than 10 minutes.

last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m INFO

Manual close: YES

RabbitMQ: Process is not running

-

last(/RabbitMQ node by Zabbix agent/proc.num["{$RABBITMQ.PROCESS_NAME}"])=0 HIGH
RabbitMQ: Service is down

-

last(/RabbitMQ node by Zabbix agent/net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"])=0 AVERAGE

Manual close: YES

Depends on:

- RabbitMQ: Process is not running

RabbitMQ: Service response time is too high

-

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} WARNING

Manual close: YES

Depends on:

- RabbitMQ: Process is not running

- RabbitMQ: Service is down

RabbitMQ: There are active alarms in the node

http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html

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 AVERAGE
RabbitMQ: There are valid TLS certificates expiring in the next month

http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html

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 AVERAGE
RabbitMQ: There are not running virtual hosts

http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html

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 AVERAGE
RabbitMQ: There are queues that could potentially lose data if this node goes offline.

http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html

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 AVERAGE
RabbitMQ: There are queues that would lose their quorum and availability if this node is shut down.

http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html

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 AVERAGE
RabbitMQ: Node healthcheck failed

https://www.rabbitmq.com/monitoring.html#health-checks

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 AVERAGE
RabbitMQ: Too many messages in queue [{#VHOST}][{#QUEUE}]

-

min(/RabbitMQ node by Zabbix agent/rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"],5m)>{$RABBITMQ.MESSAGES.MAX.WARN:"{#QUEUE}"} WARNING
RabbitMQ: Failed to fetch nodes data

Zabbix has not received data for items for the last 30 minutes.

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 WARNING

Manual close: YES

Depends on:

- RabbitMQ: Process is not running

- RabbitMQ: Service is down

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template or ask for help with it at ZABBIX forums.

Articles and documentation

+ Propose new article

Sie können die Integration nicht finden, die Sie benötigen?