Replace transmission-exporter with homegrown Python exporter (#283)
All checks were successful
All checks were successful
## Summary - Replace unmaintained `metalmatze/transmission-exporter:master` sidecar with a homegrown Python exporter - Uses `prometheus_client` + `transmission-rpc` with collect-on-scrape pattern (fresh metrics per scrape, no stale labels) - Same metric names so existing Grafana Transmission dashboard works unchanged - Container built with `uv` for dependency management, follows `grafana-sidecar` Dockerfile pattern ## Changes - **New:** `containers/transmission-exporter/exporter.py` — single-file exporter (~130 lines) - **New:** `containers/transmission-exporter/Dockerfile` — multi-stage Alpine build with uv - **Modified:** `argocd/manifests/torrent/deployment.yaml` — swap sidecar image reference - **Modified:** `argocd/manifests/torrent/kustomization.yaml` — add image tag entry - **Modified:** `service-versions.yaml` — add transmission-exporter entry ## Deployment and Testing - [ ] Build container: `mise run container-build-and-release transmission-exporter` - [ ] Update kustomization.yaml newTag with build SHA - [ ] Branch deploy: `argocd app set torrent --revision feature/transmission-exporter-python && argocd app sync torrent` - [ ] Verify metrics: `kubectl -n torrent --context=minikube-indri port-forward svc/transmission 19091:19091` then `curl localhost:19091/metrics | grep transmission_` - [ ] Verify Grafana Transmission dashboard panels populate - [ ] After merge: `argocd app set torrent --revision main && argocd app sync torrent` Reviewed-on: #283
This commit is contained in:
parent
91d84e54d5
commit
f2704b26da
6 changed files with 182 additions and 1 deletions
21
containers/transmission-exporter/Dockerfile
Normal file
21
containers/transmission-exporter/Dockerfile
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Transmission Prometheus exporter - collect-on-scrape, no polling loop
|
||||
# uv run --script handles dependency resolution at runtime
|
||||
|
||||
ARG CONTAINER_APP_VERSION=1.0.0
|
||||
|
||||
FROM python:3.13-alpine3.23
|
||||
|
||||
LABEL org.opencontainers.image.title="Transmission Exporter"
|
||||
LABEL org.opencontainers.image.description="Prometheus exporter for Transmission BitTorrent client"
|
||||
|
||||
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
|
||||
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
ENV UV_CACHE_DIR=/tmp/uv-cache
|
||||
|
||||
WORKDIR /app
|
||||
COPY exporter.py .
|
||||
|
||||
EXPOSE 19091
|
||||
USER 65534:65534
|
||||
CMD ["uv", "run", "--script", "/app/exporter.py"]
|
||||
Loading…
Add table
Add a link
Reference in a new issue