Skip to main content

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 (or devel/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!)

Metadata

Release files for adlermanager 25.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for adlermanager 25.4.0
File Size Uploaded Provenance Actions
adlermanager-25.4.0.tar.gz 78.5 kB Without provenance Details for adlermanager-25.4.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for adlermanager 25.4.0
File Interpreter ABI Platform Actions
adlermanager-25.4.0-py3-none-any.whl Python 3 none any Details for adlermanager-25.4.0-py3-none-any.whl

Total release size: 160.9 kB

Release files / adlermanager-25.4.0.tar.gz

Download URL adlermanager-25.4.0.tar.gz
Size 78.5 kB
Tags Source
SHA-256 checksum
How to use checksums
83c2030160ab9e3373b42051f8e1e3e870eed3416054245b30ff1c90b2816b7e
BLAKE2b-256 checksum
How to use checksums
84eee19bc4dc5bc30e35f48364fa4c060bc85412ccfd1210ac745cfca2c43a3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.28.1

Release files / adlermanager-25.4.0-py3-none-any.whl

Download URL adlermanager-25.4.0-py3-none-any.whl
Size 82.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
10db4e99337908411ef259cdc232103202c1219fae2df524e3f42bd36ed6ecf1
BLAKE2b-256 checksum
How to use checksums
c38ff01ea8ade09c1d0662b7cc2cf810a78c4194fb76e9ba7d2e9ad60d3e2d30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.28.1

Security for adlermanager 25.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page