Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Convert arbitrary json alerts to Alert Manager alerts

Project description

PyConvertAlert

PyConvertAlert makes it easy to take an arbitrary alert from some kind of alerting system (Uptime Robot, Rackspace Intelligence) and convert it into an Alert Manager (Prometheus) alert.

Getting Started

The latest stable release is available from PyPI:

pip install pyconvertalert

Otherwise you can install from git:

pip install git+https://github.com/jpavlav/PyConvertAlert

Usage

>>> from pyconvertalert import Converter
>>>
>>> test_lookup_dict_1 = {
...     "values": [
...         {
...             "people": [
...                 {
...                     "email": "jim@jim.com",
...                     "phone": "111-111-1111"
...                 }
...             ]
...         }
...     ]
... }
>>>
>>>
>>> test_mapper_dict_1 = {
...     "labels": {
...         "email_address": "email",
...         "phone_number": "phone"
...     }
... }
>>> convert = Converter(mapper=test_mapper_dict_1)
>>> convert.convert_it(test_lookup_dict_1)
{'labels': {'email_address': 'jim@jim.com', 'phone_number': '111-111-1111'}}

Further Usage

In some cases, there will be more than one key that matches a lookup. In this case, the value returned in our converted dict will be a list containing all of the values that match this key. In order to handle a situation where we need to be more specific, it is possible to specify a list of keys to drill down on a specific value. Here is an example:

>>> test_lookup_dict_2 = {
...     "flowers": [
...         {
...             "best_flower": {
...                 "name": "Orchid",
...                 "scientific_name": "Orchidaceae"
...             },
...             "wild_flower": {
...                 "name": "Gold Yarrow",
...                 "scientific_name": "Achillea filipendulinaa"
...             }
...         }
...     ]
... }
>>>
>>> test_mapper_dict_2 = {
...     "labels": {
...         "best_flower_name": ['best_flower', 'name'],
...         "best_flower_scientific_name": ['best_flower',
...                                         'scientific_name']
...     }
... }
>>>
>>>
>>> convert = Converter(mapper=test_mapper_dict_2)
>>> convert.convert_it(test_lookup_dict_2)
{'labels': {'best_flower_name': 'Orchid', 'best_flower_scientific_name': 'Orchidaceae'}}

Above, we see that we were able to get the 'best_flower' 'scientific_name' by specifying a list of keys to search through. We first return the value from the key 'best_flower', then return the value from the key 'name'.

Running the tests

Should be as simple as:

python -m unittest test_py_convert_alert.py

Contributing

  1. Fork it.
  2. Create a branch describing either the issue or feature you're working.
  3. Making changes, committing along the way.
  4. Follow PEP8, except where ridiculous.
  5. Include tests for any functionality changes.
  6. Push the changes and create a pull request :D.

Built With

Authors

  • Justin Palmer - Urrverything - Me

Acknowledgments

  • Kenneth Reitz -> setup - Thanks!
  • Kamori -> Cool Guy - Thanks to you as well!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyconvertalert, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size pyconvertalert-0.1.1-py2.py3-none-any.whl (7.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size pyconvertalert-0.1.1.tar.gz (6.7 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page