Simple allerting system for Graphite metrics.
Project description
graphite-beacon
===============
![logo](https://raw.github.com/klen/graphite-beacon/develop/beacon.png)
Simple allerting system for [Graphite](http://graphite.wikidot.com/) metrics.
Features:
- Simplest installation (one python package dependency);
- No software dependencies (Databases, AMPQ and etc);
- Light and full asyncronous;
- SMTP, Hipchat handlers (Please make a request for additional handlers);
[![Build status](http://img.shields.io/travis/klen/graphite-beacon.svg?style=flat-square)](http://travis-ci.org/klen/graphite-beacon)
[![Coverage](http://img.shields.io/coveralls/klen/graphite-beacon.svg?style=flat-square)](https://coveralls.io/r/klen/graphite-beacon)
[![Version](http://img.shields.io/pypi/v/graphite-beacon.svg?style=flat-square)](https://pypi-hypernode.com/pypi/graphite_beacon/0.2.1)
[![Donate](http://img.shields.io/gratipay/klen.svg?style=flat-square)](https://www.gratipay.com/klen/)
Example:
```js
{
"graphite_url": "http://g.server.org"
"smtp_from": "beacon@server.org"
"smtp_to": ["me@gmail.com"]
"alerts": [
{ "name": "MEM",
"format": "bytes",
"query": "aliasByNode(sumSeriesWithWildcards(collectd.*.memory.{memory-free,memory-cached}, 3), 1)",
"rules": ["critical: < 200MB", "warning: < 400MB"] },
{ "name": "CPU",
"format": "percent",
"query": "aliasByNode(sumSeriesWithWildcards(collectd.*.cpu-*.cpu-user, 2), 1)",
"rules": ["critical: >= 80%", "warning: >= 70%"] }
]}
```
Requirements
------------
- python (2.7, 3.3, 3.4)
- tornado
Installation
------------
### Python package
**Graphite-beacon** could be installed using pip:
pip intall graphite-beacon
### Debian package
Using the command line, add the following to your /etc/apt/sources.list system config file:
echo "deb http://dl.bintray.com/klen/deb /" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://dl.bintray.com/klen/deb /" | sudo tee -a /etc/apt/sources.list
Install the package using apt-get:
apt-get update
apt-get install graphite-beacon
### Ansible role
There is an ansible role to install the package: https://github.com/Stouts/Stouts.graphite-beacon
Usage
-----
Just run `graphite-beacon`:
$ graphite-beacon
[I 141025 11:16:23 core:141] Read configuration
[I 141025 11:16:23 core:55] Memory (10minute): init
[I 141025 11:16:23 core:166] Loaded with options:
...
### Configuration
___
> Time units: '2second', '3.5minute', '4hour', '5.2day', '6week', '7month', '8year'
> short formats are: '2s', '3m', '4.1h' ...
> Value units:
> short: '2K', '3Mil', '4Bil', '5Tri'
> bytes: '2KB', '3MB', '4GB'
> time: '2s', '3m', '4h', '5d'
**Graphite-beacon** default options are:
> Comment lines are not allowed in JSON, but Graphite-beacon strips them
```js
{
// Path to a configuration
"config": "config.json",
// Graphite server URL
"graphite_url": "http://localhost",
// HTTP AUTH username
"auth_usernamename": null,
// HTTP AUTH password
"auth_password": null,
// Path to a pidfile
"pidfile": null,
// Default values format (none, bytes, s, ms, short)
// Can be redfined for each alert.
"format": "short",
// Default query interval
// Can be redfined for each alert.
"interval": "10minute",
// Notification repeat interval
// If an alert is failed, its notification will be repeated with the interval below
"repeat_interval": "2hour",
// Default loglevel
"logging": "info",
// Default method (average, last_value).
// Can be redfined for each alert.
"method": "average",
// Default prefix (used for notifications)
"prefix": "[BEACON]",
// Default handlers (log, smtp, hipchat)
"critical_handlers": ["log", "smtp"],
"warning_handlers": ["log", "smtp"],
"normal_handlers": ["log", "smtp"],
// Default alerts (see configuration below)
"alerts": []
}
```
You can setup options with a configuration file. See
`example-config.json`.
#### Include
You can include any configuration files:
```js
...
"include": [ "path/to/config1.json", "path/to/config2.json"]
```
#### Setup alerts
At the moment **Graphite-beacon** supports two type of alerts:
- Graphite alert (default) - check graphite metrics
- URL alert (default) - load http and check status
> Comment lines are not allowed in JSON, but Graphite-beacon strips them
```js
"alerts": [
{
// (required) Alert name
"name": "Memory",
// (required) Alert query
"query": "*.memory.memory-free",
//(optional) Alert type (graphite, url)
"source": "graphite",
//(optional) Default values format (none, bytes, s, ms, short)
"format": "bytes",
// (optional) Alert method (average, last_value)
"method": "average",
// (optional) Alert interval [eg. 15second, 30minute, 2hour, 1day, 3month, 1year]
"interval": "1minute",
// (required) Alert rules
// Rule format: "{level}: {operator} {value}"
// Level one of [critical, warning, normal]
// Operator one of [>, <, >=, <=, ==, !=]
// Value (absolute value: 3000000 or short form like 3MB/12minute)
"rules": [ "critical: < 200MB", "warning: < 300MB" ]
}
]
```
### Setup SMTP
Enable "smtp" handler (enabled by default) and set the options in your beacon
configuration.
```js
{
...
// Set from email
"smtp_from": "beacon@graphite",
// Set "to" email
"smtp_to": []
// Set SMTP host
"smtp_host": "localhost",
// Set SMTP port
"smtp_port": 25,
// Set SMTP user
"smtp_username": null,
// Set SMTP password
"smtp_password": null,
// Use TLS
"smtp_use_tls": false,
...
}
```
### Setup HipChat
Enable "hipchat" handler and set the options in your beacon configuration.
```js
{
...
"hipchat_room": "myroom",
"hipchat_key": "mykey",
...
}
```
### Command line
```
$ graphite-beacon --help
Usage: graphite-beacon [OPTIONS]
Options:
--config Path to an configuration file (YAML)
(default config.json)
--graphite_url Graphite URL (default http://localhost)
--help show this help information
--pidfile Set pid file
--log_file_max_size max size of log files before rollover
(default 100000000)
--log_file_num_backups number of log files to keep (default 10)
--log_file_prefix=PATH Path prefix for log files. Note that if you
are running multiple tornado processes,
log_file_prefix must be different for each
of them (e.g. include the port number)
--log_to_stderr Send log output to stderr (colorized if
possible). By default use stderr if
--log_file_prefix is not set and no other
logging is configured.
--logging=debug|info|warning|error|none
Set the Python log level. If 'none', tornado
won't touch the logging configuration.
(default info)
```
Bug tracker
-----------
If you have any suggestions, bug reports or annoyances please report them to
the issue tracker at https://github.com/klen/graphite-beacon/issues
Contributors
-------------
* Kirill Klenov (https://github.com/klen, horneds@gmail.com)
License
--------
Licensed under a [MIT license](http://www.linfo.org/mitlicense.html)
===============
![logo](https://raw.github.com/klen/graphite-beacon/develop/beacon.png)
Simple allerting system for [Graphite](http://graphite.wikidot.com/) metrics.
Features:
- Simplest installation (one python package dependency);
- No software dependencies (Databases, AMPQ and etc);
- Light and full asyncronous;
- SMTP, Hipchat handlers (Please make a request for additional handlers);
[![Build status](http://img.shields.io/travis/klen/graphite-beacon.svg?style=flat-square)](http://travis-ci.org/klen/graphite-beacon)
[![Coverage](http://img.shields.io/coveralls/klen/graphite-beacon.svg?style=flat-square)](https://coveralls.io/r/klen/graphite-beacon)
[![Version](http://img.shields.io/pypi/v/graphite-beacon.svg?style=flat-square)](https://pypi-hypernode.com/pypi/graphite_beacon/0.2.1)
[![Donate](http://img.shields.io/gratipay/klen.svg?style=flat-square)](https://www.gratipay.com/klen/)
Example:
```js
{
"graphite_url": "http://g.server.org"
"smtp_from": "beacon@server.org"
"smtp_to": ["me@gmail.com"]
"alerts": [
{ "name": "MEM",
"format": "bytes",
"query": "aliasByNode(sumSeriesWithWildcards(collectd.*.memory.{memory-free,memory-cached}, 3), 1)",
"rules": ["critical: < 200MB", "warning: < 400MB"] },
{ "name": "CPU",
"format": "percent",
"query": "aliasByNode(sumSeriesWithWildcards(collectd.*.cpu-*.cpu-user, 2), 1)",
"rules": ["critical: >= 80%", "warning: >= 70%"] }
]}
```
Requirements
------------
- python (2.7, 3.3, 3.4)
- tornado
Installation
------------
### Python package
**Graphite-beacon** could be installed using pip:
pip intall graphite-beacon
### Debian package
Using the command line, add the following to your /etc/apt/sources.list system config file:
echo "deb http://dl.bintray.com/klen/deb /" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://dl.bintray.com/klen/deb /" | sudo tee -a /etc/apt/sources.list
Install the package using apt-get:
apt-get update
apt-get install graphite-beacon
### Ansible role
There is an ansible role to install the package: https://github.com/Stouts/Stouts.graphite-beacon
Usage
-----
Just run `graphite-beacon`:
$ graphite-beacon
[I 141025 11:16:23 core:141] Read configuration
[I 141025 11:16:23 core:55] Memory (10minute): init
[I 141025 11:16:23 core:166] Loaded with options:
...
### Configuration
___
> Time units: '2second', '3.5minute', '4hour', '5.2day', '6week', '7month', '8year'
> short formats are: '2s', '3m', '4.1h' ...
> Value units:
> short: '2K', '3Mil', '4Bil', '5Tri'
> bytes: '2KB', '3MB', '4GB'
> time: '2s', '3m', '4h', '5d'
**Graphite-beacon** default options are:
> Comment lines are not allowed in JSON, but Graphite-beacon strips them
```js
{
// Path to a configuration
"config": "config.json",
// Graphite server URL
"graphite_url": "http://localhost",
// HTTP AUTH username
"auth_usernamename": null,
// HTTP AUTH password
"auth_password": null,
// Path to a pidfile
"pidfile": null,
// Default values format (none, bytes, s, ms, short)
// Can be redfined for each alert.
"format": "short",
// Default query interval
// Can be redfined for each alert.
"interval": "10minute",
// Notification repeat interval
// If an alert is failed, its notification will be repeated with the interval below
"repeat_interval": "2hour",
// Default loglevel
"logging": "info",
// Default method (average, last_value).
// Can be redfined for each alert.
"method": "average",
// Default prefix (used for notifications)
"prefix": "[BEACON]",
// Default handlers (log, smtp, hipchat)
"critical_handlers": ["log", "smtp"],
"warning_handlers": ["log", "smtp"],
"normal_handlers": ["log", "smtp"],
// Default alerts (see configuration below)
"alerts": []
}
```
You can setup options with a configuration file. See
`example-config.json`.
#### Include
You can include any configuration files:
```js
...
"include": [ "path/to/config1.json", "path/to/config2.json"]
```
#### Setup alerts
At the moment **Graphite-beacon** supports two type of alerts:
- Graphite alert (default) - check graphite metrics
- URL alert (default) - load http and check status
> Comment lines are not allowed in JSON, but Graphite-beacon strips them
```js
"alerts": [
{
// (required) Alert name
"name": "Memory",
// (required) Alert query
"query": "*.memory.memory-free",
//(optional) Alert type (graphite, url)
"source": "graphite",
//(optional) Default values format (none, bytes, s, ms, short)
"format": "bytes",
// (optional) Alert method (average, last_value)
"method": "average",
// (optional) Alert interval [eg. 15second, 30minute, 2hour, 1day, 3month, 1year]
"interval": "1minute",
// (required) Alert rules
// Rule format: "{level}: {operator} {value}"
// Level one of [critical, warning, normal]
// Operator one of [>, <, >=, <=, ==, !=]
// Value (absolute value: 3000000 or short form like 3MB/12minute)
"rules": [ "critical: < 200MB", "warning: < 300MB" ]
}
]
```
### Setup SMTP
Enable "smtp" handler (enabled by default) and set the options in your beacon
configuration.
```js
{
...
// Set from email
"smtp_from": "beacon@graphite",
// Set "to" email
"smtp_to": []
// Set SMTP host
"smtp_host": "localhost",
// Set SMTP port
"smtp_port": 25,
// Set SMTP user
"smtp_username": null,
// Set SMTP password
"smtp_password": null,
// Use TLS
"smtp_use_tls": false,
...
}
```
### Setup HipChat
Enable "hipchat" handler and set the options in your beacon configuration.
```js
{
...
"hipchat_room": "myroom",
"hipchat_key": "mykey",
...
}
```
### Command line
```
$ graphite-beacon --help
Usage: graphite-beacon [OPTIONS]
Options:
--config Path to an configuration file (YAML)
(default config.json)
--graphite_url Graphite URL (default http://localhost)
--help show this help information
--pidfile Set pid file
--log_file_max_size max size of log files before rollover
(default 100000000)
--log_file_num_backups number of log files to keep (default 10)
--log_file_prefix=PATH Path prefix for log files. Note that if you
are running multiple tornado processes,
log_file_prefix must be different for each
of them (e.g. include the port number)
--log_to_stderr Send log output to stderr (colorized if
possible). By default use stderr if
--log_file_prefix is not set and no other
logging is configured.
--logging=debug|info|warning|error|none
Set the Python log level. If 'none', tornado
won't touch the logging configuration.
(default info)
```
Bug tracker
-----------
If you have any suggestions, bug reports or annoyances please report them to
the issue tracker at https://github.com/klen/graphite-beacon/issues
Contributors
-------------
* Kirill Klenov (https://github.com/klen, horneds@gmail.com)
License
--------
Licensed under a [MIT license](http://www.linfo.org/mitlicense.html)
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
graphite_beacon-0.9.0.tar.gz
(14.9 kB
view details)
Built Distribution
File details
Details for the file graphite_beacon-0.9.0.tar.gz
.
File metadata
- Download URL: graphite_beacon-0.9.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4773a894a8e8989bc0372a1e998f2f47370f9412c0d7b238dc30c6af43da0f78 |
|
MD5 | 67b2a3db0e49165c1223f7d1513bd4ef |
|
BLAKE2b-256 | 120de20c74234104cfae7c1479512f1e5da3b49971ce1033b17b6deb078045d0 |
File details
Details for the file graphite_beacon-0.9.0-py2.py3-none-any.whl
.
File metadata
- Download URL: graphite_beacon-0.9.0-py2.py3-none-any.whl
- Upload date:
- Size: 23.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb018a170450483bdcdac14531a258115327e4c608d4f6054fe7b65863118ccd |
|
MD5 | c49924eda81d1d3df5e69e9fa1ae5395 |
|
BLAKE2b-256 | 36cc64e1c02e72f09ae552b7ef9c5825979ef687d922fd8ebf17191f4e5076df |