SSL-Zertifikate überwachen mit Grafana, InfluxDB und Telegraf
Die meisten Entwickler kennen das: Man kümmert sich um zig Dinge gleichzeitig – und dann ist plötzlich wieder irgendein SSL-Zertifikat abgelaufen. Na hoppla!
Um genau das zu vermeiden, habe ich mir ein kleines Setup gebastelt, mit dem ich meine Zertifikate automatisch überwachen kann – visualisiert in Grafana und gespeist durch InfluxDB und Telegraf. In diesem Beitrag zeige ich, wie das Ganze funktioniert und wie man es in wenigen Schritten selbst einrichtet.
Die Zutaten
Für das Setup brauchst du:
Eine laufende Grafana-Installation
Eine InfluxDB-Instanz (Version 1.x)
Den Telegraf-Agenten von InfluxData
Eine Handvoll Domains, die du überwachen willst
Der technsiche Aufbau
Das Ganze funktioniert so:
Telegraf nutzt das Plugin
x509_cert, um regelmäßig SSL-Zertifikate von konfigurierten Domains zu prüfen.Die Daten werden direkt an InfluxDB geschickt.
Grafana liest die Daten aus InfluxDB aus und stellt sie visuell dar.
Optional kannst du dir Alarme einrichten, die dich warnen, wenn ein Zertifikat bald abläuft.
Installation und Konfiguration
1. Telegraf installieren
sudo apt update
sudo apt install telegrafDann aktivieren:
sudo systemctl enable --now telegraf
2. Telegraf für SSL-Monitoring konfigurieren
Erstelle (oder bearbeite) die Datei /etc/telegraf/telegraf.d/ssl.conf:
[[inputs.x509_cert]]
sources = [
"https://gitlab.werkraum.net:443/",
"https://www.werkraum.net:443/",
"https://kunde-koenig.de:443/"
]
insecure_skip_verify = trueOptional kannst du in der Hauptdatei /etc/telegraf/telegraf.conf den Output konfigurieren:
[[outputs.influxdb]]
urls = ["http://localhost:8086"]
database = "telegraf"Dann Telegraf neu starten:
sudo systemctl restart telegraf
3. Prüfen, ob Daten in InfluxDB ankommen
influx
> USE telegraf;
> SHOW MEASUREMENTS;
> SELECT * FROM x509_cert LIMIT 5;Wenn alles korrekt eingerichtet ist, solltest du bereits Informationen wie expiry, startdate, issuer_common_name etc. sehen.
Grafana: Visualisierung & Queries
In Grafana legst du eine neue Datenquelle an (Typ: InfluxDB, Query Language: InfluxQL) und verbindest sie mit der Datenbank telegraf.
Ein paar praktische Beispiel-Queries:
Restlaufzeit eines Zertifikats in Tagen
SELECT last("expiry") / 86400 AS "days_left"
FROM "x509_cert"
WHERE $timeFilter AND "type" = 'leaf'
GROUP BY "san"
Startdatum als Unix-Timestamp
SELECT last("startdate") AS "cert_start"
FROM "x509_cert"
WHERE $timeFilter AND "type" = 'leaf'
GROUP BY "san"Hinweis: Das Startdatum ist ein Unix-Zeitstempel in Sekunden. Du kannst ihn in Grafana über eine Transformation in ein Datum umwandeln.
Zertifikatsaussteller anzeigen
SELECT count("expiry") FROM "x509_cert"
WHERE $timeFilter
GROUP BY "issuer_common_name"Optional: Alarme bei baldigem Ablauf
Wenn du z. B. eine Warnung willst, wenn ein Zertifikat in weniger als 30 Tagen abläuft:
Verwende
days_leftals MetrikLege einen Schwellenwert von
30im Alert-Bereich eines Panels festVerbinde den Alarm mit einem Benachrichtigungskanal deiner Wahl (E-Mail, Slack, Telegram…)
Fazit
Mit diesem Setup habe ich endlich meine Ruhe, was Zertifikatsabläufe betrifft. Ich kann auf einen Blick sehen, welche Domains kritisch sind – und im Zweifel bekomme ich vorher eine Warnung.
Wer seine Infrastruktur professionell betreibt oder einfach keine Lust auf spontane Zertifikats-Ausfälle hat, sollte sich dieses kleine Monitoring-Setup gönnen.




