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
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.
Usage
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
Hashes for cloudwatch-to-graphite-0.5.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c21eacbce9b64ed7dc4abe1370a871ec17579bf71d353abf90c82ae1041eeb3 |
|
MD5 | 0681a23e3f47267ef0d712fd08fda4cb |
|
BLAKE2b-256 | 43ac12a1d5a42219dc3f6132fe754e6e0c59fd377a4f39fc45fdda5b19ef2f9e |
Hashes for cloudwatch_to_graphite-0.5.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a2b7e0c8c0f8f9212dd0aa7ef53893267f89a68e2ca26d96369ed6481fde72a |
|
MD5 | c3f735d934e9e6e34372842bc446c946 |
|
BLAKE2b-256 | 2f9a49d84339ec1a9ae1c45061551d80dae3d6a19b0fbae7976406ccd65d75e0 |