# Docker Image Update Prometheus Exporter Dieser Exporter prüft für **alle laufenden Docker-Container auf dem Host**, ob das jeweils verwendete Image-Tag im zugehörigen Registry ein Update aufweist (Digest-Vergleich). Das Ergebnis wird als Metrik für Prometheus exportiert und parallel als Log ausgegeben. ## Features - Prüft ausschließlich Images der aktiven (laufenden) Container - Unterstützt beliebige Registries (inkl. private Registries mit Docker-Login) - Exportiert Metrik: `docker_image_update_available{container_name, image, tag}` (1 = Update vorhanden, 0 = aktuell) - Logging der Prüfungen im Terminal ## Nutzung ### Voraussetzungen - Docker läuft lokal - Zugriff auf /var/run/docker.sock (bei Ausführung in einem Container: Volume mount!) - Go 1.19+ (zum Selbst-Bauen) - Abhängigkeiten: - github.com/docker/docker - github.com/regclient/regclient - github.com/prometheus/client_golang ### Build & Run (nativ) ```bash go build -o docker-image-exporter ./docker-image-exporter ``` ### Oder via Docker ```Dockerfile FROM golang:1.21-alpine AS builder WORKDIR /app COPY . . RUN go build -o exporter . FROM alpine COPY --from=builder /app/exporter /usr/local/bin/exporter ENTRYPOINT ["/usr/local/bin/exporter"] ``` ```bash docker build -t docker-image-exporter . docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -p 9788:9788 docker-image-exporter ``` ### Prometheus Konfiguration Job z.B. so eintragen: ```yaml scrape_configs: - job_name: 'docker_image_update' scrape_interval: 24h # oder beliebiges passendes Intervall static_configs: - targets: ['localhost:9788'] ``` ## Metrik-Beispiel ``` docker_image_update_available{container_name="/mein_container",image="nginx",tag="latest"} 1 docker_image_update_available{container_name="/db",image="postgres",tag="16"} 0 ``` 1 = Update verfügbar, 0 = kein Update nötig. ## Hinweise - Für private Registries muss vorab ein `docker login` erfolgen. - Der Exporter prüft parallelisiert, Logging erfolgt auf der Konsole. - Es werden ausschließlich aktuell laufende Container betrachtet. - Das Intervall für Prometheus sollte je nach Anwendungsfall gewählt werden; typischerweise genügt einmal täglich. Fragen, Bugs oder Feature-Wünsche? Gerne im Issue-Tracker oder direkt anpassen!