RabbitMQ Monitoring Extension

Title

This extension works only with the standalone machine agent.

Use Case

RabbitMQ is open source message broker software that implements the Advanced Message Queuing Protocol (AMQP). It is written in the Erlang programming language. The RabbitMQ Monitoring extension collects metrics from an RabbitMQ messaging server and uploads them to the AppDynamics Controller.

Installation

The RabbitMQ Management Plugin must be enabled. Please refer to RabbitMQ Management API for more details.

  1. Download and unzip the RabbitMQMonitor.zip to the "<MachineAgent_Dir>/monitors" directory
  2. Edit the file monitor.xml located in <MachineAgent_Dir>/monitors/RabbitMQMonitor and update the RabbitMQ server details.
  3. <argument name="host" is-required="true" default-value="localhost"/>
    <argument name="port" is-required="true" default-value="15672"/>
    <argument name="useSSL" is-required="true" default-value="false"/>
    <argument name="username" is-required="true" default-value="guest"/>
    <argument name="password" is-required="true" default-value="guest"/>
    <argument name="metricPrefix" is-required="true" default-value="Custom Metrics|RabbitMQ|"/> 
  4. Restart the Machine Agent

Queue Groups Configuration(Optional)

The queue can be grouped and the metrics for the group of queues can be collected with thies feature. The grouping ca be used for a scenario where there was a large number of Queues(20+) and they were very short lived (hours to couple of days). Another use case if for example, there are 10 queues working on 'order placement' and 5 queues working on 'user notification', then you can create a group for 'order placement' and get the collective stats.

This will create a new tree node named "Queue Groups" as a sibling of "Queues". There is a file named "monitors/RabbitMQMonitor/config.yml" where you add the queue configuration. Please take a look at config.yml for detailed information.

Password Encryption Support

To avoid setting the clear text password in the monitor.xml. Please follow the process to encrypt the password and set the encrypted password and the key in the monitor.xml
1. Download the util jar to encrypt the password from here 
2. Encrypt password from the commandline
java -cp "appd-exts-commons-1.1.2.jar" com.appdynamics.extensions.crypto.Encryptor myKey myPassword
3. Add the properties in the monitor.xml. Substitute the default-value
<argument name="password-encrypted" is-required="true" default-value="<ENCRYPTED_PASSWORD>"/>
<argument name="encryption-key" is-required="false" default-value="myKey"/>

Metrics

By default, the path of the metrics will be

Application Infrastructure Performance | <Tier> | Custom Metrics | RabbitMQ

 The following metrics are reported to the controller. The path is relative to Application Infrastructure Performance|<Tier>|Custom Metrics|RabbitMQ.

Metric PathDescription
Nodes/{node}/Erlang ProcessesThe count of Erlang Processes running in the node
Nodes/{node}/File DescriptorsThe count of open file descriptors in the node
Nodes/{node}/Memory(MB)The memory in MB used by the node
Nodes/{node}/SocketsThe count of open sockets in the node
Nodes/{node}/Channels/CountThe count of channels in the node
Nodes/{node}/Channels/BlockedThe count of BLOCKED channels in the node
Nodes/{node}/Messages/DeliveredThe count of messages 'deliver' in the node
Nodes/{node}/Messages/AcknowledgedThe count of messages 'ack' in the node
Nodes/{node}/Messages/Got No-AckThe count of messages with the status 'get_no_ack' in the node
Nodes/{node}/Messages/Delivered No-AckThe count of messages with the status 'deliver_no_ack' in the node
Nodes/{node}/Messages/RedeliveredThe count of messages with the status 'redeliver' in the node
Nodes/{node}/Messages/PublishedThe count of messages with the status 'publish' in the node
Nodes/{node}/Messages/AvailableThe count of messages with the status 'messages_ready' in the node
Nodes/{node}/Messages/Pending AcknowledgementsThe count of messages with the status 'messages_unacknowledged' in the node
Nodes/{node}/Consumers/CountThe count of consumers for the node
Queues/{vHost}/{qName}/ConsumersThe consumer count of a queue in a host
Queues/{vHost}/{qName}/Messages/AcknowledgedThe count of messages with the status 'ack' in the host and the given queue
Queues/{vHost}/{qName}/Messages/AvailableThe count of messages with the status 'messages_ready' in the host and the given queue
Queues/{vHost}/{qName}/Messages/Delivered (Total)The count of messages with the status 'deliver_get' in the host and the given queue
Queues/{vHost}/{qName}/Messages/DeliveredThe count of messages with the status 'deliver' in the host and the given queue
Queues/{vHost}/{qName}/Messages/Delivered No-AckThe count of messages with the status 'deliver_no_ack' in the host and the given queue
Queues/{vHost}/{qName}/Messages/GotThe count of messages with the status 'get' in the host and the given queue
Queues/{vHost}/{qName}/Messages/Got No-AckThe count of messages with the status 'get_no_ack' in the host and the given queue
Queues/{vHost}/{qName}/Messages/PublishedThe count of messages with the status 'publish' in the host and the given queue
Queues/{vHost}/{qName}/Messages/RedeliveredThe count of messages with the status 'redeliver' in the host and the given queue
Queues/{vHost}/{qName}/Messages/Pending AcknowledgementsThe count of messages with the status 'messages_unacknowledged' in the host and the given queue
Summary/ChannelsThe total number of channels registered in the server
Summary/ConsumersThe total number of Consumers registered in the server
Summary/Messages/AvailableThe total count of messages with the status 'messages_ready' in the RabbitMQ server
Summary/Messages/Delivered (Total)The total count of messages with the status 'deliver_get' in the RabbitMQ server
Summary/Messages/PublishedThe total count of messages with the status 'publish' in the RabbitMQ server
Summary/Messages/RedeliveredThe total count of messages with the status 'redeliver' in the RabbitMQ server
Summary/Messages/Pending AcknowledgementsThe total count of messages with the status 'messages_unacknowledged' in the RabbitMQ server
Summary/QueuesThe count of queues in the RabbitMQ Server

Custom Dashboard

RabbitMQCustomDashboard.png

Contributing

Always feel free to fork and contribute any changes directly via GitHub.

Support

For any support questions, please contact help@appdynamics.com.

Compatibility

Version1.1.4
Machine Agent Compatibility4.0+
RabbitMQ Compatibility3.2.0+
Last Update4/21/2014

Releases

  • 1.0.0: Initial Version
  • 1.0.4: Queue Grouping by Regex
  • 1.0.5: SSL support
  • 1.0.6: Added the Encryption support 
  • 1.1.0: Embedded http library to support MachineAgent 4.0
  • 1.1.1: Added the cluster metrics and Per Minute Metrics for Messages
  • 1.1.4: Cluster Metrics
  • 1.1.5: Configurable socket and connection timeout
Attachments: