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 telegraf

Dann 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 = true

Optional 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_left als Metrik

  • Lege einen Schwellenwert von 30 im Alert-Bereich eines Panels fest

  • Verbinde 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.

Kategorien

Devblog

Hat Dir der Artikel gefallen?