Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent
Template App RabbitMQ cluster by Zabbix agent
Overview
For Zabbix version: 4.4
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 App 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
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 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.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- A: {#EXCHANGE} MATCHES_REGEX - B: {#EXCHANGE} NOT_MATCHES_REGEX |
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: |
RabbitMQ | RabbitMQ: Channels total | Total number of channels |
DEPENDENT | rabbitmq.overview.object_totals.channels Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queues total | Total number of queues |
DEPENDENT | rabbitmq.overview.object_totals.queues Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Consumers total | Total number of consumers |
DEPENDENT | rabbitmq.overview.object_totals.consumers Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Exchanges total | Total number of exchanges |
DEPENDENT | rabbitmq.overview.object_totals.exchanges Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Messages total | Total number of messages (ready plus unacknowledged) |
DEPENDENT | rabbitmq.overview.queue_totals.messages Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Messages ready for delivery | Number of messages ready for deliver |
DEPENDENT | rabbitmq.overview.queue_totals.messages.ready Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Messages unacknowledged | Number of unacknowledged messages |
DEPENDENT | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Messages acknowledged | Number of messages delivered to clients and acknowledged |
DEPENDENT | rabbitmq.overview.messages.ack Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages acknowledged per second | Rate of messages delivered to clients and acknowledged per second |
DEPENDENT | rabbitmq.overview.messages.ack.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages confirmed | Count of messages confirmed |
DEPENDENT | rabbitmq.overview.messages.confirm Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages confirmed per second | Rate of messages confirmed per second |
DEPENDENT | rabbitmq.overview.messages.confirm.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages published | Count of messages published |
DEPENDENT | rabbitmq.overview.messages.publish Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages published per second | Rate of messages published per second |
DEPENDENT | rabbitmq.overview.messages.publish.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages publish_in | Count of messages published from channels into this overview |
DEPENDENT | rabbitmq.overview.messages.publish_in Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages publish_out | Count of messages published from this overview into queues |
DEPENDENT | rabbitmq.overview.messages.publish_out Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages returned unroutable | Count of messages returned to publisher as unroutable |
DEPENDENT | rabbitmq.overview.messages.return_unroutable Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages confirmed | Count of messages confirmed |
DEPENDENT | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages published | Count of messages published |
DEPENDENT | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
Zabbix_raw_items | RabbitMQ: Get overview | The HTTP API endpoint that returns cluster-wide metrics |
ZABBIX_PASSIVE | web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing: - REGEX: |
Zabbix_raw_items | RabbitMQ: Get exchanges | The HTTP API endpoint that returns exchanges metrics |
ZABBIX_PASSIVE | web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing: - REGEX: |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Failed to fetch overview data (or no data for 30m) | Zabbix has not received data for items for the last 30 minutes |
{TEMPLATE_NAME:web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"].nodata(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.
Template App RabbitMQ node by Zabbix agent
Overview
For Zabbix version: 4.4
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 App 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
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.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 |
---|---|---|---|
Queues discovery | Individual queue metrics |
DEPENDENT | rabbitmq.queues.discovery Filter: AND- A: {#QUEUE} MATCHES_REGEX - B: {#QUEUE} NOT_MATCHES_REGEX - C: {#NODE} MATCHES_REGEX |
Items collected
Group | Name | Description | Type | Key and additional info |
---|---|---|---|---|
RabbitMQ | RabbitMQ: Healthcheck | 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["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node"] Preprocessing: - REGEX: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Management plugin version | Version of the management plugin in use |
DEPENDENT | rabbitmq.node.overview.management_version Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: RabbitMQ version | Version of RabbitMQ on the node which processed this request |
DEPENDENT | rabbitmq.node.overview.rabbitmq_version Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Used file descriptors | Used file descriptors |
DEPENDENT | rabbitmq.node.fd_used Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Free disk space | Current free disk space |
DEPENDENT | rabbitmq.node.disk_free Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Memory used | Memory used in bytes |
DEPENDENT | rabbitmq.node.mem_used Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Memory limit | Memory usage high watermark in bytes |
DEPENDENT | rabbitmq.node.mem_limit Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Disk free limit | Disk free space limit in bytes |
DEPENDENT | rabbitmq.node.disk_free_limit Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Runtime run queue | Average number of Erlang processes waiting to run |
DEPENDENT | rabbitmq.node.run_queue Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Sockets used | Number of file descriptors used as sockets |
DEPENDENT | rabbitmq.node.sockets_used Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Sockets available | File descriptors available for use as sockets |
DEPENDENT | rabbitmq.node.sockets_total Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Number of network partitions | Number of network partitions this node is seeing |
DEPENDENT | rabbitmq.node.partitions Preprocessing: - JSONPATH: - JAVASCRIPT: |
RabbitMQ | RabbitMQ: Is running | Is the node running or not |
DEPENDENT | rabbitmq.node.running Preprocessing: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Memory alarm | Does the host has memory alarm |
DEPENDENT | rabbitmq.node.mem_alarm Preprocessing: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Disk free alarm | Does the node have disk alarm |
DEPENDENT | rabbitmq.node.disk_free_alarm Preprocessing: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Uptime | Uptime in milliseconds |
DEPENDENT | rabbitmq.node.uptime Preprocessing: - JSONPATH: - MULTIPLIER: |
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[http,"{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Service response time | - |
ZABBIX_PASSIVE | net.tcp.service.perf[http,"{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
RabbitMQ | RabbitMQ: Queue {#VHOST}/{#QUEUE}: Messages | Count of the total messages in the queue |
DEPENDENT | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
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: |
RabbitMQ | RabbitMQ: Queue {#VHOST}/{#QUEUE}: Consumers | Number of consumers |
DEPENDENT | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
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: |
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: |
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: |
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: |
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: |
RabbitMQ | RabbitMQ: Queue {#VHOST}/{#QUEUE}: Messages acknowledged | Number of messages delivered to clients and acknowledged |
DEPENDENT | rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue {#VHOST}/{#QUEUE}: 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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue {#VHOST}/{#QUEUE}: 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: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue {#VHOST}/{#QUEUE}: Messages published | Count of messages published |
DEPENDENT | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
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: ⛔️ON_FAIL: |
Zabbix_raw_items | RabbitMQ: Get node overview | The HTTP API endpoint that returns cluster-wide metrics |
ZABBIX_PASSIVE | web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing: - REGEX: |
Zabbix_raw_items | RabbitMQ: Get nodes | The HTTP API endpoint that returns nodes metrics |
ZABBIX_PASSIVE | web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"] Preprocessing: - REGEX: |
Zabbix_raw_items | RabbitMQ: Get queues | The HTTP API endpoint that returns queues metrics |
ZABBIX_PASSIVE | web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"] Preprocessing: - REGEX: |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Node healthcheck failed | {TEMPLATE_NAME:web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node"].last()}=0 |
AVERAGE | ||
RabbitMQ: Version has changed (new version: {ITEM.VALUE}) | RabbitMQ version has changed. Ack to close. |
{TEMPLATE_NAME:rabbitmq.node.overview.rabbitmq_version.diff()}=1 and {TEMPLATE_NAME:rabbitmq.node.overview.rabbitmq_version.strlen()}>0 |
INFO | Manual close: YES |
RabbitMQ: Number of network partitions is too high (more than 0 for 5m) | {TEMPLATE_NAME:rabbitmq.node.partitions.min(5m)}>0 |
WARNING | ||
RabbitMQ: Node is not running | RabbitMQ node is not running |
{TEMPLATE_NAME:rabbitmq.node.running.max(5m)}=0 |
AVERAGE | Depends on: - RabbitMQ: Process is not running - RabbitMQ: Service is down |
RabbitMQ: Memory alarm (Memory usage threshold has been reached) | {TEMPLATE_NAME:rabbitmq.node.mem_alarm.last()}=1 |
AVERAGE | ||
RabbitMQ: Free disk space alarm (Free space threshold has been reached) | {TEMPLATE_NAME:rabbitmq.node.disk_free_alarm.last()}=1 |
AVERAGE | ||
RabbitMQ: has been restarted (uptime < 10m) | Uptime is less than 10 minutes |
{TEMPLATE_NAME:rabbitmq.node.uptime.last()}<10m |
INFO | Manual close: YES |
RabbitMQ: Process is not running | - |
{TEMPLATE_NAME:proc.num["{$RABBITMQ.PROCESS_NAME}"].last()}=0 |
HIGH | |
RabbitMQ: Service is down | - |
{TEMPLATE_NAME:net.tcp.service[http,"{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"].last()}=0 |
AVERAGE | Manual close: YES Depends on: - RabbitMQ: Process is not running |
RabbitMQ: Service response time is too high (over {$RABBITMQ.RESPONSE_TIME.MAX.WARN}s for 5m) | - |
{TEMPLATE_NAME:net.tcp.service.perf[http,"{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"].min(5m)}>{$RABBITMQ.RESPONSE_TIME.MAX.WARN} |
WARNING | Manual close: YES Depends on: - RabbitMQ: Process is not running - RabbitMQ: Service is down |
RabbitMQ: Too many messages in queue (over {$RABBITMQ.MESSAGES.MAX.WARN} for 5m) | - |
{TEMPLATE_NAME:rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"].min(5m)}>{$RABBITMQ.MESSAGES.MAX.WARN:"{#QUEUE}"} |
WARNING | |
RabbitMQ: Failed to fetch nodes data (or no data for 30m) | Zabbix has not received data for items for the last 30 minutes. |
{TEMPLATE_NAME:web.page.get["http://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/nodes/{$RABBITMQ.CLUSTER.NAME}@{HOST.NAME}?memory=true"].nodata(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.