Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Dokumentation zu SUSE Enterprise Storage 7 / Betriebs- und Verwaltungshandbuch / Clustervorgang / Überwachung und Warnungen
Gilt für SUSE Enterprise Storage 7

16 Überwachung und Warnungen

In SUSE Enterprise Storage 7 stellt cephadm einen Überwachungs- und Warnungsstack bereit. Anwender müssen die Services (wie Prometheus, Alertmanager und Grafana), die sie mit cephadm bereitstellen wollen, entweder in einer YAML-Konfigurationsdatei definieren, oder sie können sie über die Kommandozeilenschnittstelle bereitstellen. Wenn mehrere Services desselben Typs bereitgestellt werden, wird eine hochverfügbare Einrichtung bereitgestellt. Der Node Exporter stellt eine Ausnahme von dieser Regel dar.

Die folgenden Überwachungsservices können mit cephadm bereitgestellt werden:

  • Prometheus ist das Überwachungs- und Warnmeldungs-Toolkit. Es sammelt die von Prometheus-Exportern bereitgestellten Daten und löst vorkonfigurierte Warnungen aus, wenn vordefinierte Schwellenwerte erreicht wurden.

  • Alertmanager verarbeitet die durch den Prometheus-Server gesendeten Warnmeldungen. Es dedupliziert und gruppiert die Warnungen und leitet sie an den richtigen Empfänger weiter. Standardmäßig wird das Ceph Dashboard automatisch als Empfänger konfiguriert.

  • Grafana ist die Visualisierungs- und Warnmeldungs-Software. Die Warnungsfunktion von Grafana wird von diesem Überwachungs-Stack nicht genutzt. Für Warnungen wird der Alertmanager verwendet.

  • Der Node Exporter ist ein Exporter für Prometheus, der Daten über den Knoten liefert, auf dem er installiert ist. Es wird empfohlen, den Node Exporter auf allen Knoten zu installieren.

Das Prometheus-Manager-Modul stellt einen Prometheus-Exporter bereit, um Ceph-Leistungszähler von der Sammelstelle in ceph-mgr weiterzugeben.

Die Prometheus-Konfiguration, einschließlich der Scrape-Ziele (Daemons, die Kennzahlen bereitstellen), wird automatisch von cephadm eingerichtet. cephadm stellt außerdem eine Liste standardmäßiger Warnungen bereit, z. B. health error (Zustandsfehler), 10% OSDs down (10 % der OSDs inaktiv) oder pgs inactive (PGs inaktiv).

Standardmäßig wird der Datenverkehr zu Grafana mit TLS verschlüsselt. Sie können entweder ein eigenes TLS-Zertifikat bereitstellen oder ein eigensigniertes Zertifikat verwenden. Wenn vor dem Bereitstellen von Grafana kein benutzerdefiniertes Zertifikat konfiguriert wurde, dann wird automatisch ein eigensigniertes Zertifikat erstellt und für Grafana konfiguriert.

Benutzerdefinierte Zertifikate für Grafana können mit den folgenden Kommandos konfiguriert werden:

cephuser@adm >  ceph config-key set mgr/cephadm/grafana_key -i $PWD/key.pem
cephuser@adm >  ceph config-key set mgr/cephadm/grafana_crt -i $PWD/certificate.pem

Alertmanager verarbeitet die durch den Prometheus-Server gesendeten Warnmeldungen. Hiermit werden die Warnmeldungen dedupliziert, gruppiert und an den richtigen Empfänger geleitet. Warnungen können über den Alertmanager stummgeschaltet werden. Stummschaltungen können aber auch über das Ceph Dashboard verwaltet werden.

Es wird empfohlen, den Node Exporter auf allen Knoten zu installieren. Dies kann über die Datei monitoring.yaml mit dem Servicetyp node-exporter erfolgen. Im Abschnitt 5.4.3.8, „Bereitstellen des Überwachungs-Stacks“ finden Sie weitere Informationen zum Bereitstellen von Services.

16.1 Konfigurieren von benutzerdefinierten oder lokalen Images

Tipp
Tipp

In diesem Abschnitt wird beschrieben, wie Sie die Konfiguration von Container-Images ändern, die beim Bereitstellen oder Aktualisieren von Services verwendet werden. Er enthält nicht die Kommandos, die zum Bereitstellen oder erneuten Bereitstellen von Services erforderlich sind.

Die empfohlene Methode zum Bereitstellen des Überwachungs-Stacks besteht in der Anwendung seiner Spezifikation, wie im Abschnitt 5.4.3.8, „Bereitstellen des Überwachungs-Stacks“beschrieben.

Zum Bereitstellen benutzerdefinierter oder lokaler Container-Images müssen die Images in cephadm festgelegt werden. Dazu müssen Sie folgendes Kommando ausführen:

cephuser@adm > ceph config set mgr mgr/cephadm/OPTION_NAME VALUE

OPTION_NAME bezeichnet einen der folgenden Namen:

  • container_image_prometheus

  • container_image_node_exporter

  • container_image_alertmanager

  • container_image_grafana

Wenn keine Option festgelegt ist oder wenn die Einstellung entfernt wurde, werden die folgenden Images als VALUE verwendet:

  • registry.suse.com/caasp/v4.5/prometheus-server:2.18.0

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter:0.18.1

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager:0.16.2

  • registry.suse.com/ses/7/ceph/grafana:7.0.3

Beispiel:

cephuser@adm > ceph config set mgr mgr/cephadm/container_image_prometheus prom/prometheus:v1.4.1
Anmerkung
Anmerkung

Durch Festlegen eines benutzerdefinierten Image wird der Standardwert außer Kraft gesetzt (aber nicht überschrieben). Der Standardwert ändert sich, wenn Aktualisierungen verfügbar sind. Wenn Sie ein benutzerdefiniertes Bild festlegen, können Sie die Komponente, für die Sie das benutzerdefinierte Image festgelegt haben, nicht automatisch aktualisieren. Sie müssen die Konfiguration (Image-Namen und Tag) manuell aktualisieren, um Aktualisierungen installieren zu können.

Wenn Sie sich stattdessen für die Empfehlungen entscheiden, können Sie das zuvor festgelegte benutzerdefinierte Image zurücksetzen. Danach wird wieder der Standardwert verwendet. Verwenden Sie ceph config rm, um die Konfigurationsoption zurückzusetzen:

cephuser@adm > ceph config rm mgr mgr/cephadm/OPTION_NAME

Beispiel:

cephuser@adm > ceph config rm mgr mgr/cephadm/container_image_prometheus

16.2 Aktualisieren von Überwachungsservices

Wie in Abschnitt 16.1, „Konfigurieren von benutzerdefinierten oder lokalen Images“ erwähnt, sind im Lieferumfang von cephadm die URLs der empfohlenen und getesteten Container-Images vorhanden. Diese werden standardmäßig verwendet.

In Aktualisierungen der Ceph-Pakete können neue Versionen dieser URLs bereitgestellt werden. Dadurch wird nur aktualisiert, woher die Container-Images abgerufen werden, es werden aber keine Services aktualisiert.

Die Überwachungsservices können aktualisiert werden, nachdem die URLs zu den neuen Container-Images aktualisiert wurden – entweder manuell, wie in Abschnitt 16.1, „Konfigurieren von benutzerdefinierten oder lokalen Images“ beschrieben, oder automatisch durch eine Aktualisierung des Ceph-Pakets.

Verwenden Sie dazu ceph orch redeploy wie folgt:

cephuser@adm > ceph orch redeploy node-exporter
cephuser@adm > ceph orch redeploy prometheus
cephuser@adm > ceph orch redeploy alertmanager
cephuser@adm > ceph orch redeploy grafana

Zurzeit gibt es kein einzelnes Kommando zum Aktualisieren aller Überwachungsservices. Die Reihenfolge, in der diese Services aktualisiert werden, ist nicht wichtig.

Anmerkung
Anmerkung

Wenn Sie benutzerdefinierte Container-Images verwenden, werden die für die Überwachungsservices angegebenen URLs nicht automatisch geändert, wenn die Ceph-Pakete aktualisiert werden. Wenn Sie benutzerdefinierte Container-Images angegeben haben, müssen Sie die URLs der neuen Container-Images manuell angeben. Dies kann der Fall sein, wenn Sie eine lokale Container-Registrierung verwenden.

Die URLs der empfohlenen Container-Images, die Sie verwenden sollten, finden Sie in Abschnitt 16.1, „Konfigurieren von benutzerdefinierten oder lokalen Images“.

16.3 Deaktivieren der Überwachung

Deaktivieren Sie den Überwachungs-Stack mit folgenden Kommandos:

cephuser@adm > ceph orch rm grafana
cephuser@adm > ceph orch rm prometheus --force   # this will delete metrics data collected so far
cephuser@adm > ceph orch rm node-exporter
cephuser@adm > ceph orch rm alertmanager
cephuser@adm > ceph mgr module disable prometheus

16.4 Konfigurieren von Grafana

Das Ceph-Dashboard-Back-End benötigt die Grafana-URL, um das Vorhandensein von Grafana-Dashboards zu verifizieren, noch bevor das Frontend sie lädt. Aufgrund der Art und Weise, wie Grafana in Ceph Dashboard implementiert ist, bedeutet dies, dass zwei funktionierende Verbindungen erforderlich sind, um Grafana-Graphe in Ceph Dashboard sehen zu können:

  • Das Back-End (Ceph MGR-Modul) muss prüfen, ob der angeforderte Graph vorhanden ist. Wenn diese Anfrage erfolgreich ist, teilt es dem Frontend mit, dass es sicher auf Grafana zugreifen kann.

  • Das Frontend fordert dann die Grafana-Graphen direkt vom Browser des Benutzers über einen iframe an. Der Zugriff auf die Grafana-Instanz erfolgt direkt und ohne Umweg über das Ceph Dashboard.

In Ihrer Umgebung kann der Browser des Benutzers womöglich nicht direkt auf die im Ceph Dashboard konfigurierte URL zugreifen. Um dieses Problem zu lösen, kann eine separate URL konfiguriert werden, die ausschließlich dazu dient, dem Frontend (dem Browser des Benutzers) mitzuteilen, welche URL es für den Zugriff auf Grafana verwenden soll.

Mit folgendem Kommando ändern Sie die URL, die an das Frontend zurückgegeben wird:

cephuser@adm > ceph dashboard set-grafana-frontend-api-url GRAFANA-SERVER-URL

Wenn kein Wert für diese Option festgelegt ist, wird einfach auf den Wert der Option GRAFANA_API_URL zurückgegriffen. Er wird automatisch festgelegt und regelmäßig von cephadm aktualisiert. Wenn er festgelegt ist, wird der Browser angewiesen, diese URL für den Zugriff auf Grafana zu verwenden.

16.5 Konfigurieren des Prometheus-Manager-Moduls

Das Prometheus-Manager-Modul ist ein Modul innerhalb von Ceph, mit dem die Funktionalität von Ceph erweitert wird. Das Modul liest (Meta-)Daten von Ceph über seinen Status und Zustand und stellt die (gescrapten) Daten in einem verwertbaren Format für Prometheus bereit.

Anmerkung
Anmerkung

Das Prometheus-Manager-Modul muss neu gestartet werden, damit die Konfigurationsänderungen übernommen werden.

16.5.1 Konfigurieren der Netzwerkschnittstelle

Standardmäßig akzeptiert das Prometheus-Manager-Modul HTTP-Anfragen an Port 9283 auf allen IPv4- und IPv6-Adressen des Hosts. Der Port und die Überwachungsadresse sind beide mit ceph config-key set konfigurierbar, mit den Schlüsseln mgr/prometheus/server_addr und mgr/prometheus/server_port. Dieser Port ist in der Registrierung von Prometheus registriert.

Aktualisieren Sie die server_addr mit folgendem Kommando:

cephuser@adm > ceph config set mgr mgr/prometheus/server_addr 0.0.0.0

Aktualisieren Sie den server_port mit folgendem Kommando:

cephuser@adm > ceph config set mgr mgr/prometheus/server_port 9283

16.5.2 Konfigurieren des scrape_interval

Standardmäßig ist das Prometheus-Manager-Modul mit einem Scrape-Intervall von 15 Sekunden konfiguriert. Ein Scrape-Intervall unter 10 Sekunden ist nicht zu empfehlen. Legen Sie scrape_interval auf den gewünschten Wert fest, um ein anderes Scrape-Intervall im Prometheus-Modul festzulegen:

Wichtig
Wichtig

Für eine korrekte und problemlose Funktionsweise sollte das scrape_interval dieses Moduls immer so festgelegt werden, dass es dem Prometheus-Scrape-Intervall entspricht.

cephuser@adm > ceph config set mgr mgr/prometheus/scrape_interval 15

16.5.3 Konfigurieren des Caches

Bei großen Clustern (mehr als 1000 OSDs) kann das Abrufen der Kennzahlen viel Zeit in Anspruch nehmen. Ohne den Cache kann das Prometheus-Manager-Modul den Manager überlasten und zu nicht reagierenden oder abstürzenden Ceph-Manager-Instanzen führen. Daher ist der Cache standardmäßig aktiviert und kann nicht deaktiviert werden, was jedoch zu einem veralteten Cache führen kann. Der Cache wird als veraltet angesehen, wenn die Zeit zum Abrufen der Kennzahlen von Ceph das konfigurierte scrape_interval überschreitet.

Wenn dies der Fall ist, wird eine Warnung protokolliert und das Modul reagiert auf zwei mögliche Arten:

  • Es antwortet mit einem 503-HTTP-Statuscode (Service nicht verfügbar).

  • Es gibt den Inhalt des Caches zurück, auch wenn er womöglich veraltet ist.

Dieses Verhalten kann mit den ceph config set-Kommandos konfiguriert werden.

Legen Sie das Modul auf return fest, um es anzuweisen, mit möglicherweise veralteten Daten zu antworten:

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy return

Legen Sie das Modul auf fail fest, um es anzuweisen, mit service unavailable zu antworten:

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy fail

16.5.4 Aktivieren der RBD-Image-Überwachung

Durch Aktivieren der dynamischen OSD-Leistungszähler kann das Prometheus-Manager-Modul optional RBD-pro-Image-Statistiken sammeln. Die Statistiken werden für alle Images in den Pools gesammelt, die im Konfigurationsparameter mgr/prometheus/rbd_stats_pools angegeben sind.

Der Parameter ist eine durch Komma oder Leerzeichen getrennte Liste von pool[/namespace]-Einträgen. Wenn der Namespace nicht angegeben ist, wird die Statistik für alle Namespaces im Pool gesammelt.

Beispiel:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools "pool1,pool2,poolN"

Das Modul sucht die angegebenen Pools und Namespaces ab, erstellt eine Liste aller verfügbaren Images und aktualisiert sie in regelmäßigen Abständen. Das Intervall ist über den Parameter mgr/prometheus/rbd_stats_pools_refresh_interval konfigurierbar (in Sekunden) und beträgt standardmäßig 300 Sekunden (fünf Minuten).

Wenn Sie beispielsweise das Synchronisierungsintervall auf 10 Minuten geändert haben:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools_refresh_interval 600

16.6 Prometheus-Sicherheitsmodell

Das Sicherheitsmodell von Prometheus geht davon aus, dass nicht vertrauenswürdige Benutzer Zugriff auf den Prometheus-HTTP-Endpunkt und die Protokolle haben. Nicht vertrauenswürdige Benutzer haben Zugriff auf alle (Meta-)Daten, die Prometheus sammelt und die in der Datenbank enthalten sind, sowie auf eine Vielzahl von Betriebs- und Debugging-Informationen.

Die HTTP-API von Prometheus ist jedoch auf reine Lesevorgänge beschränkt. Konfigurationen können nicht über die API geändert werden, und Geheimnisse werden nicht offengelegt. Darüber hinaus verfügt Prometheus über einige integrierte Maßnahmen zur Abschwächung der Auswirkungen von Denial-of-Service-Angriffen.

16.7 Prometheus Alertmanager SNMP-Webhook

Wenn Sie mithilfe von SNMP-Traps über Prometheus-Warnungen benachrichtigt werden möchten, können Sie den Prometheus-Alertmanager-SNMP-Webhook über cephadm installieren. Dazu müssen Sie eine Service- und Platzierungsspezifikationsdatei mit folgendem Inhalt erstellen:

Anmerkung
Anmerkung

Weitere Informationen zum Erstellen von Service- und Platzierungsspezifikationsdateien finden Sie in Abschnitt 5.4.2, „Service- und Platzierungsspezifikation“.

service_type: container
service_id: prometheus-webhook-snmp
placement:
    ADD_PLACEMENT_HERE
image: registry.suse.com/ses/7/prometheus-webhook-snmp:latest
args:
    - "--publish 9099:9099"
envs:
    - ARGS="--debug --snmp-host=ADD_HOST_GATEWAY_HERE"
    - RUN_ARGS="--metrics"
EOF

Verwenden Sie diese Servicespezifikation, um den Service mit seinen Standardeinstellungen auszuführen.

Sie müssen den Port, auf dem der Prometheus-Empfänger überwacht, mit dem Kommandozeilenargument --publish HOST_PORT:CONTAINER_PORT veröffentlichen, wenn Sie den Service ausführen, da der Port nicht automatisch vom Container sichtbar gemacht wird. Dies kann durch Hinzufügen der folgenden Zeilen zur Spezifikation erreicht werden:

args:
    - "--publish 9099:9099"

Alternativ können Sie mit dem Kommandozeilenargument --network=host den Container mit dem Host-Netzwerk verbinden.

args:
    - "--network=host"

Wenn der SNMP-Trap-Empfänger nicht auf demselben Host wie der Container installiert ist, müssen Sie auch den FQDN des SNMP-Hosts angeben. Verwenden Sie das Netzwerk-Gateway des Containers, um SNMP-Traps außerhalb des Containers/Hosts zu empfangen:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"

16.7.1 Konfigurieren des Service prometheus-webhook-snmp

Der Container kann über Umgebungsvariablen oder über eine Konfigurationsdatei konfiguriert werden.

Verwenden Sie für die Umgebungsvariablen ARGS, um globale Optionen festzulegen, und RUN_ARGS für die run-Optionen. Die Servicespezifikation muss folgendermaßen angepasst werden:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"
    - RUN_ARGS="--metrics --port=9101"

Für eine Konfigurationsdatei muss die Servicespezifikation folgendermaßen angepasst werden:

files:
    etc/prometheus-webhook-snmp.conf:
        - "debug: True"
        - "snmp_host: ADD_HOST_GATEWAY_HERE"
        - "metrics: True"
volume_mounts:
    etc/prometheus-webhook-snmp.conf: /etc/prometheus-webhook-snmp.conf

Führen Sie zur Bereitstellung folgendes Kommando aus:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE

Weitere Informationen zu diesem Thema finden Sie unter dem Stichwort Abschnitt 5.4.3, „Bereitstellen von Ceph-Services“.

16.7.2 Konfigurieren des Prometheus Alertmanager für SNMP

Schließlich muss der Prometheus Alertmanager speziell für SNMP-Traps konfiguriert werden. Wenn dieser Service noch nicht bereitgestellt wurde, erstellen Sie eine Servicespezifikationsdatei. Sie müssen IP_OR_FQDN durch die IP-Adresse oder den FQDN des Hosts ersetzen, auf dem der Prometheus Alertmanager SNMP-Webhook installiert wurde. Beispiel:

Anmerkung
Anmerkung

Wenn Sie diesen Service bereits bereitgestellt haben, dann stellen Sie ihn mit folgenden Einstellungen erneut bereit, um sicherzustellen, dass der Alertmanager korrekt für SNMP eingerichtet ist.

  service_type: alertmanager
  placement:
    hosts:
    - HOSTNAME
  webhook_configs:
    - 'http://IP_OR_FQDN:9099/'

Wenden Sie die Servicespezifikation mit folgendem Kommando an:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE