Pydantic model of the Prometheus Alertmanager alert payload
Project description
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".
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prometheus_alert_model_leo-1.1.0.tar.gz.
File metadata
- Download URL: prometheus_alert_model_leo-1.1.0.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27308fd89d7fb3bc9efa209fb65c8dc5c03aeb3fda47903ae756c7e415a70e37
|
|
| MD5 |
5e347c607efffdd30339272c0f90bb62
|
|
| BLAKE2b-256 |
6c8919e695f5a6246c8d99528b0947c34f7e2de9abfc5edf5bfaf6fc48b75609
|
File details
Details for the file prometheus_alert_model_leo-1.1.0-py3-none-any.whl.
File metadata
- Download URL: prometheus_alert_model_leo-1.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68df12dcfa3bdae68fe93f80ea2b4fc573a4f5a1e7c390c6a2a723b923b6d1e0
|
|
| MD5 |
dce9610f7d112367f4c2eb9d5e747510
|
|
| BLAKE2b-256 |
39d0854032325e9dcc60b82e4da66aea6359675441a62c5953f16c7d7035d8fd
|