Monitor RabbitMQ using Levitate
Send RabbitMQ metrics to Levitate
Introduction
This document lists step-by-step instructions for setting up monitoring for RabbitMQ using Levitate.
Prerequisites
Create a Levitate cluster by following Getting Started.
Keep the following information handy after creating the cluster:
$levitate_read_url
- Levitate's Read endpoint$levitate_username
- Cluster ID$levitate_password
- Read token created for the cluster
Ensure RabbitMQ is installed and running on each VM. You should have root or administrative access.
Ensure that rabbitmq_prometheus plugin is configured as per its documentation.
Configure Prometheus Agent to Scrape Metrics
Architecture
Setting up Prometheus Agent
Install Prometheus Agent on a central server that can access all VMs running RabbitMQ. This script can be run on the server:
#!/bin/bash
# Function to determine OS architecture
get_architecture() {
architecture=$(uname -m)
case $architecture in
x86_64)
arch="amd64"
;;
aarch64)
arch="arm64"
;;
arm*)
arch="armv7"
;;
*)
echo "Architecture $architecture is not supported by this script."
exit 1
;;
esac
echo $arch
}
# Define version and architecture
VERSION="2.37.0"
ARCH=$(get_architecture)
# Download and install Prometheus Agent
URL="https://github.com/prometheus/prometheus/releases/download/v$VERSION/prometheus-$VERSION.linux-$ARCH.tar.gz"
wget $URL -O prometheus.tar.gz
tar -xzf prometheus.tar.gz
cd prometheus-$VERSION.linux-$ARCH
# Move executables to your PATH
sudo mv prometheus promtool /usr/local/bin/
sudo mkdir /etc/prometheus
sudo mkdir -p /var/lib/prometheus
sudo mv consoles/ console_libraries/ prometheus.yml /etc/prometheus/
# Create a service file for Prometheus
echo "[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=$USER
Restart=on-failure
ExecStart=/usr/local/bin/prometheus \\
--config.file=/etc/prometheus/prometheus.yml \\
--enable-feature=agent
[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/prometheus.service
# Reload systemd to pick up the new service and start Prometheus Agent
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
Configure Scrape Targets
Use either ec2_sd_config
or file_sd_config
to configure scrape targets. The example uses file_sd_config
for simplicity.
Create a file targets.json
and add the following:
Ensure that the targets are the Private IPs of the RabbitMQ cluster or instances.
[
{
"targets": ["rbmq-vm-1:15692", "rbmq-vm-1:15692"],
"labels": {
"job": "rabbitmq"
}
}
]
Configure Levitate Remote Write Credentials into Prometheus Agent
Add the following remote_write configuration to the prometheus.yml file:
echo "remote_write:
- url: "$remote_write_url"
basic_auth:
username: "$remote_write_username"
password: "$remote_write_password"
write_relabel_configs:
- source_labels: [__name__]
regex: 'rabbitmq_(.*)'" | sudo tee -a /etc/prometheus/prometheus.y
Replace remote_write_*
template variables with your Levitate Credentials that can be obtained by following this documentation
Restart Prometheus Agent
Restart Prometheus Agent to apply changes:
sudo systemctl restart prometheus
Verification
- Check Prometheus Agent'
/targets
and/graph
web interfaces to ensure it's scraping the RabbitMQ metrics - Verify that metrics are being received in the remote storage
This script-driven setup automates the deployment and configuration of RabbitMQ monitoring using Prometheus Agent.
Dashboard
Download the latest dashboard from here to visualize the metrics.
Troubleshooting
Please get in touch with us on Discord or Email if you have any questions.