Eseguire query e visualizzare gli avvisi aperti

Dopo aver creato regole di avviso nel progetto dell'appliance air-gapped Google Distributed Cloud (GDC), puoi interrogare e visualizzare gli avvisi nei dashboard dall'interfaccia utente dell'istanza di monitoraggio del sistema del progetto o interrogare gli avvisi dall'API HTTP GDC Observability.

Esegui query e visualizza gli avvisi nelle dashboard

Puoi visualizzare gli avvisi nelle dashboard dall'istanza Grafana del progetto platform-obs, chiamata anche istanza di monitoraggio del sistema. istanza di monitoraggio del sistema del progetto platform-obs.

L'istanza di monitoraggio del sistema include metriche, log e avvisi a livello di progetto per eseguire processi di monitoraggio come il monitoraggio della rete e del server.

Prima di iniziare

Prima di eseguire query e visualizzare gli avvisi nelle dashboard, devi ottenere l'accesso all'istanza di monitoraggio del sistema. Per saperne di più, vedi Accedere alle dashboard.

Per accedere e visualizzare gli avvisi, chiedi all'amministratore IAM del progetto di concederti il ruolo Visualizzatore Grafana progetto (project-grafana-viewer). Questo processo di controllo dell'accesso basato sui ruoli ti consente di accedere alle visualizzazioni dei dati in modo sicuro.

Endpoint dell'istanza di monitoraggio del sistema

Per l'operatore dell'applicazione (AO):

Apri il seguente URL per accedere all'endpoint del tuo progetto:

https://GDC_URL/PROJECT_NAMESPACE/grafana

Sostituisci quanto segue:

  • GDC_URL: l'URL della tua organizzazione in GDC.
  • PROJECT_NAMESPACE: lo spazio dei nomi del progetto.

La UI del progetto contiene dashboard predefinite, ad esempio la dashboard Avvisi - Panoramica con informazioni sugli avvisi. L'interrogazione degli avvisi dalla UI consente di recuperare visivamente le informazioni sugli avvisi dal progetto e di ottenere una visualizzazione integrata delle risorse per la consapevolezza e la rapida risoluzione dei problemi.

Per l'amministratore della piattaforma:

Apri il seguente URL per accedere all'endpoint del tuo progetto platform-obs:

https://GDC_URL/platform-obs/grafana

Sostituisci GDC_URL con l'URL della tua organizzazione in GDC.

L'interfaccia utente (UI) dell'istanza di monitoraggio del sistema contiene dashboard predefinite come la dashboard Avvisi - Panoramica con informazioni sugli avvisi per l'osservabilità dei dati. L'interrogazione degli avvisi dalla UI consente di recuperare visivamente le informazioni sugli avvisi dal progetto e di ottenere una visualizzazione integrata delle risorse per la consapevolezza e la rapida risoluzione dei problemi.

La dashboard Avvisi - Panoramica mostra informazioni sul numero di avvisi per un'origine dati specifica e un grafico a linee della cronologia degli avvisi, che mostra il numero di avvisi aperti all'ora per l'origine dati.

Figura 1. La dashboard Avvisi - Panoramica nell'interfaccia utente di Grafana.

Alertmanager

Alertmanager ti consente di monitorare le notifiche di avviso dalle applicazioni client. Puoi ispezionare e silenziare gli avvisi utilizzando Alertmanager e filtrare o raggruppare gli avvisi:

Ignorare gli avvisi dei log di controllo relativi al rifiuto di Loki nel cluster di amministrazione principale

Figura 2. Opzione di menu per eseguire query sui log di controllo da Alertmanager.

Policy di avviso predefinite

La tabella seguente elenca le regole di avviso preinstallate in Prometheus:

Nome Descrizione
KubeAPIDown (critico) KubeAPI è scomparso dal rilevamento dei target di Prometheus per 15 minuti.
KubeClientErrors (avviso) Il rapporto tra errori client del server API di Kubernetes è > 0,01 per 15 minuti.
KubeClientErrors (critico) Rapporto errori client del server API Kubernetes > 0,1 per 15 minuti.
KubePodCrashLooping (avviso) Il pod è in uno stato di loop di arresto anomalo da più di 15 minuti.
KubePodNotReady (avviso) Il pod è in uno stato non pronto da più di 15 minuti.
KubePersistentVolumeFillingUp (critico) Byte disponibili di un PersistentVolume richiesto < 0,03.
KubePersistentVolumeFillingUp (avviso) Byte liberi di un PersistentVolume richiesto < 0,15.
KubePersistentVolumeErrors (critico) Il volume permanente si trova nella fase Non riuscito o In attesa per cinque minuti.
KubeNodeNotReady (avviso) Il nodo non è pronto da più di 15 minuti.
KubeNodeCPUUsageHigh (critico) L'utilizzo della CPU del nodo è > 80%.
KubeNodeMemoryUsageHigh (critico) L'utilizzo della memoria dei nodi è superiore all'80%.
NodeFilesystemSpaceFillingUp (avviso) L'utilizzo del file system del nodo è superiore al 60%.
NodeFilesystemSpaceFillingUp (critico) L'utilizzo del file system del nodo è superiore all'85%.
CertManagerCertExpirySoon (warning) Un certificato scade tra 21 giorni.
CertManagerCertNotReady (critico) Un certificato non è pronto per gestire il traffico dopo 10 minuti.
CertManagerHittingRateLimits (critico) È stato raggiunto un limite di frequenza per la creazione e il rinnovo dei certificati per cinque minuti.
DeploymentNotReady (critico). Un deployment sul cluster di amministrazione dell'organizzazione è in stato non pronto da più di 15 minuti.

Esempio di alertmanagerConfigurationConfigmaps

La sintassi delle configurazioni in ConfigMap elencate da alertmanagerConfigurationConfigmaps deve seguire https://prometheus.io/docs/alerting/latest/configuration/

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>

Configurazione di esempio della regola

# 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>

Avvisi di query dall'API HTTP

La piattaforma di osservabilità espone un endpoint API HTTP per l'esecuzione di query e la lettura di metriche, avvisi e altri dati delle serie temporali dal tuo progetto per il monitoraggio del sistema.

Esegui query sugli avvisi direttamente dall'API HTTP di osservabilità per configurare attività automatizzate, adattare le risposte e creare integrazioni in base al tuo caso d'uso. Ad esempio, inserisci l'output in un altro comando, esporta i dettagli in formati di file di testo o configura un cron job Linux. Puoi chiamare l'API HTTP di osservabilità dall'interfaccia a riga di comando (CLI) o da un browser web e ottenere il risultato in formato JSON.

Questa sezione spiega come chiamare l'endpoint API HTTP di osservabilità dalla CLI utilizzando la specifica API per eseguire query sugli avvisi.

Esegui query sugli avvisi direttamente dall'API HTTP di osservabilità per configurare attività automatizzate, adattare le risposte e creare integrazioni in base al tuo caso d'uso. Ad esempio, inserisci l'output in un altro comando, esporta i dettagli in formati di file di testo o configura un cron job Linux. Puoi chiamare l'API HTTP di osservabilità dall'interfaccia a riga di comando (CLI) o da un browser web e ottenere il risultato in formato JSON.

Questa sezione spiega come chiamare l'endpoint API HTTP di osservabilità dalla CLI utilizzando la specifica dell'API Alertmanager per eseguire query sulle metriche.

Prima di iniziare

Per ottenere le autorizzazioni necessarie per accedere all'endpoint API HTTP di Observability, chiedi all'amministratore IAM del progetto di concederti il ruolo Visualizzatore Alertmanager di Project Cortex (project-cortex-alertmanager-viewer) nello spazio dei nomi del progetto.

L'amministratore IAM del progetto può concederti l'accesso creando un binding del ruolo:

a. Amministratore root dell'operatore dell'infrastruttura (IO) - 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. Amministratore della piattaforma (PA) - Amministratore root - 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. Amministratore principale operatore dell'applicazione (AO) - Visualizzatore Alertmanager di Project Cortex: Progetto: $AO_PROJECT Nome utente AO: $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

Una volta creato il binding del ruolo, puoi accedere al corrispondente Alertmanager con il tuo nome utente di accesso.

Verifica l'associazione del ruolo

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

Per informazioni sull'impostazione dei binding dei ruoli dalla console GDC, vedi Concedere l'accesso alle risorse.

Endpoint Cortex

Il seguente URL è l'endpoint Cortex per accedere agli avvisi:

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

Sostituisci quanto segue:

  • GDC_URL: l'URL della tua organizzazione in GDC.
  • PROJECT_NAME: il nome del progetto.

Chiama l'endpoint API

Segui questi passaggi per raggiungere l'endpoint dell'API Cortex dalla CLI ed eseguire query sugli avvisi:

  1. Assicurati di soddisfare i prerequisiti.
  2. Apri la CLI.
  3. Utilizza lo strumento curl per chiamare l'URL dell'endpoint Cortex ed estendere l'URL utilizzando l'https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers standard per eseguire query sugli avvisi. Ad esempio:

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

Ottieni l'output nella CLI dopo il comando. Il formato della risposta API è JSON.