1
0
Fork 0
alertmanager-ntfy/README.md

89 lines
No EOL
3.1 KiB
Markdown

# 🚨 alertmanager-ntfy 🚨
This project is a lightweight bridge between [Prometheus Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/) and [ntfy](https://ntfy.sh/). It sends push notifications to your devices.
## 📦 Features
- Configure via environment variables.
- Exports Prometheus metrics to monitor webhook activity.
- Built for Kubernetes, but works anywhere
- Has a `flake.nix`
## 🚀 Getting Started
To send your Alertmanager alerts to ntfy, configure the following environment variables:
| Variable | Description | Example |
|-------------------|----------------------------------------------|-------------------|
| `HTTP_ADDRESS` | Address to listen on | `localhost` |
| `HTTP_PORT` | Port to listen on | `8080` |
| `NTFY_SERVER_URL` | ntfy server to send alerts to | `https://ntfy.sh` |
| `NTFY_USER` | Username for basic auth (optional) | `myuser` |
| `NTFY_PASS` | Password for basic auth (optional) | `supersecret` |
| `LOG_LEVEL` | Log level (`debug`, `info`, `warn`, `error`) | `info` |
### Example
To expose the service on `localhost:8080` and send alerts to an ntfy topic `https://ntfy.sh/mytopic`:
```bash
export HTTP_ADDRESS="localhost"
export HTTP_PORT="8080"
export NTFY_SERVER_URL="https://ntfy.sh/mytopic"
export NTFY_USER="myuser"
export NTFY_PASS="supersecret"
export LOG_LEVEL="info"
```
## 🛠️ Nix Support
For Nix/NixOS users, a `flake.nix` is provided for build, run and test.
### Building with Nix
To build the container image: `nix build .#container`
If you are not on amd64 use `nix build .#packages.x86_64-linux.container`.
Push the built container to your preferred registry: `nix run .#push-container`
You can run the application directly from Nix with: `nix run`
To simulate alerts with test data: `nix run '.#mock-hook'`
## 🖥️ Nix Module
A Nix module is provided for easy setup and integration. A minimal configuration would look like this:
```nix
# Add to flake inputs
inputs.alertmanager-ntfy.url = "git+https://code.252.no/tommy/alertmanager-ntfy";
# Import the module in your configuration.nix
imports = [
self.inputs.alertmanager-ntfy.nixosModules.default
];
# Enable the service and configure options
services.alertmanager-ntfy = {
enable = true;
httpAddress = "localhost";
httpPort = "9999";
ntfyTopic = "https://ntfy.sh/test";
ntfyPriority = "high";
envFile = "/var/src/secrets/alertmanager-ntfy/envfile";
};
```
## 🔍 Prometheus Metrics
The service exports Prometheus metrics for tracking webhook requests and errors. By default, these metrics are exposed at `/metrics`:
- **`http_requests_total`**: Total number of HTTP requests received.
- **`http_request_errors_total`**: Total number of errors encountered during request processing.
## 🤩 Gratitude
This project is based on the fantastic work by [pinpox/alertmanager-ntfy](https://github.com/pinpox/alertmanager-ntfy), with adaptations for Kubernetes deployments and enhanced logging/metrics support.