add README
This commit is contained in:
parent
be5c17c097
commit
b91f1ec3d5
1 changed files with 79 additions and 0 deletions
79
README.md
Normal file
79
README.md
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
# 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!
|
Loading…
Add table
Reference in a new issue