No description
Find a file
2025-07-21 09:23:50 +02:00
go remove go func 2025-07-21 09:23:50 +02:00
dashboard.json Dateien nach „/“ hochladen 2025-07-17 09:46:15 +02:00
docker-compose.yml move code 2025-07-17 09:45:28 +02:00
README.md add README 2025-07-17 03:22:57 +02:00

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)

go build -o docker-image-exporter
./docker-image-exporter

Oder via Docker

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"]
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:

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!