Prometheus Alert Model for Python
This project provides the Pydantic models AlertGroup and Alert that
represent a payload from Prometheus Alertmanager. In addition, it also includes
a number of useful utility methods that perform actions on alert data. It can
be used as a drop-in wherever you want to work with Prometheus Alertmanager
alert payload data.
A prominent example for using it is a FastAPI route that receives alert payloads.
Simply add AlertGroup as a parameter to the handler.
Features
- Pydantic models that matches the official Alertmanager payload schema.
- Fields
specific_annotationsandspecific_labelsin every alert that contain elements that are specific to the respective alert. - Methods to update common annotations and labels.
- Methods to remove, add, update, override and prefix annotations and labels.
- Every single method is well covered by tests.
Table of Contents
Usage
Using the model is pretty straight-forward. Take a look at the automatically generated docs or the source code itself.
Here is a very short example how you could use the model. It removes all annotations and labels starting with two underscores and adds a prefix that contains namespace info to the summary label. Finally it prints specific elements for all alerts in the group.
from prometheus_alert_model import AlertGroup
from fastapi import FastAPI
from re import compile
app = FastAPI()
@app.post("/alert")
def post_alert(alert_group: AlertGroup):
alert_group.remove_re(
annotations=r"^(__.*)$",
labels=compile(r"^(__.*)$")
)
alert_group.add_prefix(labels={"summary": "Prototyping system: "})
for alert in alert_group.alerts:
print(alert.specific_annotations
print(alert.specific_labels)
Alert Model
In the following all attributes you can find within a Alert. Notice
the custom attributes specific_annotations and specific_labels that
include elements that are specific to the respective alert in context of the
complete AlertGroup / payload.
fingerprint: str
status: str
starts_at: datetime
ends_at: datetime
generator_url: str
annotations: Dict[str, str]
labels: Dict[str, str]
specific_annotations: Dict[str, str]
specific_labels: Dict[str, str]
AlertGroup Model
In the following all attributes you can find within a AlertGroup. It
represents a single payload from Alertmanager.
receiver: str
status: str
external_url: str
version: str
group_key: str
truncated_alerts: int = =0
group_labels: Dict[str, str]
common_annotations: Dict[str, str]
common_labels: Dict[str, str]
alerts: List[Alert]
Here is a short summary over the included utility methods (for full documentation please refer to type hints or the automatically generated docs):
update_specific_elements: Updates specific labels and annotations.update_specific_annotations: Updates specific annotations.update_specific_labels: Updates specific labels.update_common_elements: Updates common annotations and labels.update_common_annotations: Updates common annotations.update_common_labels: Updates common labels.remove: Removes annotations and labels by name.remove_re: Removes annotations and labels by matching names with regex.add: Adds annotations and labels but skips existing elements.override: Adds annotations and labels and overrides existing elements.add_prefix: Adds prefix to annotations and labels.
Motivation
I have a bunch of Python scripts that work in some shape or form with Prometheus Alertmanager data. Instead of duplicating the model across all of them I prefer to have a single small package that is well tested and reuse it again and again. This way I don't have to reimplement utility functions / methods.
Development
Please refer to "DEVELOPMENT.md".
Metadata
Release files for prometheus-alert-model-leo 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| prometheus_alert_model_leo-1.1.0.tar.gz | 9.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| prometheus_alert_model_leo-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.6 kB
Release files / prometheus_alert_model_leo-1.1.0.tar.gz
| Download URL | prometheus_alert_model_leo-1.1.0.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27308fd89d7fb3bc9efa209fb65c8dc5c03aeb3fda47903ae756c7e415a70e37
|
|
BLAKE2b-256 checksum How to use checksums |
6c8919e695f5a6246c8d99528b0947c34f7e2de9abfc5edf5bfaf6fc48b75609
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / prometheus_alert_model_leo-1.1.0-py3-none-any.whl
| Download URL | prometheus_alert_model_leo-1.1.0-py3-none-any.whl |
|---|---|
| Size | 10.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68df12dcfa3bdae68fe93f80ea2b4fc573a4f5a1e7c390c6a2a723b923b6d1e0
|
|
BLAKE2b-256 checksum How to use checksums |
39d0854032325e9dcc60b82e4da66aea6359675441a62c5953f16c7d7035d8fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|