RabbitMQ

Topics marked with * relate to features available only in vFabric Hyperic.

RabbitMQ Plugin Overview

Hyperic's RabbitMQ plugin manages RabbitMQ brokers, the virtual hosts within a broker, and RabbitMQ exchanges, queues, connections, and channels. The plugin can discover and manage multiple RabbitMQ nodes on the same platform as the Hyperic Agent.

The indented list below illustrates the hierarchy of Hyperic resource types that map to RabbitMQ entities. Each resource type is described below in RabbitMQ Resources and the Hyperic Inventory Model.

 
RabbitMQ 
RabbitMQ Exchange 
RabbitMQ Queue 
RabbitMQ VirtualHost 
RabbitMQ Connection 
RabbitMQ Channel 

Supported Versions and Requirements

The RabbitMQ plugin supports RabbitMQ 2.x and later running on Linux and Windows platforms, and requires v4.6 or later of the Hyperic Agent and the Hyperic Server.

This version of the plugin requires that RabbitMQ has the rabbitmq-management plugin installed and running. For more information see http://www.rabbitmq.com/management.html.

RabbitMQ Resources and the Hyperic Inventory Model

The table below lists the resource types in Hyperic that map to managed RabbitMQ entities. The right column indicates the inventory level for each type in the Hyperic inventory model.

Hyperic Resource Type

Description

Hyperic Inventory Type

RabbitMQ

A RabbitMQ broker, also referred to as a node, is an implementation of an Advanced Message Queuing Protocol (AMQP) broker. It is a configurable entity that listens for messages on a TCP/IP port.

A broker is represented in Hyperic as a "RabbitMQ" server. 

server

RabbitMQ Exchange

A RabbitMQ exchange is a resource that routes messages to queues. 

An exchange is represented in Hyperic as a "RabbitMQ Exchange" service.

service

RabbitMQ Queue

A queue is a resource that stores and forwards messages to message consumers .

A queue is represented in Hyperic as a "RabbitMQ Queue" service.

service

RabbitMQ VirtualHost

A virtual host serves as a name-spacing mechanism for queues and exchanges on a broker. A broker always has a default virtual host identified by a forward slash character ( /). Additional virtual hosts can be explicitly configured on a broker. The same queue (or exchange) name in two virtual hosts on denotes a different resource in each virtual host.

RabbitMQ's first level of access control is enforced at the virtual host level; if a user attempts to connect to a virtual host to which he does not have credentials, the a broker rejects the connection attempt.

A RabbitMQ virtual host is represented in Hyperic as a "RabbitMQ VirtualHost" service.

service

RabbitMQ Connection

A physical connection e.g. using TCP/IP or SCTP. A connection is bound to a user.

service

RabbitMQ Channel

A logical connection that is tied to a connection.

service

Note: For more information about the managed resource hierarchy, see Resources, Resource Types and Inventory Types.

SSL Requirements

To communicate with RabbitMQ over SSL, you must configure a keystore for the agent and manually import the RabbitMQ server's SSL certificate into the agent keystore if the server’s certificate is unverified.

Configuration Instructions

The RabbitMQ plugin can automatically discover and monitor one or more RabbitMQ nodes and associated Rabbit services running on a platform.

You must run the Hyperic Agent on same platform as the RabbitMQ nodes it will manage.

Step 1: Remove Previous RabbitMQ Inventory Resources and Agent Installation

If you use the previous version of the RabbitMQ plugin, you must remove the existing RabbitMQ resources from from inventory and perform a fresh agent install.

If you currently use the RabbitMQ plugin released in Hyperic 4.5.0, the following requirements apply:

  1. Remove the RabbitMQ server resource runs from inventory:

    1. Use Browse > Resource > Servers > RabbitMQ to navigate to the RabbitMQ instance.

    2. Select Delete Server from the Tools menu.

      • The RabbitMQ server and service resources on the platform are removed from inventory.

  2. Stop the Hyperic Agent that runs on the RabbitMQ host.

  3. Uninstall the Hyperic Agent from the RabbitMQ host by deleting the AgentHome directory.

  4. Do a fresh install of the Hyperic Agent, as described in the following step.

Step 2: Install Hyperic Agent

If you have not already done so, install a Hyperic Agent on the RabbitMQ host. See Install an Agent-Only Package in Getting Started with vFabric Hyperic for instructions.

Step 3: Import RabbitMQ Server(s) to Inventory

The Hyperic Agent on a platform automatically discovers each RabbitMQ node running on the platform. After the RabbitMQ node(s) are discovered, the platform appears in the Auto-Discovery portlet of the Hyperic Dashboard, and presents the RabbitMQ nodes as new servers.

Import the platform and the new RabbitMQ server resources.

For more information, see Discover and Import Resources to Inventory.

Step 4: Set Event Tracking Options

The RabbitMQ plugin supports log tracking for the RabbitMQ server resource type.

By default, the plugin tails the standard RabbitMQ node log file, and logs an event for messages of level "ERR".

You can disable log tracking, set a different tracking level, or track messages based on whether they include (or exclude) a specified string. You configure log tracking options on the Monitoring section of the Configuration Properties page for the RabbitMQ server.

For more information, see Set Up Log Tracking for a Resource.

Step 5: Tailor Plugin Monitoring Defaults

You can enable and disable metrics, select indicator metrics, and change the collection interval for a resource type on its Monitoring Defaults page. 

  1. Click the Administration tab.

  2. Click Monitoring Defaults.

  3. Scroll down to the desired RabbitMQ resource type and click Edit Metric Template.

For more information, see& Tailor Metric Collection for a Resource Type.

Step 6: Configure Alert Definitions

Create alert definitions as desired for your managed RabbitMQ components. For more information, see Define an Alert for a Resource.

Resource Types and Management Functions

This section describes the management functions the RabbitMQ plugin performs for Rabbit MQ components.

Auto-Discovery

The plugin auto-discovers the RabbitMQ Server instances on a platform by querying the process table, and then discovers the queues, exchanges, and the virtual hosts for each server instance.

When the plugin detects that a transient service no longer exists in RabbitMQ, the plugin removes the associated Hyperic resource from inventory. Note that the RabbitMQ server must be running for the plugin to detect that previously existing services no longer exist - the plugin will not remove services while the Rabbit node is down.

RabbitMQ Server Properties

Property

Description

Default

resource name

 

Owner

The Hyperic account under which the resource was created.

 

node

RabbitMQ node name (rabbit_X@servername)

 

addr

IP address or hostname RabbitMQ HTTP management API.

localhost

port

Listen port for the RabbitMQ HTTP management API.

55672

username

RabbitMQ admin username

guest

password

RabbitMQ admin username

guest

nodurable

Discover non-durable objects, If checked, all nondurable objects Channels, Queue, etc.) will be auto-discovered.

false

autosycn

Auto-Delete Unavailable Objects. If checked, all unavailable objects (Channels, Queue, etc.) will be auto-delete (except for idle objects, which shows as paused.)

false

RabbitMQ Exchange Service Properties

Property

Description

resource name

 

Owner

The Hyperic user account under which the resource was created.

vhost

rabbit node-vhost name

exchange

exchange name

Exchange Type

Values include:

  • fanout

  • direct 

  • topic

  • headers

Durable

Whether or not the exchange (and the routing data it contains) will survive a server restart.

Auto-Delete

Whether or not the exchange is removed when all queues have stopped using it.

RabbitMQ Queue Service Properties

Property

Description

resource name

Owner

The Hyperic account under which the resource was created.

durable

Whether or not the queue will survive a server restart.

vhost

rabbit node-vhost name

queue

 

RabbitMQ VirtualHost Service Properties

Property

Description

resource name

 

Owner

The Hyperic user account under which the resource was created.

vhost

rabbit node-vhost name

name

Virtual Host

users

Users

RabbitMQ Connection Service Properties

Property

Description

resource name

 

Owner

The Hyperic account under which the resource was created.

connection

connection name

authMechanism Authentication

protocol

Protocol

user

User

timeout

Timeout

ssl

SSL

RabbitMQ Channel Service Properties

Property

Description

resource name

 

Description

 

Owner

The Hyperic user account under which the resource was created.

vhost

rabbit node-vhost name

channel

channelname

user

User

confirm

Confirm

transactional Transactional

Metric Collection

The following sections define the metrics for each RabbitMQ resource type.

RabbitMQ Metrics

Name

Alias

Units

Category

Default On

Default Interval

Availability

Availability

percentage

AVAILABILITY

true

5 min

Messages

Messages

none

UTILIZATION

true

5 min

Messages Ready

MessagesReady

none

UTILIZATION

true

5 min

Messages Unacknowledged

MessagesUnacknowledged

none

UTILIZATION

true

5 min

Messages Publish /s

MessagesPublish/s

none

UTILIZATION

true

5 min

Messages Confirm /s

MessagesConfirm/s

none

UTILIZATION

true

5 min

Messages Deliver /s

MessagesDeliver/s

none

UTILIZATION

true

5 min

Messages Acknowledge /s

MessagesAcknowledge/s

none

UTILIZATION

true

5 min

Messages Get /s

MessagesGet/s

none

UTILIZATION

true

5 min

Messages Get (noack) /s

MessagesGet(noack)/s

none

UTILIZATION

true

5 min

Messages Deliver (noack) /s

MessagesDeliver(noack)/s

none

UTILIZATION

true

5 min

Messages Deliver+Get /s

MessagesDeliver+Get/s

none

UTILIZATION

true

5 min

Memory watermark

Memorywatermark

none

UTILIZATION

true

5 min

Erlang Processes used

ErlangProcessesused

none

UTILIZATION

false

5 min

Erlang Processes % used

ErlangProcesses%used

percentage

UTILIZATION

true

5 min

Process Open File Descriptors %

ProcessOpenFileDescriptors%

percentage

UTILIZATION

true

5 min

Process Virtual Memory Size

ProcessVirtualMemorySize

B

UTILIZATION

false

5 min

Process Resident Memory Size

ProcessResidentMemorySize

B

UTILIZATION

true

5 min

Process Page Faults

ProcessPageFaults

none

UTILIZATION

false

10 min

Process Page Faults per Minute

ProcessPageFaults1m

none

UTILIZATION

false

10 min

Process Cpu System Time

ProcessCpuSystemTime

ms

UTILIZATION

false

10 min

Process Cpu System Time per Minute

ProcessCpuSystemTime1m

ms

UTILIZATION

false

10 min

Process Cpu User Time

ProcessCpuUserTime

ms

UTILIZATION

false

10 min

Process Cpu User Time per Minute

ProcessCpuUserTime1m

ms

UTILIZATION

false

10 min

Process Cpu Total Time

ProcessCpuTotalTime

ms

UTILIZATION

false

10 min

Process Cpu Total Time per Minute

ProcessCpuTotalTime1m

ms

UTILIZATION

false

10 min

Process Cpu Usage

ProcessCpuUsage

percentage

UTILIZATION

true

5 min

Process Start Time

ProcessStartTime

epoch-millis

AVAILABILITY

false

5 min

Process Open File Descriptors

ProcessOpenFileDescriptors

none

UTILIZATION

false

5 min

Process Threads

ProcessThreads

none

UTILIZATION

false

5 min

Channels

Channels

none

UTILIZATION

true

5 min

Connections

Connections

none

UTILIZATION

true

5 min

RabbitMQ Exchange Metrics

Name

Alias

Units

Category

Default On

Default Interval

Availability

Availability

percentage

AVAILABILITY

true

5 min

IN Messages Publish /s

in_publish_details

none

THROUGHPUT

true

5 min

OUT Messages Publish /s

out_publish_details

none

THROUGHPUT

true

5 min

RabbitMQ Queue Metrics

Name

Alias

Units

Category

Default On

Default Interval

Availability

Availability

percentage

AVAILABILITY

true

10 min

idle Time

idleTime

ms

UTILIZATION

true

30 min

Messages Publish /s

publishDetails

none

UTILIZATION

true

5 min

Messages Confirm /s

confirmDetails

none

UTILIZATION

true

5 min

Messages Deliver /s

deliverDetails

none

UTILIZATION

true

5 min

Messages Acknowledge /s

ackDetails

none

UTILIZATION

true

5 min

Messages Get /s

getDetails

none

UTILIZATION

true

5 min

Messages Get (noack) /s

getNoAckDetails

none

UTILIZATION

true

5 min

Messages Deliver (noack) /s

deliverNoAckDetails

none

UTILIZATION

true

5 min

Messages Deliver+Get /s

deliverGetDetails

none

UTILIZATION

true

5 min

Messages

messages

none

THROUGHPUT

true

5 min

Consumers

consumers

none

UTILIZATION

true

5 min

Transactions

transactions

none

THROUGHPUT

true

5 min

Acks Uncommitted

acksUncommitted

none

THROUGHPUT

true

5 min

Messages Ready

messagesReady

none

THROUGHPUT

true

5 min

Messages Unacknowledged

messagesUnacknowledged

none

THROUGHPUT

true

5 min

Messages Uncommitted

messagesUncommitted

none

THROUGHPUT

true

5 min

Memory

memory

b

UTILIZATION

true

5 min

RabbitMQ VirtualHost Metrics

Name

Alias

Units

Category

Default On

Default Interval

Availability

Availability

percentage

AVAILABILITY

true

5 min

Exchanges

exchangeCount

none

UTILIZATION

true

5 min

Queues

queueCount

none

UTILIZATION

true

5 min

RabbitMQ Connection Metrics

Name

Alias

Units

Category

Default On

Default Interval

Octets Received

octetsReceived

B

THROUGHPUT

true

5 min

Octets Sent

octetsSent

B

THROUGHPUT

true

5 min

Network Packets Received

packetsReceived

B

THROUGHPUT

true

5 min

Network Packets Sent

packetsSent

B

THROUGHPUT

true

5 min

Channels

channelCount

none

UTILIZATION

true

5 min

Pending Sends

pendingSends

none

UTILIZATION

true

5 min

Availability

Availability

percentage

AVAILABILITY

true

5 min

RabbitMQ Channel Metrics

Name

Alias

Units

Category

Default On

Default Interval

Availability

Availability

percentage

AVAILABILITY

true

5 min

Messages Publish /s

publishDetails

none

UTILIZATION

true

5 min

Messages Confirm /s

confirmDetails

none

UTILIZATION

true

5 min

Messages Deliver /s

deliverDetails

none

UTILIZATION

true

5 min

Messages Acknowledge /s

ackDetails

none

UTILIZATION

true

5 min

Messages Get /s

getDetails

none

UTILIZATION

true

5 min

Messages Get (noack) /s

getNoAckDetails

none

UTILIZATION

true

5 min

Messages Deliver (noack) /s

deliverNoAckDetails

none

UTILIZATION

true

5 min

Messages Deliver+Get /s

deliverGetDetails

none

UTILIZATION

true

5 min

idle Time

idleTime

ms

UTILIZATION

true

30 min

Consumers

consumerCount

none

UTILIZATION

true

5 min

Prefetch Count

prefetchCount

B

THROUGHPUT

true

5 min

Acks Uncommitted

acksUncommitted

B

THROUGHPUT

true

5 min

Messages Unacknowledged

messagesUnacknowledged

B

THROUGHPUT

true

5 min