Helper for pushing AWS CloudWatch metrics to Graphite
Project description
Cloudwatch-to-Graphite (leadbutt) is a small utility to take metrics from CloudWatch to Graphite.
Installation
Install using pip:
pip install cloudwatch-to-graphite
Usage
Configuring boto
Cloudwatch-to-Graphite uses boto, so make sure to follow its configuration instructions. The easiest way to do this is to set up the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.
Configuration Files
If you have a simple setup, the easiest way to get started is to set up a config.yaml. You can copy the included config.yaml.example. Then just run:
leadbutt
If you have several configs you want to switch between, you can specify a custom configuration file:
leadbutt --config-file=production.yaml -n 20
You can even generate configs on the fly and send them in via stdin by setting the config file to ‘-‘:
generate_config_from_inventory | leadbutt --config-file=-
Sending Data to Graphite
If your graphite server is at graphite.local, you can send metrics by chaining with netcat:
leadbutt | nc -q0 graphite.local 2003
Or if you want to use UDP:
leadbutt | nc -uw0 graphite.local 2003
If you need to namespace your metrics for a hosted Graphite provider, you could provide a custom formatter, but the easiest way is to just run the output through awk:
leadbutt | \ awk -v namespace="$HOSTEDGRAPHITE_APIKEY" '{print namespace"."$0}' | \ nc -uw0 my-graphite-provider.xxx 2003
Customizing Your Graphite Metric Names
Set the Formatter option to set the template used to generate Graphite metric names. I wasn’t sure what should be default, so I copied cloudwatch2graphite’s. Here’s what it looks like:
cloudwatch.%(Namespace)s.%(dimension)s.%(MetricName)s.%(statistic)s.%(Unit)s
TitleCased variables come directly from the YAML configuration, while lowercase variables are derived:
statistic – the current statistic since Statistics can be a list
dimension – the dimension value, e.g. “i-r0b0t” or “my-load-balancer”
The format string is Python’s %-style.
config.yaml
What metrics are pulled is in a YAML configuration file. See the example config.yaml.example for an idea of what you can do.
Developing
Install requirements:
pip install -r requirements.txt
Running test suite:
make test
Verifying tests run over all supported Python versions:
tox
Useful References
Prior Art
Cloudwatch-to-Graphite was inspired by edasque’s cloudwatch2graphite. I was looking to expand it, but I wanted to use boto.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cloudwatch-to-graphite-0.2.0.tar.gz
.
File metadata
- Download URL: cloudwatch-to-graphite-0.2.0.tar.gz
- Upload date:
- Size: 4.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aff3a07ebf3955fffb4b04052dc32b824aa79e0c416f722261502ac6b8b54b01 |
|
MD5 | dfabb25b9bad00b3b8ec0b15e075ae86 |
|
BLAKE2b-256 | bab9c24f4103a1f07e7ed2d1f379d1ae7cebbc2a0f50dd265dc8dab1404714d0 |
File details
Details for the file cloudwatch_to_graphite-0.2.0-py2.py3-none-any.whl
.
File metadata
- Download URL: cloudwatch_to_graphite-0.2.0-py2.py3-none-any.whl
- Upload date:
- Size: 7.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee3e42ee3ae4cdceb7eb5486ed49c29cf04fa0ae8ccdfe72377313e2da08041b |
|
MD5 | b74dac6af0f65ac84b2edcf6b8ca6127 |
|
BLAKE2b-256 | c5d4c44032cdfcac64ed941d7aac6209262c77dafcce1c8a49e0605349250d0b |