Lightweight async endpoint uptime monitor. Pings a configurable list of HTTP targets on a set interval and exposes uptime, latency, and request counts as Prometheus metrics.
| Component | Technology |
|---|---|
| Runtime | Python 3.11 |
| API | FastAPI + Uvicorn |
| HTTP client | httpx (async) |
| Metrics | prometheus-client |
| Config | pydantic-settings + PyYAML |
| Observability | Prometheus + Grafana |
| Metric | Type | Labels |
|---|---|---|
argus_endpoint_up |
Gauge | url, name |
argus_endpoint_latency_seconds |
Histogram | url, name |
argus_endpoint_requests_total |
Counter | url, name, status_code |
# Clone and run the full stack
git clone https://github.com/malik-builds/argus
cd argus
docker compose up --build- Argus metrics: http://localhost:8000/metrics
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (admin/admin)
Edit config.yaml to set targets and scrape interval:
scrape_interval: 30
targets:
- name: github
url: https://github.com
- name: my-api
url: https://api.example.com/healthAdd Grafana dashboard screenshot here