Offene Warnungen abfragen und ansehen

Mit dem Benachrichtigungsmonitoring in der GDC-Appliance (Google Distributed Cloud) mit Air Gap können Sie aktive Benachrichtigungen in Ihrem Projekt verfolgen und Fehler beheben, nachdem Sie Benachrichtigungsregeln erstellt haben. Sie können den Schweregrad, die Dauer, den Status und die Labels von Benachrichtigungen in der GDC Console prüfen. Für Skripts, Cronjobs und benutzerdefinierte Integrationen können Sie den Cortex Alertmanager-HTTP-Endpunkt Ihres Projekts mit curl abfragen.

Hinweis

Bitten Sie den IAM-Administrator Ihres Projekts, Ihnen eine der zugehörigen Project Cortex Alertmanager-Rollen in Ihrem Projekt-Namespace zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Abfragen und Visualisieren von Benachrichtigungen benötigen. Je nach erforderlicher Zugriffsebene und Berechtigungen können Sie für diese Ressource in einem Projekt die Rolle „Bearbeiter“ oder „Betrachter“ erhalten.

Bitten Sie den IAM-Administrator Ihres Projekts, Ihnen die Rolle „Project Grafana Viewer“ (project-grafana-viewer) zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Exportieren von Logs benötigen. Mit diesem rollenbasierten Zugriffssteuerungsprozess können Sie sicher auf Datenvisualisierungen zugreifen. Weitere Informationen zu diesen Rollen finden Sie unter IAM-Berechtigungen vorbereiten.

In der folgenden Tabelle sind die Role-Anforderungen für PA and AO persona zusammengefasst.

Persona Objekt Cluster Rolle Namespace Gruppe/Nutzer Konfiguration
PA alertmanager org-admin project-cortex-alertmanager-viewer platform-obs Gruppe 1
PA alertmanager org-admin project-cortex-alertmanager-viewer platform-obs Nutzer 2
AO alertmanager org-admin project-cortex-alertmanager-viewer PROJECT_NAMESPACE Gruppe 1
AO alertmanager org-admin project-cortex-alertmanager-viewer PROJECT_NAMESPACE Nutzer 2

Ersetzen Sie die folgenden Variablen entsprechend:

Variable Beschreibung
KUBECONFIG Sie benötigen die kubeconfig-Datei für den spezifischen Cluster, der die NAMESPACE enthält, auf die diese RoleBinding angewendet wird.
RULE_NAME Der eindeutige Name für diese RoleBinding-Ressource innerhalb des Namespace. Beispiel: pa-cortex-alertmanager-viewer.
NAMESPACE Der Kubernetes-Namespace, in dem diese RoleBinding erstellt und angewendet wird. Suchen Sie in der vorherigen Tabelle nach der Spalte Namespace.
EMAIL_ADDRESS Die Kennung für den Nutzer, dem die Rolle zugewiesen wird. Dies ist häufig eine E‑Mail-Adresse. Beispiel: platform-administrator@example.com.
ROLE Der Name der Role, die die Berechtigungen enthält, die Sie dem Nutzer gewähren möchten. Suchen Sie nach den Rollen, die in der vorherigen Tabelle verfügbar sind.
GROUP_NAME Der Name des Group, zu dem der PA/AO-Nutzer gehört. Beispiel: pa-group.
ZONE Name der Zone

Konfiguration 1

Mit dieser Konfiguration werden einer Nutzergruppe Berechtigungen für den Zugriff auf PA/AO-Benachrichtigungen im Cluster org gewährt. Nachdem Sie diese Konfiguration eingerichtet haben, finden Sie im Abschnitt Console dieses Dokuments Informationen dazu, wie Sie Benachrichtigungen in der GDC-Konsole aufrufen.

  • Kubectl-Befehl

    Dies ist das allgemeine Befehlsformat:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-cortex-alertmanager-viewer
    

    Beispiel:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --group=my-team --namespace=platform-obs
    
  • YAML-Datei

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: Group
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-alertmanager-viewer
      apiGroup: rbac.authorization.k8s.io
    

Konfiguration 2

Mit dieser Konfiguration werden einem Nutzer Berechtigungen für den Zugriff auf PA/AO-Benachrichtigungen im Cluster org gewährt. Nachdem Sie diese Konfiguration eingerichtet haben, finden Sie im Abschnitt Console dieses Dokuments Informationen dazu, wie Sie Benachrichtigungen in der GDC-Konsole aufrufen.

  • Kubectl-Befehl

    Dies ist das allgemeine Befehlsformat:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-cortex-alertmanager-viewer
    

    Beispiel:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --user=my-email@example.com --namespace=platform-obs
    
  • IAC-Dateipfad

    /infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>
    
  • YAML-Datei

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: User
      name: EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-alertmanager-viewer
      apiGroup: rbac.authorization.k8s.io
    

    Weitere Informationen zu diesen Rollen finden Sie unter IAM-Berechtigungen vorbereiten.

Grafana-Endpunkt

Für Anwendungsoperatoren (AO):

Öffnen Sie die folgende URL, um auf den Endpunkt Ihres Projekts zuzugreifen:

https://GDC_URL/PROJECT_NAMESPACE/grafana

Ersetzen Sie Folgendes:

  • GDC_URL: Die URL Ihrer Organisation in GDC.
  • PROJECT_NAMESPACE: Der Namespace Ihres Projekts.

Die Benutzeroberfläche des Projekts enthält Standard-Dashboards wie das Dashboard Alerts – Overview mit Informationen zu Benachrichtigungen. Wenn Sie Benachrichtigungen über die Benutzeroberfläche abfragen, können Sie Benachrichtigungsinformationen aus Ihrem Projekt visuell abrufen und erhalten eine integrierte Ansicht der Ressourcen, um Probleme schnell zu erkennen und zu beheben.

Für Plattformadministratoren:

Öffnen Sie die folgende URL, um auf den Endpunkt Ihres platform-obs-Projekts zuzugreifen:

https://GDC_URL/platform-obs/grafana

Ersetzen Sie GDC_URL durch die URL Ihrer Organisation in GDC.

Die Benutzeroberfläche der Systemmonitoring-Instanz enthält Standard-Dashboards wie das Dashboard Benachrichtigungen – Übersicht mit Informationen zu Benachrichtigungen für die Datenbeobachtbarkeit. Wenn Sie Benachrichtigungen über die Benutzeroberfläche abfragen, können Sie Benachrichtigungsinformationen aus Ihrem Projekt visuell abrufen und erhalten eine integrierte Ansicht der Ressourcen, um Probleme schnell zu erkennen und zu beheben.

Das Dashboard „Alerts – Overview“ (Benachrichtigungen – Übersicht) enthält Informationen zur Anzahl der Benachrichtigungen für eine bestimmte Datenquelle und ein Liniendiagramm des Benachrichtigungsverlaufs, in dem die Anzahl der pro Stunde für die Datenquelle offenen Benachrichtigungen angezeigt wird.

Abbildung 1. Das Dashboard Alerts – Overview in der Grafana-Benutzeroberfläche.

Offene Benachrichtigungen ansehen und filtern

Wählen Sie eine der folgenden Methoden aus, um offene Benachrichtigungen aus Ihrem Projekt-Namespace abzufragen und zu filtern:

Console

So rufen Sie die offenen Benachrichtigungen in einem Projekt über die GDC Console auf:

  1. Melden Sie sich in der GDC-Konsole an.
  2. Wählen Sie in der GDC-Konsole Ihr Projekt aus.
  3. Wählen Sie im Navigationsmenü Vorgänge > Benachrichtigungen aus.
  4. Wählen Sie den Tab Benachrichtigungen aus.
  5. Rufen Sie die Liste der Benachrichtigungen auf.
  6. Klicken Sie im Bereich Geöffnete Benachrichtigungen auf Filter, um nur offene Benachrichtigungen anzuzeigen. Sie können Benachrichtigungen auch nach anderen Attributnamen oder ‑werten filtern.
  7. Klicken Sie auf den Namen einer Benachrichtigung, um die Details aufzurufen.

Cortex-Endpunkt

In diesem Abschnitt wird beschrieben, wie Sie über den Cortex Alertmanager-Endpunkt auf Benachrichtigungen zugreifen.

Cortex-Endpunkt identifizieren

Die folgende URL ist der Endpunkt der Cortex-Instanz Ihres Projekts:

  https://GDC_URL/PROJECT_NAMESPACE/cortex/alertmanager/

Ersetzen Sie Folgendes:

  • GDC_URL: die URL Ihrer Organisation in GDC.
  • PROJECT_NAMESPACE: Ihr Projekt-Namespace.

    Der Cortex-Endpunkt für das Projekt platform-obs in der Organisation org-1 lautet beispielsweise https://org-1/platform-obs/cortex/alertmanager/.

curl-Anfrage authentifizieren

  1. Laden Sie die gdcloud CLI herunter und installieren Sie sie.
  2. Legen Sie das gdcloud-Attribut core/organization_console_url fest:

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. Melden Sie sich mit dem konfigurierten Identitätsanbieter an:

    gdcloud auth login
    
  4. Verwenden Sie Ihren Nutzernamen und Ihr Passwort, um sich zu authentifizieren und anzumelden.

    Wenn die Anmeldung erfolgreich ist, können Sie den Autorisierungsheader in Ihrer cURL-Anfrage über den Befehl gdcloud auth print-identity-token verwenden. Weitere Informationen finden Sie unter gdcloud auth.

Cortex-Endpunkt aufrufen

Führen Sie die folgenden Schritte aus, um den Cortex-Endpunkt mit dem curl-Tool zu erreichen:

  1. curl-Anfrage authentifizieren
  2. Verwenden Sie curl, um den Cortex-Endpunkt aufzurufen, und erweitern Sie die URL mithilfe der Standard-Alertmanager-API-Spezifikation (https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers), um Benachrichtigungen abzufragen.

    Das folgende Beispiel zeigt eine curl-Anfrage:

      curl https://GDC_URL/PROJECT_NAME/cortex/alertmanager/api/v1/alertmanagers \
      -H "Authorization: Bearer $(gdcloud auth print-identity-token \
      --audiences=https://GDC_URL)"
    

    Sie erhalten die Ausgabe nach dem Befehl. Die API-Antwort ist im JSON-Format.

Alertmanager

Mit Alertmanager können Sie Benachrichtigungen von Clientanwendungen überwachen. Sie können Benachrichtigungen mit Alertmanager prüfen und stummschalten sowie Benachrichtigungen filtern oder gruppieren:

Loki-Ablehnungs-Audit-Log-Benachrichtigungen im Root-Administratorcluster ignorieren

Abbildung 2. Menüoption zum Abfragen von Audit-Logs über den Alertmanager.

Vordefinierte Benachrichtigungsrichtlinien

In der folgenden Tabelle sind die vorinstallierten Benachrichtigungsregeln in Prometheus aufgeführt:

Name Beschreibung
KubeAPIDown (kritisch) KubeAPI ist 15 Minuten lang nicht in der Prometheus-Zielerkennung aufgetaucht.
KubeClientErrors (Warnung) Verhältnis der Clientfehler des Kubernetes API-Servers > 0,01 für 15 Minuten.
KubeClientErrors (kritisch) Verhältnis der Kubernetes API-Server-Clientfehler > 0,1 für 15 Minuten.
KubePodCrashLooping (Warnung) Der Pod befindet sich seit mehr als 15 Minuten in einer Absturzschleife.
KubePodNotReady (Warnung) Der Pod ist seit mehr als 15 Minuten nicht einsatzbereit.
KubePersistentVolumeFillingUp (kritisch) Verfügbare Byte eines beanspruchten PersistentVolume < 0,03.
KubePersistentVolumeFillingUp (Warnung) Verfügbare Byte eines beanspruchten PersistentVolume < 0,15.
KubePersistentVolumeErrors (kritisch) Das nichtflüchtige Volume befindet sich fünf Minuten lang in der Phase „Fehlgeschlagen“ oder „Ausstehend“.
KubeNodeNotReady (Warnung) Der Knoten ist seit mehr als 15 Minuten nicht bereit.
KubeNodeCPUUsageHigh (kritisch) Die CPU-Auslastung des Knotens beträgt > 80%.
KubeNodeMemoryUsageHigh (kritisch) Die Arbeitsspeichernutzung des Knotens beträgt > 80%.
NodeFilesystemSpaceFillingUp (Warnung) Die Nutzung des Knotendateisystems beträgt mehr als 60%.
NodeFilesystemSpaceFillingUp (kritisch) Die Dateisystemnutzung des Knotens beträgt mehr als 85%.
CertManagerCertExpirySoon (Warnung) Ein Zertifikat läuft in 21 Tagen ab.
CertManagerCertNotReady (kritisch) Ein Zertifikat ist nach 10 Minuten noch nicht bereit, Traffic zu verarbeiten.
CertManagerHittingRateLimits (kritisch) Beim Erstellen und Erneuern von Zertifikaten wurde für fünf Minuten ein Ratenlimit erreicht.
DeploymentNotReady (kritisch). Ein Deployment im Administratorcluster der Organisation befindet sich seit mehr als 15 Minuten in einem nicht bereiten Zustand.

Beispiel für AlertmanagerConfigurationConfigmaps

Die Syntax von Konfigurationen in ConfigMaps, die von alertmanagerConfigurationConfigmaps aufgelistet werden, muss https://prometheus.io/docs/alerting/latest/configuration/ entsprechen.

apiVersion: observability.gdc.goog/v1alpha1
kind: ObservabilityPipeline
metadata:
  # Choose namespace that matches the project's namespace
  namespace: kube-system
  name: observability-config
# Configure Alertmanager
 alerting:
  # Storage size for alerting data within organization
  # Permission: PA
  localStorageSize: 1Gi

  # Permission: PA & AO
  # alertmanager config must be under the key "alertmanager.yml" in the configMap
  alertmanagerConfig: <configmap-for-alertmanager-config>

  # Permission: PA
  volumes:
    - <volume referenced in volumeMounts>

  # Permission: PA
  volumeMounts:
    - <volumeMount referenced in alertmanagerConfig>

Beispiel für eine Regelkonfiguration

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringRule
metadata:
  # Choose namespace that contains the metrics that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define PromQL expression to evaluate for this rule
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code: 
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>
# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1alpha1
kind: LoggingRule
metadata:
  # Choose namespace that contains the logs that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit/Security Logs)
  # Optional, Default: Operational
  source: <string>

  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code:
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>

Benachrichtigungen über die HTTP API abfragen

Die Observability-Plattform stellt einen HTTP-API-Endpunkt für die Abfrage und das Lesen von Messwerten, Benachrichtigungen und anderen Zeitreihendaten aus Ihrem Projekt für das Systemmonitoring bereit.

Fragen Sie Benachrichtigungen direkt über die Observability HTTP API ab, um automatisierte Aufgaben einzurichten, Antworten anzupassen und Integrationen für Ihren Anwendungsfall zu erstellen. Sie können die Ausgabe beispielsweise in einen anderen Befehl einfügen, Details in Textdateiformate exportieren oder einen Linux-Cronjob konfigurieren. Sie können die Observability HTTP API über die Befehlszeile (CLI) oder einen Webbrowser aufrufen und das Ergebnis im JSON-Format abrufen.

In diesem Abschnitt wird beschrieben, wie Sie den HTTP-API-Endpunkt für die Beobachtbarkeit über die Befehlszeile mit der API-Spezifikationaufrufen, um Benachrichtigungen abzufragen.

Fragen Sie Benachrichtigungen direkt über die Observability HTTP API ab, um automatisierte Aufgaben einzurichten, Antworten anzupassen und Integrationen für Ihren Anwendungsfall zu erstellen. Sie können die Ausgabe beispielsweise in einen anderen Befehl einfügen, Details in Textdateiformate exportieren oder einen Linux-Cronjob konfigurieren. Sie können die Observability HTTP API über die Befehlszeile (CLI) oder einen Webbrowser aufrufen und das Ergebnis im JSON-Format abrufen.

In diesem Abschnitt wird beschrieben, wie Sie den HTTP-API-Endpunkt für die Beobachtbarkeit über die Befehlszeile aufrufen und die Alertmanager-API-Spezifikation verwenden, um Messwerte abzufragen.

Hinweis

Bitten Sie den IAM-Administrator Ihres Projekts, Ihnen die Rolle „Project Cortex Alertmanager Viewer“ (project-cortex-alertmanager-viewer) in Ihrem Projekt-Namespace zuzuweisen, um die Berechtigungen zu erhalten, die Sie für den Zugriff auf den HTTP-API-Endpunkt für die Beobachtbarkeit benötigen.

Der IAM-Administrator des Projekts kann Ihnen Zugriff gewähren, indem er eine Rollenbindung erstellt:

a. Infrastruktur-Operator (IO) Root-Administrator – Project Cortex Alertmanager Viewer:

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
io-cortex-alertmanager-viewer-binding -n infra-obs 
--user=fop-infrastructure-operator@example.com 
--role=project-cortex-alertmanager-viewer

b. Plattformadministrator (PA) Root-Administrator – Project Cortex Alertmanager Viewer:

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
pa-cortex-alertmanager-viewer-binding -n platform-obs 
--user=fop-platform-admin@example.com 
--role=project-cortex-alertmanager-viewer

c. Application Operator (AO) Root-Admin - Project Cortex Alertmanager Viewer: Project: $AO_PROJECT AO User Name: $AO_USER

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
project-cortex-alertmanager-viewer-binding -n $AO_PROJECT 
--user=$AO_USER 
--role=project-cortex-alertmanager-viewer

Nachdem die Rollenbindung erstellt wurde, können Sie mit Ihrem Anmeldenutzernamen auf den entsprechenden Alertmanager zugreifen.

Rollenbindung prüfen

kubectl --kubeconfig $HOME/org-1-admin-kubeconfig get rolebinding -n platform-obs

Informationen zum Festlegen von Rollenbindungen über die GDC-Konsole finden Sie unter Zugriff auf Ressourcen gewähren.

Cortex-Endpunkt

Die folgende URL ist der Cortex-Endpunkt für den Zugriff auf Benachrichtigungen:

https://GDC_URL/PROJECT_NAME/cortex/alertmanager/

Ersetzen Sie Folgendes:

  • GDC_URL: Die URL Ihrer Organisation in GDC.
  • PROJECT_NAME ist der Name Ihres Projekts.

API-Endpunkt aufrufen

So rufen Sie den Cortex API-Endpunkt über die Befehlszeile auf und fragen Benachrichtigungen ab:

  1. Prüfen Sie, ob Sie die Voraussetzungen erfüllen.
  2. Öffnen Sie die Befehlszeile.
  3. Verwenden Sie das Tool curl, um die Cortex-Endpunkt-URL aufzurufen, und erweitern Sie die URL mit dem Standard-https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers, um Benachrichtigungen abzufragen. Beispiel:

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/alertmanager/api/v1/alertmanagers
    

Die Ausgabe wird in der Befehlszeile nach dem Befehl angezeigt. Das API-Antwortformat ist JSON.