sd-ironmq

Server Density plugin to monitor IronMQs


License
MIT
Install
pip install sd-ironmq==0.1.2

Documentation

sd-ironmq

A plugin for the Server Density agent that monitors IronMQ queues using API version 3.

PyPI page | GitHub project

For details how to write one, read the official docs on plugins. Or find more official plugins.

Features

  • Monitors all queues of the given projects.
  • Recorded metrics:
    • size (key: <projectid/-name>:<queuename>:size)
    • total_messages (key: <projectid/-name>:<queuename>:size)

Example for metric keys:

billingproject:invoicequeue:size
billingproject:invoicequeue:total_messages

How to use

Install via curl (recommended)

curl the latest version from GitHub directly into your Plugin directory:

curl https://raw.githubusercontent.com/engagespark/sd-ironmq/master/IronMQ.py > /usr/bin/sd-agent/plugins/IronMQ.py

Install via PyPI or …

Get it from pypi, installing it somewhere:

pip install sd-ironmq

Symlink it to your plugin directory, on Debian/Ubuntu by default: /usr/bin/sd-agent/plugins

Note: This plugin adheres to the convention of other, official plugins, to just put the product name in camelcase in the classname and therofer filename. This means, if you install this via PyPI, there may be conflicts with other packages that named their project the same. This becomes especially true in case-insensitive file systems. Therefore, the recommended procedure at the moment is to curl the file (see above).

Configure

Add this section to your /etc/sd-agent/config.cfg:

[IronMQ]
host=mq-aws-eu-west-1-1.iron.io
# comma separated list of project IDs
project_ids=<your-project-ids>
token=<your-token>

Restart the agent

On Debian/Ubuntu:

service sd-agent restart

Other configuration options

Metric Keys: Use Project Names instead of IDs

Let's say you configured the queues of your billing project to be monitored:

project_ids=2342934839ai239ai89i

For a queue invoices, the metric keys would look like so:

2342934839ai239ai89i:invoices:size
2342934839ai239ai89i:invoices:total_messages

That's not beautiful, nor understandable. Also it exposes IronMQ internals unnecessarily. Configure a name for the project ID like so:

2342934839ai239ai89i.name=billing

The name is then used in the keys:

billing:invoices:size
billing:invoices:total_messages

Test locally

Create an example.cfg in the working directory:

[IronMQ]
host=mq-aws-eu-west-1-1.iron.io
project_ids=<your-project-ids>
token=<your-token>

Run the plugin:

python IronMQ.py

Releasing

Prepare

  1. Install twine and wheel:

    $ pip install -r requirements_dev.txt
    
  2. Setup your .pypirc.

Release a new version

  1. Update CHANGELOG.

  2. Update version in setup.py, commit, push.

  3. Tag as that version, see git tag, push --tags

  4. Build distributables:

    $ python setup.py sdist bdist_wheel
    
  5. Upload distributable to PyPI:

    $ twine upload --sign dist/*
    

License

MIT, see LICENSE file, Copyright engageSPARK