Production-ready monitoring toolkit for FastAPI applications.
Kubernetes probes, Prometheus metrics, and health checks in one line.
✨ Features
- 🏥 Health Checks: Aggregated health status with customizable checks
- 🔍 K8s Probes: Built-in liveness and readiness endpoints
- 📊 Prometheus Metrics: Auto-instrumented HTTP metrics
- ℹ️ System Info: Build version and platform details
- 🎯 Zero Config: Works out of the box with sensible defaults
- ⚡ 100% Test Coverage: Battle-tested and production-ready
📦 Installation
pip install fastuator
🚀 Quick Start
from fastapi import FastAPI
from fastuator import Fastuator
app = FastAPI()
Fastuator(app) # That's it!
Available Endpoints:
| Endpoint | Description |
|---|---|
GET /fastuator/health |
Aggregated health status with optional details |
GET /fastuator/liveness |
Kubernetes liveness probe (critical checks only) |
GET /fastuator/readiness |
Kubernetes readiness probe (all dependencies) |
GET /fastuator/metrics |
Prometheus-compatible metrics |
GET /fastuator/info |
Application and system information |
📖 Usage
Basic Setup
from fastapi import FastAPI
from fastuator import Fastuator
app = FastAPI()
# Use default configuration
Fastuator(app)
# Custom prefix
Fastuator(app, prefix="/monitoring")
Custom Health Checks
from fastuator import Fastuator
app = FastAPI()
# Define custom health checks
async def database_health():
try:
# Check database connection
await db.execute("SELECT 1")
return {"status": "UP", "database": "connected"}
except Exception as e:
return {"status": "DOWN", "database": str(e)}
async def redis_health():
try:
await redis.ping()
return {"status": "UP", "redis": "connected"}
except Exception:
return {"status": "DOWN", "redis": "unreachable"}
# Register custom checks
Fastuator(
app,
health_checks=[database_health, redis_health],
readiness_checks=[database_health, redis_health],
liveness_checks=[], # No external dependencies for liveness
)
Health Check Response
Without details:
curl http://localhost:8000/fastuator/health
{"status": "UP"}
With details:
curl http://localhost:8000/fastuator/health?show_details=true
{
"status": "UP",
"components": {
"check_0": {
"status": "UP",
"cpu_percent": 45.2
},
"check_1": {
"status": "UP",
"memory_percent": 62.1,
"memory_available_mb": 4096
}
}
}
☸️ Kubernetes Integration
Deployment Example
apiVersion: apps/v1
kind: Deployment
metadata:
name: fastapi-app
spec:
template:
spec:
containers:
- name: app
image: myapp:latest
ports:
- containerPort: 8000
livenessProbe:
httpGet:
path: /fastuator/liveness
port: 8000
initialDelaySeconds: 10
periodSeconds: 10
readinessProbe:
httpGet:
path: /fastuator/readiness
port: 8000
initialDelaySeconds: 5
periodSeconds: 5
📊 Prometheus Metrics
Fastuator automatically collects the following metrics:
http_requests_total: Total HTTP requests (counter)http_request_duration_seconds: Request duration histogramapp_health_status: Health status gauge (1=UP, 0=DOWN)
Scrape configuration:
scrape_configs:
- job_name: 'fastapi'
static_configs:
- targets: ['localhost:8000']
metrics_path: '/fastuator/metrics'
⚙️ Configuration
Fastuator(
app,
prefix="/fastuator", # URL prefix for all endpoints
health_checks=[...], # List of health check functions
liveness_checks=[...], # Checks for liveness probe
readiness_checks=[...], # Checks for readiness probe
enable_metrics=True, # Enable Prometheus metrics
)
🧪 Built-in Health Checks
Fastuator includes these health checks by default:
- CPU Usage: Reports DOWN if CPU > 90%
- Memory Usage: Reports DOWN if memory > 90%
- Disk Usage: Reports DOWN if disk > 90%
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Run tests (
pytest --cov=fastuator) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
Inspired by Spring Boot Actuator.
📚 Related Projects
- FastAPI - Modern web framework for Python
- Prometheus - Monitoring and alerting toolkit
- Kubernetes - Container orchestration platform
Metadata
Release files for fastuator 0.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 | |
|---|---|---|---|
| fastuator-0.1.0.tar.gz | 10.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastuator-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.9 kB
Release files / fastuator-0.1.0.tar.gz
| Download URL | fastuator-0.1.0.tar.gz |
|---|---|
| Size | 10.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
473564fb0c0fa9cf816d273cdcb62f7a397493e54257db14d2f77c4ac5c51867
|
|
BLAKE2b-256 checksum How to use checksums |
2d03082fc654d37642df93aa12293eda6d7cb6513a70544ee702d70d614582d3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / fastuator-0.1.0-py3-none-any.whl
| Download URL | fastuator-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79d04a53fa3d620c6e5bff47af4c8169dddd064faac5bd83be5d6626d631034e
|
|
BLAKE2b-256 checksum How to use checksums |
3de08013fec2f266b77bb6b742615266ef3e354c86502ebba0d34e2157b0cf47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|