feat: implement pngx-controller with Gitea CI/CD deployment
All checks were successful
Deploy / deploy (push) Successful in 30s
All checks were successful
Deploy / deploy (push) Successful in 30s
- Full FastAPI sync engine: master→replica document sync via paperless REST API - Web UI: dashboard, replicas, logs, settings (Jinja2 + HTMX + Pico CSS) - APScheduler background sync, SSE live log stream, Prometheus metrics - Fernet encryption for API tokens at rest - pngx.env credential file: written on save, pre-fills forms on load - Dockerfile with layer-cached uv build, Python healthcheck - docker-compose with host networking for Tailscale access - Gitea Actions workflow: version bump, secret injection, docker compose deploy Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
36
app/metrics.py
Normal file
36
app/metrics.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from prometheus_client import Counter, Gauge, Histogram
|
||||
|
||||
docs_total = Counter(
|
||||
"pngx_sync_docs_total",
|
||||
"Total documents synced",
|
||||
["replica", "status"],
|
||||
)
|
||||
|
||||
sync_duration = Histogram(
|
||||
"pngx_sync_duration_seconds",
|
||||
"Sync cycle duration in seconds",
|
||||
["triggered_by"],
|
||||
)
|
||||
|
||||
replica_lag = Gauge(
|
||||
"pngx_replica_lag_seconds",
|
||||
"Seconds since last successful sync",
|
||||
["replica"],
|
||||
)
|
||||
|
||||
replica_pending_tasks = Gauge(
|
||||
"pngx_replica_pending_tasks",
|
||||
"Pending tasks awaiting resolution",
|
||||
["replica"],
|
||||
)
|
||||
|
||||
replica_consecutive_failures = Gauge(
|
||||
"pngx_replica_consecutive_failures",
|
||||
"Consecutive sync cycle failures per replica",
|
||||
["replica"],
|
||||
)
|
||||
|
||||
sync_running = Gauge(
|
||||
"pngx_sync_running",
|
||||
"Whether a sync cycle is currently running",
|
||||
)
|
||||
Reference in New Issue
Block a user