0
0
RabbitMQdevops~5 mins

Log analysis and troubleshooting in RabbitMQ - Commands & Configuration

Choose your learning style9 modes available
Introduction
RabbitMQ logs record what happens inside the message broker. Analyzing these logs helps find and fix problems quickly, like connection issues or message delivery failures.
When RabbitMQ is not starting properly and you need to find the cause.
When messages are not being delivered and you want to check for errors.
When connections from clients are dropping unexpectedly.
When you want to monitor RabbitMQ health and spot warnings early.
When troubleshooting performance issues related to queues or exchanges.
Commands
This command shows the last 50 lines of the main RabbitMQ log file to quickly see recent events and errors.
Terminal
sudo tail -n 50 /var/log/rabbitmq/rabbit@$(hostname).log
Expected OutputExpected
2024-06-01 10:15:23.456 [info] <0.123.0> Starting RabbitMQ 3.11.14 on Erlang 25.3 2024-06-01 10:15:23.789 [warning] <0.456.0> Connection closed unexpectedly from client 192.168.1.10 2024-06-01 10:15:24.012 [error] <0.789.0> Failed to declare queue 'my-queue': already exists with different parameters
-n 50 - Show only the last 50 lines for quick recent log review
This command searches the RabbitMQ log file for lines containing 'error' to find problems quickly.
Terminal
sudo grep 'error' /var/log/rabbitmq/rabbit@$(hostname).log
Expected OutputExpected
2024-06-01 10:15:24.012 [error] <0.789.0> Failed to declare queue 'my-queue': already exists with different parameters 2024-06-01 10:16:00.345 [error] <0.890.0> Channel error on connection <0.1234.0>: not_found - no queue 'unknown-queue'
This command shows the current status of RabbitMQ, including running nodes and memory usage, to help identify if the server is healthy.
Terminal
sudo rabbitmqctl status
Expected OutputExpected
Status of node rabbit@myhost ... [{pid,12345}, {running_applications,[{rabbit,"RabbitMQ","3.11.14"},{os_mon,"CPO CXC 138 46","2.4"}]}, {memory,[{total,12345678},{connection_readers,123456},{connection_writers,123456}]}, {listeners,[{clustering,25672,"::"},{amqp,5672,"0.0.0.0"}]}, {uptime,3600}]
This command restarts the RabbitMQ server to apply fixes or clear transient errors after troubleshooting.
Terminal
sudo systemctl restart rabbitmq-server
Expected OutputExpected
No output (command runs silently)
This command continuously shows new log entries in real time to monitor RabbitMQ behavior after changes or during testing.
Terminal
sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log
Expected OutputExpected
2024-06-01 10:20:00.123 [info] <0.234.0> Server started successfully 2024-06-01 10:20:05.456 [info] <0.345.0> New connection from client 192.168.1.10
-f - Follow the log file live to see new entries as they happen
Key Concept

If you remember nothing else from this pattern, remember: RabbitMQ logs are your first and best tool to find what went wrong and when.

Common Mistakes
Trying to read logs without sudo or proper permissions
RabbitMQ log files are usually owned by root or rabbitmq user, so you get permission denied errors.
Use sudo to read or follow the log files to get access.
Ignoring warnings and only searching for 'error' in logs
Warnings often indicate problems that can lead to errors if not fixed early.
Check both warnings and errors in the logs to catch issues early.
Restarting RabbitMQ without checking logs first
Restarting blindly can cause downtime without understanding the root cause.
Always check logs to diagnose the problem before restarting the service.
Summary
Use 'tail' to quickly view recent RabbitMQ log entries for troubleshooting.
Use 'grep' to filter logs for errors and warnings to find issues faster.
Check RabbitMQ status with 'rabbitmqctl status' to verify server health.
Restart RabbitMQ only after analyzing logs to avoid unnecessary downtime.
Use 'tail -f' to monitor logs live during testing or after fixes.