An asynchronous networking framework written in Python
Project description
prometheus-adlermanager
What?
A self-hostable status webpage that uses Prometheus alerts to create and maintain service status and incident tracking / customer information flow.
Why?
Prometheus is awesome! And AlertManager and Grafana are quite wonderful too, but they expose too much information.
This project allows you to choose which alerts/statistics get published in a fashion suitable for user-facing status pages.
I want it!
Dependencies
The easiest way to manage dependencies for deployment and development is with pipenv:
- On Debian-based systems:
sudo apt install pipenv
- On FreeBSD:
pkg install py39-pipenv
(ordevel/py-pipenv
from ports)
The actual dependencies are:
- attrs
- twisted[conch]
- service-identity
- pyyaml
- klein
- jinja2
- markdown
Using Pipenv you can install them for development with:
pipenv install --dev
And for deployment with:
pipenv install
Configuration
This is done via environment variables, Pipenv will import them from a .env
file in the root of this repo.
You can use dotenv.example
as a base for your settings:
cp dotenv.example .env
Review the available settings and their descriptions, particularly you will
want to check DATA_DIR
and SSH_KEYS_DIR
.
SSH access
In order to access AdlerManager via SSH, you will need to add your public SSH
key in authorized_keys
format to:
${SSH_KEYS_DIR:-data}/ssh/users/myuser.key
And give yourself access to the given site, by adding your username to its
ssh_users
list.
Running
To run the server for development you can one of the following commands:
# Using twistd
# https://docs.twisted.org/en/stable/core/howto/basics.html#twistd
pipenv run twistd -ny app.py
# Running as a module
python -m adlermanager
And for deployment, you can use [twistd
][twistd] itself to run the process
in the background or any other daemon watching strategy of your liking
(including e.g. runit
or systemd
).
[twistd]: https://docs.twisted.org/en/stable/core/howto/basics.html#twistd
Using
After that with the defaults you will have the public status web visible in
http://localhost:8080 and the ssh interface in localhost port 2222
which you can access with ssh -p 2222 USER@localhost
.
How does it work?
We aim to solve that by using the same source of information to publish only the desired state/statistics.
1. Pretend to be an AlertManager
This is done by accepting POST
requests from Prometheus on
/api/v1/alerts
, see
https://prometheus.io/docs/alerting/clients/ docs.
2. Structure Alerts into Services and Components
3. Web only lists alerts configured for AdlerManager (public!)
4. Keep track of incidents
5. Allow for public updates / accountability (via SSH!)
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 adlermanager-23.12.0rc1.tar.gz
.
File metadata
- Download URL: adlermanager-23.12.0rc1.tar.gz
- Upload date:
- Size: 23.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36de47a15b2c8bd7469db7a212de0a08b8abcf496c6d097c6a0edacaede92af0 |
|
MD5 | 40cb6d55c1165d08bc1b2868b4331ab5 |
|
BLAKE2b-256 | f389af144ba5cd918afd4251d9a1c664bb87f2fc5b5562f47881b698d0a26c47 |
File details
Details for the file adlermanager-23.12.0rc1-py3-none-any.whl
.
File metadata
- Download URL: adlermanager-23.12.0rc1-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59784bfe0cebeb357182a89c1858caf6cd70b543ffe75e68d524a4eb49ef94fc |
|
MD5 | a80367437bd61f6656d8d50069f139e7 |
|
BLAKE2b-256 | 2d8927573193deaf0684ede257ee203be780a7a91db454e7f170cf298d2940e1 |