Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/7.4
RabbitMQ cluster by Zabbix agent
Overview
This template is developed to monitor the messaging broker RabbitMQ by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template RabbitMQ Cluster
— collects metrics by polling RabbitMQ management plugin with Zabbix agent.
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.API.CLUSTER_HOST} | The hostname or IP of the API endpoint for the RabbitMQ cluster. |
127.0.0.1 |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Get overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
Get exchanges | The HTTP API endpoint that returns exchanges metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing
|
Connections total | The total number of connections. |
Dependent item | rabbitmq.overview.object_totals.connections Preprocessing
|
Channels total | The total number of channels. |
Dependent item | rabbitmq.overview.object_totals.channels Preprocessing
|
Queues total | The total number of queues. |
Dependent item | rabbitmq.overview.object_totals.queues Preprocessing
|
Consumers total | The total number of consumers. |
Dependent item | rabbitmq.overview.object_totals.consumers Preprocessing
|
Exchanges total | The total number of exchanges. |
Dependent item | rabbitmq.overview.object_totals.exchanges Preprocessing
|
Messages total | The total number of messages (ready, plus unacknowledged). |
Dependent item | rabbitmq.overview.queue_totals.messages Preprocessing
|
Messages ready for delivery | The number of messages ready for delivery. |
Dependent item | rabbitmq.overview.queue_totals.messages.ready Preprocessing
|
Messages unacknowledged | The number of unacknowledged messages. |
Dependent item | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing
|
Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack Preprocessing
|
Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack.rate Preprocessing
|
Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.overview.messages.confirm Preprocessing
|
Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.overview.messages.confirm.rate Preprocessing
|
Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.overview.messages.deliver_get Preprocessing
|
Messages delivered per second | 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 |
Dependent item | rabbitmq.overview.messages.deliver_get.rate Preprocessing
|
Messages published | The count of published messages. |
Dependent item | rabbitmq.overview.messages.publish Preprocessing
|
Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.overview.messages.publish.rate Preprocessing
|
Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in Preprocessing
|
Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in.rate Preprocessing
|
Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out Preprocessing
|
Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out.rate Preprocessing
|
Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable Preprocessing
|
Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable.rate Preprocessing
|
Messages returned redeliver | The count of subset of messages in the |
Dependent item | rabbitmq.overview.messages.redeliver Preprocessing
|
Messages returned redeliver per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.overview.messages.redeliver.rate Preprocessing
|
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ cluster: Failed to fetch overview data | Zabbix has not received any 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 |
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck: alarms in effect in the cluster{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ cluster: There are active alarms in the cluster | This is the default API endpoint path: http://{$RABBITMQ.API.CLUSTER_HOST}:{$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 |
LLD rule Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchanges discovery | The metrics for an individual exchange. |
Dependent item | rabbitmq.exchanges.discovery Preprocessing
|
Item prototypes for Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | 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 |
Dependent item | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ node by Zabbix agent
Overview
This template is developed to monitor RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 statistics, such as CPU usage, memory usage, and whether the process is running or not.
Requirements
Zabbix version: 7.4 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.CLUSTER.NAME} | The name of the RabbitMQ cluster. |
rabbit |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.HOST} | The hostname or IP of the API endpoint for the RabbitMQ. |
127.0.0.1 |
{$RABBITMQ.PROCESS_NAME} | The process name filter for the RabbitMQ process discovery. |
beam.smp |
{$RABBITMQ.PROCESS.NAME.PARAMETER} | The process name of the RabbitMQ server used in the item key |
|
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
{$RABBITMQ.RESPONSE_TIME.MAX.WARN} | The maximum response time by the RabbitMQ expressed in seconds for a trigger expression. |
10 |
{$RABBITMQ.MESSAGES.MAX.WARN} | The maximum number of messages in the queue for a trigger expression. |
1000 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Service ping | Zabbix agent | net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing
|
|
Get node overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
Get nodes | The HTTP API endpoint that returns metrics of the nodes. |
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"] Preprocessing
|
Get queues | The HTTP API endpoint that returns metrics of the queues metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"] Preprocessing
|
Management plugin version | The version of the management plugin in use. |
Dependent item | rabbitmq.node.overview.management_version Preprocessing
|
RabbitMQ version | The version of the RabbitMQ on the node, which processed this request. |
Dependent item | rabbitmq.node.overview.rabbitmq_version Preprocessing
|
Used file descriptors | The descriptors of the used file. |
Dependent item | rabbitmq.node.fd_used Preprocessing
|
Free disk space | The current free disk space. |
Dependent item | rabbitmq.node.disk_free Preprocessing
|
Memory used | The memory usage expressed in bytes. |
Dependent item | rabbitmq.node.mem_used Preprocessing
|
Memory limit | The memory usage with high watermark properties expressed in bytes. |
Dependent item | rabbitmq.node.mem_limit Preprocessing
|
Disk free limit | The free space limit of a disk expressed in bytes. |
Dependent item | rabbitmq.node.disk_free_limit Preprocessing
|
Runtime run queue | The average number of Erlang processes waiting to run. |
Dependent item | rabbitmq.node.run_queue Preprocessing
|
Sockets used | The number of file descriptors used as sockets. |
Dependent item | rabbitmq.node.sockets_used Preprocessing
|
Sockets available | The file descriptors available for use as sockets. |
Dependent item | rabbitmq.node.sockets_total Preprocessing
|
Number of network partitions | The number of network partitions, which this node "sees". |
Dependent item | rabbitmq.node.partitions Preprocessing
|
Is running | It "sees" whether the node is running or not. |
Dependent item | rabbitmq.node.running Preprocessing
|
Memory alarm | It checks whether the host has a memory alarm or not. |
Dependent item | rabbitmq.node.mem_alarm Preprocessing
|
Disk free alarm | It checks whether the node has a disk alarm or not. |
Dependent item | rabbitmq.node.disk_free_alarm Preprocessing
|
Uptime | Uptime expressed in milliseconds. |
Dependent item | rabbitmq.node.uptime Preprocessing
|
Get processes summary | The aggregated data of summary metrics for all processes. |
Zabbix agent | proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary] |
Service response time | Zabbix agent | net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Version has changed | RabbitMQ version has changed. Acknowledge to close the problem manually. |
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 node: Number of network partitions is too high | For more details see Detecting Network Partitions. |
min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0 |
Warning | |
RabbitMQ node: Memory alarm | For more details see Memory Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
Average | |
RabbitMQ node: Free disk space alarm | For more details see Free Disk Space Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 |
Average | |
RabbitMQ node: Host has been restarted | Uptime is less than 10 minutes. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m |
Info | Manual close: Yes |
LLD rule RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ process discovery | The discovery of the RabbitMQ summary processes. |
Dependent item | rabbitmq.proc.discovery |
Item prototypes for RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Get process data | The summary metrics aggregated by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.get[{#RABBITMQ.NAME}] Preprocessing
|
Number of running processes | The number of running processes {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.num[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage (rss) | The summary of resident set size memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.rss[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage (vsize) | The summary of virtual memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.vmem[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage, % | The percentage of real memory used by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.pmem[{#RABBITMQ.NAME}] Preprocessing
|
CPU utilization | The percentage of the CPU utilization by a process {#RABBITMQ.NAME}. |
Zabbix agent | proc.cpu.util[{#RABBITMQ.NAME}] |
Trigger prototypes for RabbitMQ process discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Process is not running | last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])=0 |
High | ||
RabbitMQ node: Failed to fetch nodes data | Zabbix has not received any 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 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
RabbitMQ node: Service is down | 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 |
Average | Manual close: Yes | |
RabbitMQ node: Node is not running | RabbitMQ node is not running. |
max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Average | Depends on:
|
RabbitMQ node: 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} and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck: local alarms in effect on this node{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: expiration date on the certificates{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: virtual hosts on this node{#SINGLETON} | It responds with It responds with a status code Otherwise it responds with a status code |
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}"] Preprocessing
|
Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: queues with minimum online quorum{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: There are active alarms in the node | 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. |
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 node: There are valid TLS certificates expiring in the next month | 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. |
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 node: There are not running virtual hosts | 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. |
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 node: There are queues that could potentially lose data if this node goes offline. | 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. |
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 node: There are queues that would lose their quorum and availability if this node is shut down. | 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. |
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 |
LLD rule Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.9- discovery | Specific metrics for the versions: up to and including 3.8.4. |
Dependent item | rabbitmq.healthcheck.v389.discovery Preprocessing
|
Item prototypes for Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck{#SINGLETON} | 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. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.9- discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Node healthcheck failed | For more details see 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 |
LLD rule Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queues discovery | The metrics for an individual queue. |
Dependent item | rabbitmq.queues.discovery Preprocessing
|
Item prototypes for Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queue [{#VHOST}][{#QUEUE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages total | The count of total messages in the queue. |
Dependent item | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages per second | The count of total messages per second in the queue. |
Dependent item | rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Consumers | The number of consumers. |
Dependent item | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Memory | The bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures. |
Dependent item | rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages ready | The number of messages ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages ready per second | The number of messages per second ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged | The number of messages delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second | The number of messages per second delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second | The number of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages delivered | The count of messages delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second | The count of messages (per second) delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second | 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 |
Dependent item | rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages published per second | The rate of published messages per second. |
Dependent item | rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second | The rate of messages redelivered per second. |
Dependent item | rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Trigger prototypes for Queues discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: 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 |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/7.2
RabbitMQ cluster by Zabbix agent
Overview
This template is developed to monitor the messaging broker RabbitMQ by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template RabbitMQ Cluster
— collects metrics by polling RabbitMQ management plugin with Zabbix agent.
Requirements
Zabbix version: 7.2 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.API.CLUSTER_HOST} | The hostname or IP of the API endpoint for the RabbitMQ cluster. |
127.0.0.1 |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Get overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
Get exchanges | The HTTP API endpoint that returns exchanges metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing
|
Connections total | The total number of connections. |
Dependent item | rabbitmq.overview.object_totals.connections Preprocessing
|
Channels total | The total number of channels. |
Dependent item | rabbitmq.overview.object_totals.channels Preprocessing
|
Queues total | The total number of queues. |
Dependent item | rabbitmq.overview.object_totals.queues Preprocessing
|
Consumers total | The total number of consumers. |
Dependent item | rabbitmq.overview.object_totals.consumers Preprocessing
|
Exchanges total | The total number of exchanges. |
Dependent item | rabbitmq.overview.object_totals.exchanges Preprocessing
|
Messages total | The total number of messages (ready, plus unacknowledged). |
Dependent item | rabbitmq.overview.queue_totals.messages Preprocessing
|
Messages ready for delivery | The number of messages ready for delivery. |
Dependent item | rabbitmq.overview.queue_totals.messages.ready Preprocessing
|
Messages unacknowledged | The number of unacknowledged messages. |
Dependent item | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing
|
Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack Preprocessing
|
Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack.rate Preprocessing
|
Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.overview.messages.confirm Preprocessing
|
Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.overview.messages.confirm.rate Preprocessing
|
Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.overview.messages.deliver_get Preprocessing
|
Messages delivered per second | 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 |
Dependent item | rabbitmq.overview.messages.deliver_get.rate Preprocessing
|
Messages published | The count of published messages. |
Dependent item | rabbitmq.overview.messages.publish Preprocessing
|
Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.overview.messages.publish.rate Preprocessing
|
Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in Preprocessing
|
Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in.rate Preprocessing
|
Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out Preprocessing
|
Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out.rate Preprocessing
|
Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable Preprocessing
|
Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable.rate Preprocessing
|
Messages returned redeliver | The count of subset of messages in the |
Dependent item | rabbitmq.overview.messages.redeliver Preprocessing
|
Messages returned redeliver per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.overview.messages.redeliver.rate Preprocessing
|
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ cluster: Failed to fetch overview data | Zabbix has not received any 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 |
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck: alarms in effect in the cluster{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ cluster: There are active alarms in the cluster | This is the default API endpoint path: http://{$RABBITMQ.API.CLUSTER_HOST}:{$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 |
LLD rule Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchanges discovery | The metrics for an individual exchange. |
Dependent item | rabbitmq.exchanges.discovery Preprocessing
|
Item prototypes for Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | 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 |
Dependent item | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ node by Zabbix agent
Overview
This template is developed to monitor RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 statistics, such as CPU usage, memory usage, and whether the process is running or not.
Requirements
Zabbix version: 7.2 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.CLUSTER.NAME} | The name of the RabbitMQ cluster. |
rabbit |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.HOST} | The hostname or IP of the API endpoint for the RabbitMQ. |
127.0.0.1 |
{$RABBITMQ.PROCESS_NAME} | The process name filter for the RabbitMQ process discovery. |
beam.smp |
{$RABBITMQ.PROCESS.NAME.PARAMETER} | The process name of the RabbitMQ server used in the item key |
|
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
{$RABBITMQ.RESPONSE_TIME.MAX.WARN} | The maximum response time by the RabbitMQ expressed in seconds for a trigger expression. |
10 |
{$RABBITMQ.MESSAGES.MAX.WARN} | The maximum number of messages in the queue for a trigger expression. |
1000 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Service ping | Zabbix agent | net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing
|
|
Get node overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
Get nodes | The HTTP API endpoint that returns metrics of the nodes. |
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"] Preprocessing
|
Get queues | The HTTP API endpoint that returns metrics of the queues metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"] Preprocessing
|
Management plugin version | The version of the management plugin in use. |
Dependent item | rabbitmq.node.overview.management_version Preprocessing
|
RabbitMQ version | The version of the RabbitMQ on the node, which processed this request. |
Dependent item | rabbitmq.node.overview.rabbitmq_version Preprocessing
|
Used file descriptors | The descriptors of the used file. |
Dependent item | rabbitmq.node.fd_used Preprocessing
|
Free disk space | The current free disk space. |
Dependent item | rabbitmq.node.disk_free Preprocessing
|
Memory used | The memory usage expressed in bytes. |
Dependent item | rabbitmq.node.mem_used Preprocessing
|
Memory limit | The memory usage with high watermark properties expressed in bytes. |
Dependent item | rabbitmq.node.mem_limit Preprocessing
|
Disk free limit | The free space limit of a disk expressed in bytes. |
Dependent item | rabbitmq.node.disk_free_limit Preprocessing
|
Runtime run queue | The average number of Erlang processes waiting to run. |
Dependent item | rabbitmq.node.run_queue Preprocessing
|
Sockets used | The number of file descriptors used as sockets. |
Dependent item | rabbitmq.node.sockets_used Preprocessing
|
Sockets available | The file descriptors available for use as sockets. |
Dependent item | rabbitmq.node.sockets_total Preprocessing
|
Number of network partitions | The number of network partitions, which this node "sees". |
Dependent item | rabbitmq.node.partitions Preprocessing
|
Is running | It "sees" whether the node is running or not. |
Dependent item | rabbitmq.node.running Preprocessing
|
Memory alarm | It checks whether the host has a memory alarm or not. |
Dependent item | rabbitmq.node.mem_alarm Preprocessing
|
Disk free alarm | It checks whether the node has a disk alarm or not. |
Dependent item | rabbitmq.node.disk_free_alarm Preprocessing
|
Uptime | Uptime expressed in milliseconds. |
Dependent item | rabbitmq.node.uptime Preprocessing
|
Get processes summary | The aggregated data of summary metrics for all processes. |
Zabbix agent | proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary] |
Service response time | Zabbix agent | net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Version has changed | RabbitMQ version has changed. Acknowledge to close the problem manually. |
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 node: Number of network partitions is too high | For more details see Detecting Network Partitions. |
min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0 |
Warning | |
RabbitMQ node: Memory alarm | For more details see Memory Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
Average | |
RabbitMQ node: Free disk space alarm | For more details see Free Disk Space Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 |
Average | |
RabbitMQ node: Host has been restarted | Uptime is less than 10 minutes. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m |
Info | Manual close: Yes |
LLD rule RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ process discovery | The discovery of the RabbitMQ summary processes. |
Dependent item | rabbitmq.proc.discovery |
Item prototypes for RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Get process data | The summary metrics aggregated by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.get[{#RABBITMQ.NAME}] Preprocessing
|
Number of running processes | The number of running processes {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.num[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage (rss) | The summary of resident set size memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.rss[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage (vsize) | The summary of virtual memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.vmem[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage, % | The percentage of real memory used by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.pmem[{#RABBITMQ.NAME}] Preprocessing
|
CPU utilization | The percentage of the CPU utilization by a process {#RABBITMQ.NAME}. |
Zabbix agent | proc.cpu.util[{#RABBITMQ.NAME}] |
Trigger prototypes for RabbitMQ process discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Process is not running | last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])=0 |
High | ||
RabbitMQ node: Failed to fetch nodes data | Zabbix has not received any 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 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
RabbitMQ node: Service is down | 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 |
Average | Manual close: Yes | |
RabbitMQ node: Node is not running | RabbitMQ node is not running. |
max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Average | Depends on:
|
RabbitMQ node: 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} and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck: local alarms in effect on this node{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: expiration date on the certificates{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: virtual hosts on this node{#SINGLETON} | It responds with It responds with a status code Otherwise it responds with a status code |
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}"] Preprocessing
|
Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: queues with minimum online quorum{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: There are active alarms in the node | 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. |
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 node: There are valid TLS certificates expiring in the next month | 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. |
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 node: There are not running virtual hosts | 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. |
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 node: There are queues that could potentially lose data if this node goes offline. | 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. |
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 node: There are queues that would lose their quorum and availability if this node is shut down. | 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. |
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 |
LLD rule Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.9- discovery | Specific metrics for the versions: up to and including 3.8.4. |
Dependent item | rabbitmq.healthcheck.v389.discovery Preprocessing
|
Item prototypes for Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck{#SINGLETON} | 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. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.9- discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Node healthcheck failed | For more details see 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 |
LLD rule Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queues discovery | The metrics for an individual queue. |
Dependent item | rabbitmq.queues.discovery Preprocessing
|
Item prototypes for Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queue [{#VHOST}][{#QUEUE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages total | The count of total messages in the queue. |
Dependent item | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages per second | The count of total messages per second in the queue. |
Dependent item | rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Consumers | The number of consumers. |
Dependent item | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Memory | The bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures. |
Dependent item | rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages ready | The number of messages ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages ready per second | The number of messages per second ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged | The number of messages delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second | The number of messages per second delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second | The number of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages delivered | The count of messages delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second | The count of messages (per second) delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second | 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 |
Dependent item | rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages published per second | The rate of published messages per second. |
Dependent item | rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second | The rate of messages redelivered per second. |
Dependent item | rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Trigger prototypes for Queues discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: 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 |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/7.0
RabbitMQ cluster by Zabbix agent
Overview
This template is developed to monitor the messaging broker RabbitMQ by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template RabbitMQ Cluster
— collects metrics by polling RabbitMQ management plugin with Zabbix agent.
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.API.CLUSTER_HOST} | The hostname or IP of the API endpoint for the RabbitMQ cluster. |
127.0.0.1 |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Get overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
Get exchanges | The HTTP API endpoint that returns exchanges metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing
|
Connections total | The total number of connections. |
Dependent item | rabbitmq.overview.object_totals.connections Preprocessing
|
Channels total | The total number of channels. |
Dependent item | rabbitmq.overview.object_totals.channels Preprocessing
|
Queues total | The total number of queues. |
Dependent item | rabbitmq.overview.object_totals.queues Preprocessing
|
Consumers total | The total number of consumers. |
Dependent item | rabbitmq.overview.object_totals.consumers Preprocessing
|
Exchanges total | The total number of exchanges. |
Dependent item | rabbitmq.overview.object_totals.exchanges Preprocessing
|
Messages total | The total number of messages (ready, plus unacknowledged). |
Dependent item | rabbitmq.overview.queue_totals.messages Preprocessing
|
Messages ready for delivery | The number of messages ready for delivery. |
Dependent item | rabbitmq.overview.queue_totals.messages.ready Preprocessing
|
Messages unacknowledged | The number of unacknowledged messages. |
Dependent item | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing
|
Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack Preprocessing
|
Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack.rate Preprocessing
|
Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.overview.messages.confirm Preprocessing
|
Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.overview.messages.confirm.rate Preprocessing
|
Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.overview.messages.deliver_get Preprocessing
|
Messages delivered per second | 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 |
Dependent item | rabbitmq.overview.messages.deliver_get.rate Preprocessing
|
Messages published | The count of published messages. |
Dependent item | rabbitmq.overview.messages.publish Preprocessing
|
Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.overview.messages.publish.rate Preprocessing
|
Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in Preprocessing
|
Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in.rate Preprocessing
|
Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out Preprocessing
|
Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out.rate Preprocessing
|
Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable Preprocessing
|
Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable.rate Preprocessing
|
Messages returned redeliver | The count of subset of messages in the |
Dependent item | rabbitmq.overview.messages.redeliver Preprocessing
|
Messages returned redeliver per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.overview.messages.redeliver.rate Preprocessing
|
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ cluster: Failed to fetch overview data | Zabbix has not received any 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 |
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck: alarms in effect in the cluster{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ cluster: There are active alarms in the cluster | This is the default API endpoint path: http://{$RABBITMQ.API.CLUSTER_HOST}:{$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 |
LLD rule Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchanges discovery | The metrics for an individual exchange. |
Dependent item | rabbitmq.exchanges.discovery Preprocessing
|
Item prototypes for Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | 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 |
Dependent item | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ node by Zabbix agent
Overview
This template is developed to monitor RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 statistics, such as CPU usage, memory usage, and whether the process is running or not.
Requirements
Zabbix version: 7.0 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.CLUSTER.NAME} | The name of the RabbitMQ cluster. |
rabbit |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.HOST} | The hostname or IP of the API endpoint for the RabbitMQ. |
127.0.0.1 |
{$RABBITMQ.PROCESS_NAME} | The process name filter for the RabbitMQ process discovery. |
beam.smp |
{$RABBITMQ.PROCESS.NAME.PARAMETER} | The process name of the RabbitMQ server used in the item key |
|
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
{$RABBITMQ.RESPONSE_TIME.MAX.WARN} | The maximum response time by the RabbitMQ expressed in seconds for a trigger expression. |
10 |
{$RABBITMQ.MESSAGES.MAX.WARN} | The maximum number of messages in the queue for a trigger expression. |
1000 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
Service ping | Zabbix agent | net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing
|
|
Get node overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
Get nodes | The HTTP API endpoint that returns metrics of the nodes. |
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"] Preprocessing
|
Get queues | The HTTP API endpoint that returns metrics of the queues metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"] Preprocessing
|
Management plugin version | The version of the management plugin in use. |
Dependent item | rabbitmq.node.overview.management_version Preprocessing
|
RabbitMQ version | The version of the RabbitMQ on the node, which processed this request. |
Dependent item | rabbitmq.node.overview.rabbitmq_version Preprocessing
|
Used file descriptors | The descriptors of the used file. |
Dependent item | rabbitmq.node.fd_used Preprocessing
|
Free disk space | The current free disk space. |
Dependent item | rabbitmq.node.disk_free Preprocessing
|
Memory used | The memory usage expressed in bytes. |
Dependent item | rabbitmq.node.mem_used Preprocessing
|
Memory limit | The memory usage with high watermark properties expressed in bytes. |
Dependent item | rabbitmq.node.mem_limit Preprocessing
|
Disk free limit | The free space limit of a disk expressed in bytes. |
Dependent item | rabbitmq.node.disk_free_limit Preprocessing
|
Runtime run queue | The average number of Erlang processes waiting to run. |
Dependent item | rabbitmq.node.run_queue Preprocessing
|
Sockets used | The number of file descriptors used as sockets. |
Dependent item | rabbitmq.node.sockets_used Preprocessing
|
Sockets available | The file descriptors available for use as sockets. |
Dependent item | rabbitmq.node.sockets_total Preprocessing
|
Number of network partitions | The number of network partitions, which this node "sees". |
Dependent item | rabbitmq.node.partitions Preprocessing
|
Is running | It "sees" whether the node is running or not. |
Dependent item | rabbitmq.node.running Preprocessing
|
Memory alarm | It checks whether the host has a memory alarm or not. |
Dependent item | rabbitmq.node.mem_alarm Preprocessing
|
Disk free alarm | It checks whether the node has a disk alarm or not. |
Dependent item | rabbitmq.node.disk_free_alarm Preprocessing
|
Uptime | Uptime expressed in milliseconds. |
Dependent item | rabbitmq.node.uptime Preprocessing
|
Get processes summary | The aggregated data of summary metrics for all processes. |
Zabbix agent | proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary] |
Service response time | Zabbix agent | net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Version has changed | RabbitMQ version has changed. Acknowledge to close the problem manually. |
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 node: Number of network partitions is too high | For more details see Detecting Network Partitions. |
min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0 |
Warning | |
RabbitMQ node: Memory alarm | For more details see Memory Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
Average | |
RabbitMQ node: Free disk space alarm | For more details see Free Disk Space Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 |
Average | |
RabbitMQ node: Host has been restarted | Uptime is less than 10 minutes. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m |
Info | Manual close: Yes |
LLD rule RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ process discovery | The discovery of the RabbitMQ summary processes. |
Dependent item | rabbitmq.proc.discovery |
Item prototypes for RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Get process data | The summary metrics aggregated by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.get[{#RABBITMQ.NAME}] Preprocessing
|
Number of running processes | The number of running processes {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.num[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage (rss) | The summary of resident set size memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.rss[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage (vsize) | The summary of virtual memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.vmem[{#RABBITMQ.NAME}] Preprocessing
|
Memory usage, % | The percentage of real memory used by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.pmem[{#RABBITMQ.NAME}] Preprocessing
|
CPU utilization | The percentage of the CPU utilization by a process {#RABBITMQ.NAME}. |
Zabbix agent | proc.cpu.util[{#RABBITMQ.NAME}] |
Trigger prototypes for RabbitMQ process discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Process is not running | last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])=0 |
High | ||
RabbitMQ node: Failed to fetch nodes data | Zabbix has not received any 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 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
RabbitMQ node: Service is down | 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 |
Average | Manual close: Yes | |
RabbitMQ node: Node is not running | RabbitMQ node is not running. |
max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Average | Depends on:
|
RabbitMQ node: 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} and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck: local alarms in effect on this node{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: expiration date on the certificates{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: virtual hosts on this node{#SINGLETON} | It responds with It responds with a status code Otherwise it responds with a status code |
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}"] Preprocessing
|
Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Healthcheck: queues with minimum online quorum{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: There are active alarms in the node | 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. |
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 node: There are valid TLS certificates expiring in the next month | 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. |
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 node: There are not running virtual hosts | 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. |
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 node: There are queues that could potentially lose data if this node goes offline. | 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. |
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 node: There are queues that would lose their quorum and availability if this node is shut down. | 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. |
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 |
LLD rule Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.9- discovery | Specific metrics for the versions: up to and including 3.8.4. |
Dependent item | rabbitmq.healthcheck.v389.discovery Preprocessing
|
Item prototypes for Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Healthcheck{#SINGLETON} | 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. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.9- discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: Node healthcheck failed | For more details see 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 |
LLD rule Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queues discovery | The metrics for an individual queue. |
Dependent item | rabbitmq.queues.discovery Preprocessing
|
Item prototypes for Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queue [{#VHOST}][{#QUEUE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages total | The count of total messages in the queue. |
Dependent item | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages per second | The count of total messages per second in the queue. |
Dependent item | rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Consumers | The number of consumers. |
Dependent item | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Memory | The bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures. |
Dependent item | rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages ready | The number of messages ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages ready per second | The number of messages per second ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged | The number of messages delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second | The number of messages per second delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second | The number of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages delivered | The count of messages delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second | The count of messages (per second) delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second | 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 |
Dependent item | rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages published per second | The rate of published messages per second. |
Dependent item | rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second | The rate of messages redelivered per second. |
Dependent item | rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Trigger prototypes for Queues discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ node: 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 |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/6.4
RabbitMQ cluster by Zabbix agent
Overview
This template is developed to monitor the messaging broker RabbitMQ by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template RabbitMQ Cluster
— collects metrics by polling RabbitMQ management plugin with Zabbix agent.
Requirements
Zabbix version: 6.4 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.API.CLUSTER_HOST} | The hostname or IP of the API endpoint for the RabbitMQ cluster. |
127.0.0.1 |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Get overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
RabbitMQ: Get exchanges | The HTTP API endpoint that returns exchanges metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing
|
RabbitMQ: Connections total | The total number of connections. |
Dependent item | rabbitmq.overview.object_totals.connections Preprocessing
|
RabbitMQ: Channels total | The total number of channels. |
Dependent item | rabbitmq.overview.object_totals.channels Preprocessing
|
RabbitMQ: Queues total | The total number of queues. |
Dependent item | rabbitmq.overview.object_totals.queues Preprocessing
|
RabbitMQ: Consumers total | The total number of consumers. |
Dependent item | rabbitmq.overview.object_totals.consumers Preprocessing
|
RabbitMQ: Exchanges total | The total number of exchanges. |
Dependent item | rabbitmq.overview.object_totals.exchanges Preprocessing
|
RabbitMQ: Messages total | The total number of messages (ready, plus unacknowledged). |
Dependent item | rabbitmq.overview.queue_totals.messages Preprocessing
|
RabbitMQ: Messages ready for delivery | The number of messages ready for delivery. |
Dependent item | rabbitmq.overview.queue_totals.messages.ready Preprocessing
|
RabbitMQ: Messages unacknowledged | The number of unacknowledged messages. |
Dependent item | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing
|
RabbitMQ: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack Preprocessing
|
RabbitMQ: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack.rate Preprocessing
|
RabbitMQ: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.overview.messages.confirm Preprocessing
|
RabbitMQ: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.overview.messages.confirm.rate Preprocessing
|
RabbitMQ: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.overview.messages.deliver_get Preprocessing
|
RabbitMQ: Messages delivered per second | 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 |
Dependent item | rabbitmq.overview.messages.deliver_get.rate Preprocessing
|
RabbitMQ: Messages published | The count of published messages. |
Dependent item | rabbitmq.overview.messages.publish Preprocessing
|
RabbitMQ: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.overview.messages.publish.rate Preprocessing
|
RabbitMQ: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in Preprocessing
|
RabbitMQ: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in.rate Preprocessing
|
RabbitMQ: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out Preprocessing
|
RabbitMQ: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out.rate Preprocessing
|
RabbitMQ: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable Preprocessing
|
RabbitMQ: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable.rate Preprocessing
|
RabbitMQ: Messages returned redeliver | The count of subset of messages in the |
Dependent item | rabbitmq.overview.messages.redeliver Preprocessing
|
RabbitMQ: Messages returned redeliver per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.overview.messages.redeliver.rate Preprocessing
|
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Failed to fetch overview data | Zabbix has not received any 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 |
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: There are active alarms in the cluster | This is the default API endpoint path: http://{$RABBITMQ.API.CLUSTER_HOST}:{$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 |
LLD rule Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchanges discovery | The metrics for an individual exchange. |
Dependent item | rabbitmq.exchanges.discovery Preprocessing
|
Item prototypes for Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | 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 |
Dependent item | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ node by Zabbix agent
Overview
This template is developed to monitor RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 statistics, such as CPU usage, memory usage, and whether the process is running or not.
Requirements
Zabbix version: 6.4 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.CLUSTER.NAME} | The name of the RabbitMQ cluster. |
rabbit |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.HOST} | The hostname or IP of the API endpoint for the RabbitMQ. |
127.0.0.1 |
{$RABBITMQ.PROCESS_NAME} | The process name filter for the RabbitMQ process discovery. |
beam.smp |
{$RABBITMQ.PROCESS.NAME.PARAMETER} | The process name of the RabbitMQ server used in the item key |
|
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
{$RABBITMQ.RESPONSE_TIME.MAX.WARN} | The maximum response time by the RabbitMQ expressed in seconds for a trigger expression. |
10 |
{$RABBITMQ.MESSAGES.MAX.WARN} | The maximum number of messages in the queue for a trigger expression. |
1000 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Service ping | Zabbix agent | net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing
|
|
RabbitMQ: Get node overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
RabbitMQ: Get nodes | The HTTP API endpoint that returns metrics of the nodes. |
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"] Preprocessing
|
RabbitMQ: Get queues | The HTTP API endpoint that returns metrics of the queues metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"] Preprocessing
|
RabbitMQ: Management plugin version | The version of the management plugin in use. |
Dependent item | rabbitmq.node.overview.management_version Preprocessing
|
RabbitMQ: RabbitMQ version | The version of the RabbitMQ on the node, which processed this request. |
Dependent item | rabbitmq.node.overview.rabbitmq_version Preprocessing
|
RabbitMQ: Used file descriptors | The descriptors of the used file. |
Dependent item | rabbitmq.node.fd_used Preprocessing
|
RabbitMQ: Free disk space | The current free disk space. |
Dependent item | rabbitmq.node.disk_free Preprocessing
|
RabbitMQ: Memory used | The memory usage expressed in bytes. |
Dependent item | rabbitmq.node.mem_used Preprocessing
|
RabbitMQ: Memory limit | The memory usage with high watermark properties expressed in bytes. |
Dependent item | rabbitmq.node.mem_limit Preprocessing
|
RabbitMQ: Disk free limit | The free space limit of a disk expressed in bytes. |
Dependent item | rabbitmq.node.disk_free_limit Preprocessing
|
RabbitMQ: Runtime run queue | The average number of Erlang processes waiting to run. |
Dependent item | rabbitmq.node.run_queue Preprocessing
|
RabbitMQ: Sockets used | The number of file descriptors used as sockets. |
Dependent item | rabbitmq.node.sockets_used Preprocessing
|
RabbitMQ: Sockets available | The file descriptors available for use as sockets. |
Dependent item | rabbitmq.node.sockets_total Preprocessing
|
RabbitMQ: Number of network partitions | The number of network partitions, which this node "sees". |
Dependent item | rabbitmq.node.partitions Preprocessing
|
RabbitMQ: Is running | It "sees" whether the node is running or not. |
Dependent item | rabbitmq.node.running Preprocessing
|
RabbitMQ: Memory alarm | It checks whether the host has a memory alarm or not. |
Dependent item | rabbitmq.node.mem_alarm Preprocessing
|
RabbitMQ: Disk free alarm | It checks whether the node has a disk alarm or not. |
Dependent item | rabbitmq.node.disk_free_alarm Preprocessing
|
RabbitMQ: Uptime | Uptime expressed in milliseconds. |
Dependent item | rabbitmq.node.uptime Preprocessing
|
RabbitMQ: Get processes summary | The aggregated data of summary metrics for all processes. |
Zabbix agent | proc.get[{$RABBITMQ.PROCESS.NAME.PARAMETER},,,summary] |
RabbitMQ: Service response time | Zabbix agent | net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Version has changed | RabbitMQ version has changed. Acknowledge to close the problem manually. |
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 | For more details see Detecting Network Partitions. |
min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0 |
Warning | |
RabbitMQ: Memory alarm | For more details see Memory Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
Average | |
RabbitMQ: Free disk space alarm | For more details see Free Disk Space Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 |
Average | |
RabbitMQ: Host has been restarted | Uptime is less than 10 minutes. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m |
Info | Manual close: Yes |
LLD rule RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ process discovery | The discovery of the RabbitMQ summary processes. |
Dependent item | rabbitmq.proc.discovery |
Item prototypes for RabbitMQ process discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Get process data | The summary metrics aggregated by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.get[{#RABBITMQ.NAME}] Preprocessing
|
RabbitMQ: Number of running processes | The number of running processes {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.num[{#RABBITMQ.NAME}] Preprocessing
|
RabbitMQ: Memory usage (rss) | The summary of resident set size memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.rss[{#RABBITMQ.NAME}] Preprocessing
|
RabbitMQ: Memory usage (vsize) | The summary of virtual memory used by a process {#RABBITMQ.NAME} expressed in bytes. |
Dependent item | rabbitmq.proc.vmem[{#RABBITMQ.NAME}] Preprocessing
|
RabbitMQ: Memory usage, % | The percentage of real memory used by a process {#RABBITMQ.NAME}. |
Dependent item | rabbitmq.proc.pmem[{#RABBITMQ.NAME}] Preprocessing
|
RabbitMQ: CPU utilization | The percentage of the CPU utilization by a process {#RABBITMQ.NAME}. |
Zabbix agent | proc.cpu.util[{#RABBITMQ.NAME}] |
Trigger prototypes for RabbitMQ process discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Process is not running | last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])=0 |
High | ||
RabbitMQ: Failed to fetch nodes data | Zabbix has not received any 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 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
RabbitMQ: Service is down | 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 |
Average | Manual close: Yes | |
RabbitMQ: Node is not running | RabbitMQ node is not running. |
max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Average | Depends on:
|
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} and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#RABBITMQ.NAME}])>0 |
Warning | Manual close: Yes Depends on:
|
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON} | It responds with It responds with a status code Otherwise it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: There are active alarms in the node | 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. |
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 | 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. |
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 | 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. |
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. | 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. |
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. | 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. |
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 |
LLD rule Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.9- discovery | Specific metrics for the versions: up to and including 3.8.4. |
Dependent item | rabbitmq.healthcheck.v389.discovery Preprocessing
|
Item prototypes for Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Healthcheck{#SINGLETON} | 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. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.9- discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Node healthcheck failed | For more details see 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 |
LLD rule Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queues discovery | The metrics for an individual queue. |
Dependent item | rabbitmq.queues.discovery Preprocessing
|
Item prototypes for Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages total | The count of total messages in the queue. |
Dependent item | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages per second | The count of total messages per second in the queue. |
Dependent item | rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Consumers | The number of consumers. |
Dependent item | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Memory | The bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures. |
Dependent item | rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages ready | The number of messages ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages ready per second | The number of messages per second ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged | The number of messages delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second | The number of messages per second delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second | The number of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered | The count of messages delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second | The count of messages (per second) delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second | 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 |
Dependent item | rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published per second | The rate of published messages per second. |
Dependent item | rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second | The rate of messages redelivered per second. |
Dependent item | rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Trigger prototypes for Queues discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
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 |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/6.2
RabbitMQ cluster by Zabbix agent
Overview
For Zabbix version: 6.2 and higher. This template is developed to monitor the messaging broker RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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 an IP of the API endpoint for the RabbitMQ cluster. |
127.0.0.1 |
{$RABBITMQ.API.PASSWORD} | - |
zabbix |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.USER} | - |
zbx_monitor |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
Template links
There are no template links in this template.
Discovery rules
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchanges discovery | The metrics for an individual exchange. |
DEPENDENT | rabbitmq.exchanges.discovery Filter: AND- {#EXCHANGE} MATCHES_REGEX - {#EXCHANGE} NOT_MATCHES_REGEX |
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
DEPENDENT | rabbitmq.healthcheck.v3810.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
Items collected
Group | Name | Description | Type | Key and additional info |
---|---|---|---|---|
RabbitMQ | RabbitMQ: Connections total | The total number of connections. |
DEPENDENT | rabbitmq.overview.object_totals.connections Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Channels total | The total number of channels. |
DEPENDENT | rabbitmq.overview.object_totals.channels Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queues total | The total number of queues. |
DEPENDENT | rabbitmq.overview.object_totals.queues Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Consumers total | The total number of consumers. |
DEPENDENT | rabbitmq.overview.object_totals.consumers Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Exchanges total | The total number of exchanges. |
DEPENDENT | rabbitmq.overview.object_totals.exchanges Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Messages total | The total number of messages (ready, plus unacknowledged). |
DEPENDENT | rabbitmq.overview.queue_totals.messages Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages ready for delivery | The number of messages ready for delivery. |
DEPENDENT | rabbitmq.overview.queue_totals.messages.ready Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages unacknowledged | The number of unacknowledged messages. |
DEPENDENT | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
DEPENDENT | rabbitmq.overview.messages.ack Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
DEPENDENT | rabbitmq.overview.messages.ack.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages confirmed | The count of confirmed messages. |
DEPENDENT | rabbitmq.overview.messages.confirm Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages confirmed per second | The rate of confirmed messages per second. |
DEPENDENT | rabbitmq.overview.messages.confirm.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to |
DEPENDENT | rabbitmq.overview.messages.deliver_get Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages delivered per second | 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 |
DEPENDENT | rabbitmq.overview.messages.deliver_get.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages published | The count of published messages. |
DEPENDENT | rabbitmq.overview.messages.publish Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages published per second | The rate of published messages per second. |
DEPENDENT | rabbitmq.overview.messages.publish.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages publish_in | The count of messages published from the channels into this overview. |
DEPENDENT | rabbitmq.overview.messages.publish_in Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
DEPENDENT | rabbitmq.overview.messages.publish_in.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages publish_out | The 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 | The rate of messages (per second) published from this overview into queues. |
DEPENDENT | rabbitmq.overview.messages.publish_out.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
DEPENDENT | rabbitmq.overview.messages.return_unroutable Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
DEPENDENT | rabbitmq.overview.messages.return_unroutable.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages returned redeliver | The count of subset of messages in the |
DEPENDENT | rabbitmq.overview.messages.redeliver Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Messages returned redeliver per second | The rate of subset of messages (per second) in the |
DEPENDENT | rabbitmq.overview.messages.redeliver.rate Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON} | It responds with a status code |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | The 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 | The rate of messages (per second) delivered to clients and acknowledged. |
DEPENDENT | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | The count of confirmed messages. |
DEPENDENT | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | The 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 | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
DEPENDENT | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | 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 |
DEPENDENT | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | The count of published messages. |
DEPENDENT | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | The 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 | The count of messages published from the 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 | The rate of messages (per second) published from the channels into this overview. |
DEPENDENT | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | The 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 | The rate of messages (per second) published from this overview into queues. |
DEPENDENT | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | The count of messages returned to a 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 | The rate of messages (per second) returned to a publisher as unroutable. |
DEPENDENT | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | The count of subset of messages in the |
DEPENDENT | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second | The rate of subset of messages (per second) in the |
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["{$RABBITMQ.API.SCHEME}://{$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["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing: - REGEX: |
Zabbix raw items | RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics |
DEPENDENT | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing: - JSONPATH: |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: There are active alarms in the cluster | This is the default API endpoint path: 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 any 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 at ZABBIX forums.
RabbitMQ node by Zabbix agent
Overview
For Zabbix version: 6.2 and higher.
This template is developed to monitor RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 statistics, such as CPU usage, memory usage, and whether the 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 documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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 an IP of the API endpoint for the RabbitMQ. |
127.0.0.1 |
{$RABBITMQ.API.PASSWORD} | - |
zabbix |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.USER} | - |
zbx_monitor |
{$RABBITMQ.CLUSTER.NAME} | The name of the RabbitMQ cluster. |
rabbit |
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
{$RABBITMQ.MESSAGES.MAX.WARN} | The maximum number of messages in the queue for a trigger expression. |
1000 |
{$RABBITMQ.PROCESS_NAME} | The name of the RabbitMQ server process. |
beam.smp |
{$RABBITMQ.RESPONSE_TIME.MAX.WARN} | The maximum response time by the RabbitMQ expressed in seconds for a 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 | Specific metrics for the versions: up to and including 3.8.10. |
DEPENDENT | rabbitmq.healthcheck.v3810.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
Health Check 3.8.9- discovery | Specific metrics for the versions: up to and including 3.8.4. |
DEPENDENT | rabbitmq.healthcheck.v389.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
Queues discovery | The metrics for an individual queue. |
DEPENDENT | rabbitmq.queues.discovery Filter: AND- {#QUEUE} MATCHES_REGEX - {#QUEUE} NOT_MATCHES_REGEX - {#NODE} MATCHES_REGEX |
RabbitMQ process discovery | The discovery of the RabbitMQ summary processes. |
DEPENDENT | rabbitmq.proc.discovery Filter: AND- {#NAME} MATCHES_REGEX |
Items collected
Group | Name | Description | Type | Key and additional info |
---|---|---|---|---|
RabbitMQ | RabbitMQ: Get nodes | The HTTP API endpoint that returns metrics from the nodes. |
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: |
RabbitMQ | RabbitMQ: Management plugin version | The version of the management plugin in use. |
DEPENDENT | rabbitmq.node.overview.management_version Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: RabbitMQ version | The version of the RabbitMQ on the node, which processed this request. |
DEPENDENT | rabbitmq.node.overview.rabbitmq_version Preprocessing: - JSONPATH: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Used file descriptors | The descriptors of the used file. |
DEPENDENT | rabbitmq.node.fd_used Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Free disk space | The current free disk space. |
DEPENDENT | rabbitmq.node.disk_free Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Memory used | The memory usage expressed in bytes. |
DEPENDENT | rabbitmq.node.mem_used Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Memory limit | The memory usage with high watermark properties expressed in bytes. |
DEPENDENT | rabbitmq.node.mem_limit Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Disk free limit | The free space limit of a disk expressed in bytes. |
DEPENDENT | rabbitmq.node.disk_free_limit Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Runtime run queue | The average number of Erlang processes waiting to run. |
DEPENDENT | rabbitmq.node.run_queue Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Sockets used | The number of file descriptors used as sockets. |
DEPENDENT | rabbitmq.node.sockets_used Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Sockets available | The file descriptors available for use as sockets. |
DEPENDENT | rabbitmq.node.sockets_total Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Number of network partitions | The number of network partitions, which this node "sees". |
DEPENDENT | rabbitmq.node.partitions Preprocessing: - JSONPATH: - JAVASCRIPT: |
RabbitMQ | RabbitMQ: Is running | It "sees" whether the node is running or not. |
DEPENDENT | rabbitmq.node.running Preprocessing: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Memory alarm | It checks whether the host has a memory alarm or not. |
DEPENDENT | rabbitmq.node.mem_alarm Preprocessing: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Disk free alarm | It checks whether the node has a disk alarm or not. |
DEPENDENT | rabbitmq.node.disk_free_alarm Preprocessing: - JSONPATH: - BOOL_TO_DECIMAL |
RabbitMQ | RabbitMQ: Uptime | Uptime expressed in milliseconds. |
DEPENDENT | rabbitmq.node.uptime Preprocessing: - JSONPATH: - MULTIPLIER: |
RabbitMQ | RabbitMQ: Get processes summary | The aggregated data of summary metrics for all processes. |
ZABBIX_PASSIVE | proc.get[,,,summary] |
RabbitMQ | RabbitMQ: Service ping | - |
ZABBIX_PASSIVE | net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Service response time | - |
ZABBIX_PASSIVE | net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
RabbitMQ | RabbitMQ: Get process data | The summary metrics aggregated by a process {#NAME}. |
DEPENDENT | rabbitmq.proc.get[{#NAME}] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Number of running processes | The number of running processes {#NAME}. |
DEPENDENT | rabbitmq.proc.num[{#NAME}] Preprocessing: - JSONPATH: ⛔️ON_FAIL: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Memory usage (rss) | The summary of resident set size memory used by a process {#NAME} expressed in bytes. |
DEPENDENT | rabbitmq.proc.rss[{#NAME}] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Memory usage (vsize) | The summary of virtual memory used by a process {#NAME} expressed in bytes. |
DEPENDENT | rabbitmq.proc.vmem[{#NAME}] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Memory usage, % | The percentage of real memory used by a process {#NAME}. |
DEPENDENT | rabbitmq.proc.pmem[{#NAME}] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: CPU utilization | The percentage of the CPU utilization by a process {#NAME}. |
ZABBIX_PASSIVE | proc.cpu.util[{#NAME}] |
RabbitMQ | RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON} | It responds with a status code |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON} | 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 |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON} | It responds with It responds with a status code |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} | 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 |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON} | 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 |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck{#SINGLETON} | 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. |
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: - JSONPATH: - BOOL_TO_DECIMAL ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics |
DEPENDENT | rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages | The count of total messages in the queue. |
DEPENDENT | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages per second | The count of total messages per second in the queue. |
DEPENDENT | rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Consumers | The number of consumers. |
DEPENDENT | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Memory | The 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 | The 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 | The number of messages per second ready to be delivered to clients. |
DEPENDENT | rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged | The 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 | The number of messages per second delivered to clients but not yet acknowledged. |
DEPENDENT | rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged | The 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 | The number of messages (per second) delivered to clients and acknowledged. |
DEPENDENT | rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered | The count of messages delivered to consumers in acknowledgement mode. |
DEPENDENT | rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second | The count of messages (per second) delivered to consumers in acknowledgement mode. |
DEPENDENT | rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to |
DEPENDENT | rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second | 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 |
DEPENDENT | rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published | The count of published messages. |
DEPENDENT | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published per second | The rate of published messages per second. |
DEPENDENT | rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered | The count of subset of messages in the |
DEPENDENT | rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"] Preprocessing: - JSONPATH: ⛔️ON_FAIL: |
RabbitMQ | RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second | The rate of messages redelivered per second. |
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["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing: - REGEX: |
Zabbix raw items | RabbitMQ: Get queues | The HTTP API endpoint that returns metrics of the 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: |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Version has changed | The RabbitMQ version has changed. Acknowledge (Ack) to close manually. |
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 | For more details see Detecting Network Partitions. |
min(/RabbitMQ node by Zabbix agent/rabbitmq.node.partitions,5m)>0 |
WARNING | |
RabbitMQ: Memory alarm | For more details see Memory Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
AVERAGE | |
RabbitMQ: Free disk space alarm | For more details see Free Disk Space Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 |
AVERAGE | |
RabbitMQ: Host has been restarted | The host 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/rabbitmq.proc.num[{#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 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#NAME}])>0 |
AVERAGE | Manual close: YES |
RabbitMQ: Failed to fetch nodes data | Zabbix has not received any 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 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#NAME}])>0 |
WARNING | Manual close: YES Depends on: - RabbitMQ: Process is not running |
RabbitMQ: Node is not running | The RabbitMQ node is not running. |
max(/RabbitMQ node by Zabbix agent/rabbitmq.node.running,5m)=0 and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#NAME}])>0 |
AVERAGE | Depends on: - RabbitMQ: Service is down |
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} and last(/RabbitMQ node by Zabbix agent/rabbitmq.proc.num[{#NAME}])>0 |
WARNING | Manual close: YES Depends on: - RabbitMQ: Service is down |
RabbitMQ: There are active alarms in the node | It checks the active alarms in the nodes via API. This is the default API endpoint path: 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 | It checks if there are valid TLS certificates expiring in the next month. This is the default API endpoint path: 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 | It checks if there are not running virtual hosts via API. This is the default API endpoint path: 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. | 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://{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. | 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://{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 | For more details see 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 |
Feedback
Please report any issues with the template at https://support.zabbix.com.
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/6.0
RabbitMQ cluster by Zabbix agent
Overview
This template is developed to monitor the messaging broker RabbitMQ by Zabbix that works without any external scripts. Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The template RabbitMQ Cluster
— collects metrics by polling RabbitMQ management plugin with Zabbix agent.
Requirements
Zabbix version: 6.0 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.API.CLUSTER_HOST} | The hostname or IP of the API endpoint for the RabbitMQ cluster. |
127.0.0.1 |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.LLD.FILTER.EXCHANGE.MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.EXCHANGE.NOT_MATCHES} | This macro is used in the discovery of exchanges. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Get overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
RabbitMQ: Get exchanges | The HTTP API endpoint that returns exchanges metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/exchanges"] Preprocessing
|
RabbitMQ: Connections total | The total number of connections. |
Dependent item | rabbitmq.overview.object_totals.connections Preprocessing
|
RabbitMQ: Channels total | The total number of channels. |
Dependent item | rabbitmq.overview.object_totals.channels Preprocessing
|
RabbitMQ: Queues total | The total number of queues. |
Dependent item | rabbitmq.overview.object_totals.queues Preprocessing
|
RabbitMQ: Consumers total | The total number of consumers. |
Dependent item | rabbitmq.overview.object_totals.consumers Preprocessing
|
RabbitMQ: Exchanges total | The total number of exchanges. |
Dependent item | rabbitmq.overview.object_totals.exchanges Preprocessing
|
RabbitMQ: Messages total | The total number of messages (ready, plus unacknowledged). |
Dependent item | rabbitmq.overview.queue_totals.messages Preprocessing
|
RabbitMQ: Messages ready for delivery | The number of messages ready for delivery. |
Dependent item | rabbitmq.overview.queue_totals.messages.ready Preprocessing
|
RabbitMQ: Messages unacknowledged | The number of unacknowledged messages. |
Dependent item | rabbitmq.overview.queue_totals.messages.unacknowledged Preprocessing
|
RabbitMQ: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack Preprocessing
|
RabbitMQ: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.overview.messages.ack.rate Preprocessing
|
RabbitMQ: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.overview.messages.confirm Preprocessing
|
RabbitMQ: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.overview.messages.confirm.rate Preprocessing
|
RabbitMQ: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.overview.messages.deliver_get Preprocessing
|
RabbitMQ: Messages delivered per second | 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 |
Dependent item | rabbitmq.overview.messages.deliver_get.rate Preprocessing
|
RabbitMQ: Messages published | The count of published messages. |
Dependent item | rabbitmq.overview.messages.publish Preprocessing
|
RabbitMQ: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.overview.messages.publish.rate Preprocessing
|
RabbitMQ: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in Preprocessing
|
RabbitMQ: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.overview.messages.publish_in.rate Preprocessing
|
RabbitMQ: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out Preprocessing
|
RabbitMQ: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.overview.messages.publish_out.rate Preprocessing
|
RabbitMQ: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable Preprocessing
|
RabbitMQ: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.overview.messages.return_unroutable.rate Preprocessing
|
RabbitMQ: Messages returned redeliver | The count of subset of messages in the |
Dependent item | rabbitmq.overview.messages.redeliver Preprocessing
|
RabbitMQ: Messages returned redeliver per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.overview.messages.redeliver.rate Preprocessing
|
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Failed to fetch overview data | Zabbix has not received any 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 |
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Healthcheck: alarms in effect in the cluster{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: There are active alarms in the cluster | This is the default API endpoint path: 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 |
LLD rule Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Exchanges discovery | The metrics for an individual exchange. |
Dependent item | rabbitmq.exchanges.discovery Preprocessing
|
Item prototypes for Exchanges discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#EXCHANGE}][{#TYPE}] exchanges metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages acknowledged per second | The rate of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.exchange.messages.ack.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed | The count of confirmed messages. |
Dependent item | rabbitmq.exchange.messages.confirm["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages confirmed per second | The rate of messages confirmed per second. |
Dependent item | rabbitmq.exchange.messages.confirm.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.exchange.messages.deliver_get["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages delivered per second | 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 |
Dependent item | rabbitmq.exchange.messages.deliver_get.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.exchange.messages.publish["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages published per second | The rate of messages published per second. |
Dependent item | rabbitmq.exchange.messages.publish.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in | The count of messages published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_in per second | The rate of messages (per second) published from the channels into this overview. |
Dependent item | rabbitmq.exchange.messages.publish_in.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out | The count of messages published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages publish_out per second | The rate of messages (per second) published from this overview into queues. |
Dependent item | rabbitmq.exchange.messages.publish_out.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable | The count of messages returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages returned unroutable per second | The rate of messages (per second) returned to a publisher as unroutable. |
Dependent item | rabbitmq.exchange.messages.return_unroutable.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange [{#VHOST}][{#EXCHANGE}][{#TYPE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.exchange.messages.redeliver["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ: Exchange {#VHOST}/{#EXCHANGE}/{#TYPE}: Messages redelivered per second | The rate of subset of messages (per second) in the |
Dependent item | rabbitmq.exchange.messages.redeliver.rate["{#VHOST}/{#EXCHANGE}/{#TYPE}"] Preprocessing
|
RabbitMQ node by Zabbix agent
Overview
This template is developed to monitor RabbitMQ by Zabbix that works without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.
The 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 statistics, such as CPU usage, memory usage, and whether the process is running or not.
Requirements
Zabbix version: 6.0 and higher.
Tested versions
This template has been tested on:
- RabbitMQ 3.5.7, 3.7.7, 3.7.17, 3.7.18, 3.8.5, 3.8.12
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
Enable the RabbitMQ management plugin. See RabbitMQ documentation for the instructions.
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
A login name and password are also supported in macros functions:
- {$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.
Macros used
Name | Description | Default |
---|---|---|
{$RABBITMQ.API.USER} | zbx_monitor |
|
{$RABBITMQ.API.PASSWORD} | zabbix |
|
{$RABBITMQ.CLUSTER.NAME} | The name of the RabbitMQ cluster. |
rabbit |
{$RABBITMQ.API.PORT} | The port of the RabbitMQ API endpoint. |
15672 |
{$RABBITMQ.API.SCHEME} | The request scheme, which may be HTTP or HTTPS. |
http |
{$RABBITMQ.API.HOST} | The hostname or IP of the API endpoint for the RabbitMQ. |
127.0.0.1 |
{$RABBITMQ.PROCESS_NAME} | The name of the RabbitMQ server process. |
beam.smp |
{$RABBITMQ.LLD.FILTER.QUEUE.MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
.* |
{$RABBITMQ.LLD.FILTER.QUEUE.NOT_MATCHES} | This macro is used in the discovery of queues. It can be overridden at host level or its linked template level. |
CHANGE_IF_NEEDED |
{$RABBITMQ.RESPONSE_TIME.MAX.WARN} | The maximum response time by the RabbitMQ expressed in seconds for a trigger expression. |
10 |
{$RABBITMQ.MESSAGES.MAX.WARN} | The maximum number of messages in the queue for a trigger expression. |
1000 |
Items
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Service ping | Zabbix agent | net.tcp.service["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing
|
|
RabbitMQ: Number of running processes | Zabbix agent | proc.num["{$RABBITMQ.PROCESS_NAME}"] | |
RabbitMQ: Get node overview | The HTTP API endpoint that returns cluster-wide metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/overview"] Preprocessing
|
RabbitMQ: Get nodes | The HTTP API endpoint that returns metrics of the nodes. |
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"] Preprocessing
|
RabbitMQ: Get queues | The HTTP API endpoint that returns metrics of the queues metrics. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/queues"] Preprocessing
|
RabbitMQ: Management plugin version | The version of the management plugin in use. |
Dependent item | rabbitmq.node.overview.management_version Preprocessing
|
RabbitMQ: RabbitMQ version | The version of the RabbitMQ on the node, which processed this request. |
Dependent item | rabbitmq.node.overview.rabbitmq_version Preprocessing
|
RabbitMQ: Used file descriptors | The descriptors of the used file. |
Dependent item | rabbitmq.node.fd_used Preprocessing
|
RabbitMQ: Free disk space | The current free disk space. |
Dependent item | rabbitmq.node.disk_free Preprocessing
|
RabbitMQ: Memory used | The memory usage expressed in bytes. |
Dependent item | rabbitmq.node.mem_used Preprocessing
|
RabbitMQ: Memory limit | The memory usage with high watermark properties expressed in bytes. |
Dependent item | rabbitmq.node.mem_limit Preprocessing
|
RabbitMQ: Disk free limit | The free space limit of a disk expressed in bytes. |
Dependent item | rabbitmq.node.disk_free_limit Preprocessing
|
RabbitMQ: Runtime run queue | The average number of Erlang processes waiting to run. |
Dependent item | rabbitmq.node.run_queue Preprocessing
|
RabbitMQ: Sockets used | The number of file descriptors used as sockets. |
Dependent item | rabbitmq.node.sockets_used Preprocessing
|
RabbitMQ: Sockets available | The file descriptors available for use as sockets. |
Dependent item | rabbitmq.node.sockets_total Preprocessing
|
RabbitMQ: Number of network partitions | The number of network partitions, which this node "sees". |
Dependent item | rabbitmq.node.partitions Preprocessing
|
RabbitMQ: Is running | It "sees" whether the node is running or not. |
Dependent item | rabbitmq.node.running Preprocessing
|
RabbitMQ: Memory alarm | It checks whether the host has a memory alarm or not. |
Dependent item | rabbitmq.node.mem_alarm Preprocessing
|
RabbitMQ: Disk free alarm | It checks whether the node has a disk alarm or not. |
Dependent item | rabbitmq.node.disk_free_alarm Preprocessing
|
RabbitMQ: Uptime | Uptime expressed in milliseconds. |
Dependent item | rabbitmq.node.uptime Preprocessing
|
RabbitMQ: Memory usage (rss) | Resident set size memory used by process in bytes. |
Zabbix agent | proc.mem["{$RABBITMQ.PROCESS_NAME}",,,,rss] |
RabbitMQ: Memory usage (vsize) | Virtual memory size used by process in bytes. |
Zabbix agent | proc.mem["{$RABBITMQ.PROCESS_NAME}",,,,vsize] |
RabbitMQ: CPU utilization | Process CPU utilization percentage. |
Zabbix agent | proc.cpu.util["{$RABBITMQ.PROCESS_NAME}"] |
RabbitMQ: Service response time | Zabbix agent | net.tcp.service.perf["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
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 | last(/RabbitMQ node by Zabbix agent/proc.num["{$RABBITMQ.PROCESS_NAME}"])=0 |
High | ||
RabbitMQ: Failed to fetch nodes data | Zabbix has not received any 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: Version has changed | RabbitMQ version has changed. Acknowledge to close the problem manually. |
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 | For more details see Detecting Network Partitions. |
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: Memory alarm | For more details see Memory Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
Average | |
RabbitMQ: Free disk space alarm | For more details see Free Disk Space Alarms. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.disk_free_alarm)=1 |
Average | |
RabbitMQ: Host has been restarted | Uptime is less than 10 minutes. |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.uptime)<10m |
Info | Manual close: Yes |
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:
|
LLD rule Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.10+ discovery | Specific metrics for the versions: up to and including 3.8.10. |
Dependent item | rabbitmq.healthcheck.v3810.discovery Preprocessing
|
Item prototypes for Health Check 3.8.10+ discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Healthcheck: local alarms in effect on this node{#SINGLETON} | It responds with a status code Otherwise, it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: expiration date on the certificates{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: virtual hosts on this node{#SINGLETON} | It responds with It responds with a status code Otherwise it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: classic mirrored queues without synchronized mirrors online{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
RabbitMQ: Healthcheck: queues with minimum online quorum{#SINGLETON} | 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 Otherwise, it responds with a status code |
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}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.10+ discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: There are active alarms in the node | It checks the active alarms in the nodes via API. This is the default API endpoint path: 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 | It checks if there are valid TLS certificates expiring in the next month. This is the default API endpoint path: 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 | It checks if there are not running virtual hosts via API. This is the default API endpoint path: 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. | 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://{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. | 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://{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 |
LLD rule Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Health Check 3.8.9- discovery | Specific metrics for the versions: up to and including 3.8.4. |
Dependent item | rabbitmq.healthcheck.v389.discovery Preprocessing
|
Item prototypes for Health Check 3.8.9- discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Healthcheck{#SINGLETON} | 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. |
Zabbix agent | web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"] Preprocessing
|
Trigger prototypes for Health Check 3.8.9- discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Node healthcheck failed | For more details see 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 |
LLD rule Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
Queues discovery | The metrics for an individual queue. |
Dependent item | rabbitmq.queues.discovery Preprocessing
|
Item prototypes for Queues discovery
Name | Description | Type | Key and additional info |
---|---|---|---|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Get data | The HTTP API endpoint that returns [{#VHOST}][{#QUEUE}] queue metrics |
Dependent item | rabbitmq.get_exchanges["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages total | The count of total messages in the queue. |
Dependent item | rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages per second | The count of total messages per second in the queue. |
Dependent item | rabbitmq.queue.messages.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Consumers | The number of consumers. |
Dependent item | rabbitmq.queue.consumers["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Memory | The bytes of memory consumed by the Erlang process associated with the queue, including stack, heap and internal structures. |
Dependent item | rabbitmq.queue.memory["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages ready | The number of messages ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages ready per second | The number of messages per second ready to be delivered to clients. |
Dependent item | rabbitmq.queue.messages_ready.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged | The number of messages delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages unacknowledged per second | The number of messages per second delivered to clients but not yet acknowledged. |
Dependent item | rabbitmq.queue.messages_unacknowledged.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged | The number of messages delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages acknowledged per second | The number of messages (per second) delivered to clients and acknowledged. |
Dependent item | rabbitmq.queue.messages.ack.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered | The count of messages delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages delivered per second | The count of messages (per second) delivered to consumers in acknowledgement mode. |
Dependent item | rabbitmq.queue.messages.deliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered | The sum of messages delivered to consumers: in acknowledgement mode and in no-acknowledgement mode; delivered to consumers in response to the |
Dependent item | rabbitmq.queue.messages.deliver_get["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Sum of messages delivered per second | 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 |
Dependent item | rabbitmq.queue.messages.deliver_get.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published | The count of published messages. |
Dependent item | rabbitmq.queue.messages.publish["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages published per second | The rate of published messages per second. |
Dependent item | rabbitmq.queue.messages.publish.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered | The count of subset of messages in the |
Dependent item | rabbitmq.queue.messages.redeliver["{#VHOST}/{#QUEUE}"] Preprocessing
|
RabbitMQ: Queue [{#VHOST}][{#QUEUE}]: Messages redelivered per second | The rate of messages redelivered per second. |
Dependent item | rabbitmq.queue.messages.redeliver.rate["{#VHOST}/{#QUEUE}"] Preprocessing
|
Trigger prototypes for Queues discovery
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
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 |
Feedback
Please report any issues with the template at https://support.zabbix.com
You can also provide feedback, discuss the template, or ask for help at ZABBIX forums
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/5.4
RabbitMQ cluster by Zabbix agent
Overview
For Zabbix version: 5.4 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.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 - {#EXCHANGE} NOT_MATCHES_REGEX |
Health Check 3.8.10+ discovery | Version 3.8.10+ specific metrics |
DEPENDENT | rabbitmq.healthcheck.v3810.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
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: 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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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["{$RABBITMQ.API.SCHEME}://{$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["{$RABBITMQ.API.SCHEME}://{$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: 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 (or no data for 30m) | 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: 5.4 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.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: - JAVASCRIPT: |
Health Check 3.8.9- discovery | Specific metrics up to and including version 3.8.4 |
DEPENDENT | rabbitmq.healthcheck.v389.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
Queues discovery | Individual queue metrics |
DEPENDENT | rabbitmq.queues.discovery Filter: AND- {#QUEUE} MATCHES_REGEX - {#QUEUE} NOT_MATCHES_REGEX - {#NODE} MATCHES_REGEX |
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: - 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["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
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 the 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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck: virtual hosts on the 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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
RabbitMQ | RabbitMQ: Healthcheck: classic mirrored queues without synchronised mirrors online{#SINGLETON} | Checks if there are classic mirrored queues without synchronised 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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JSONPATH: - BOOL_TO_DECIMAL ⛔️ON_FAIL: |
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}]: 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: ⛔️ON_FAIL: |
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: ⛔️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["{$RABBITMQ.API.SCHEME}://{$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["{$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: |
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: |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
RabbitMQ: Version has changed (new version: {ITEM.VALUE}) | 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 (more than 0 for 5m) | 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 (Memory usage threshold has been reached) | https://www.rabbitmq.com/memory.html |
last(/RabbitMQ node by Zabbix agent/rabbitmq.node.mem_alarm)=1 |
AVERAGE | |
RabbitMQ: Free disk space alarm (Free space threshold has been reached) | 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 < 10m) | 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 (over {$RABBITMQ.RESPONSE_TIME.MAX.WARN}s for 5m) | - |
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 the 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 the 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}] (over {$RABBITMQ.MESSAGES.MAX.WARN:"{#QUEUE}"} for 5m) | - |
min(/RabbitMQ node by Zabbix agent/rabbitmq.queue.messages["{#VHOST}/{#QUEUE}"],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. |
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.
Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/rabbitmq_agent?at=release/5.0
RabbitMQ cluster by Zabbix agent
Overview
For Zabbix version: 5.0 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 |
---|---|---|---|
Health Check 3.8.10+ discovery | Version 3.8.10+ specific metrics |
DEPENDENT | rabbitmq.healthcheck.v3810.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
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: 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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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["{$RABBITMQ.API.SCHEME}://{$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["{$RABBITMQ.API.SCHEME}://{$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: There are active alarms in the cluster | http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html |
{TEMPLATE_NAME:web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.CLUSTER_HOST}:{$RABBITMQ.API.PORT}/api/health/checks/alarms{#SINGLETON}"].last()}=0 |
AVERAGE | |
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["{$RABBITMQ.API.SCHEME}://{$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 a feedback, discuss the template or ask for help with it at ZABBIX forums.
RabbitMQ node by Zabbix agent
Overview
For Zabbix version: 5.0 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: - JAVASCRIPT: |
Health Check 3.8.9- discovery | Specific metrics up to and including version 3.8.4 |
DEPENDENT | rabbitmq.healthcheck.v389.discovery Preprocessing: - JSONPATH: - JAVASCRIPT: |
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: 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["{$RABBITMQ.API.SCHEME}","{$RABBITMQ.API.HOST}","{$RABBITMQ.API.PORT}"] Preprocessing: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JAVASCRIPT: - DISCARD_UNCHANGED_HEARTBEAT: |
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: - JSONPATH: - BOOL_TO_DECIMAL |
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}]: 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: ⛔️ON_FAIL: |
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: ⛔️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["{$RABBITMQ.API.SCHEME}://{$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["{$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: |
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: |
Triggers
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
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) | https://www.rabbitmq.com/partitions.html#detecting |
{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) | https://www.rabbitmq.com/memory.html |
{TEMPLATE_NAME:rabbitmq.node.mem_alarm.last()}=1 |
AVERAGE | |
RabbitMQ: Free disk space alarm (Free space threshold has been reached) | https://www.rabbitmq.com/disk-alarms.html |
{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["{$RABBITMQ.API.SCHEME}","{$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["{$RABBITMQ.API.SCHEME}","{$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: There are active alarms in the node | http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html |
{TEMPLATE_NAME:web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/local-alarms{#SINGLETON}"].last()}=0 |
AVERAGE | |
RabbitMQ: There are valid TLS certificates expiring in the next month | http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html |
{TEMPLATE_NAME: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}"].last()}=0 |
AVERAGE | |
RabbitMQ: There are not running virtual hosts | http://{HOST.CONN}:{$RABBITMQ.API.PORT}/api/index.html |
{TEMPLATE_NAME:web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/health/checks/virtual-hosts{#SINGLETON}"].last()}=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 |
{TEMPLATE_NAME: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}"].last()}=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 |
{TEMPLATE_NAME: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}"].last()}=0 |
AVERAGE | |
RabbitMQ: Node healthcheck failed | https://www.rabbitmq.com/monitoring.html#health-checks |
{TEMPLATE_NAME:web.page.get["{$RABBITMQ.API.SCHEME}://{$RABBITMQ.API.USER}:{$RABBITMQ.API.PASSWORD}@{$RABBITMQ.API.HOST}:{$RABBITMQ.API.PORT}/api/healthchecks/node{#SINGLETON}"].last()}=0 |
AVERAGE | |
RabbitMQ: Too many messages in queue [{#VHOST}][{#QUEUE}] (over {$RABBITMQ.MESSAGES.MAX.WARN:"{#QUEUE}"} 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["{$RABBITMQ.API.SCHEME}://{$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 a feedback, discuss the template or ask for help with it at ZABBIX forums.