Questa pagina descrive la procedura per creare regole di avviso basate su log e metriche degli ambienti isolati di Google Distributed Cloud (GDC) per facilitare il monitoraggio proattivo e una risposta più rapida agli incidenti.
GDC ti consente di definire regole di avviso basate sulle metriche o sui log del tuo progetto. Queste regole attivano automaticamente gli avvisi quando vengono soddisfatte condizioni specifiche. Di seguito sono riportati i tipi di regole di avviso che puoi definire:
- Regole basate su metriche: attivano avvisi in base ai dati numerici raccolti da
applicazioni o infrastruttura. Ad esempio, puoi creare una regola per attivare un avviso se l'utilizzo della CPU supera l'80%. Crea regole basate su metriche utilizzando la console GDC o una definizione di risorsa personalizzata
MonitoringRule. - Regole basate su log: attivano avvisi in base all'analisi dei dati dei log. Questi avvisi ti consentono di identificare e rispondere a eventi o pattern specifici all'interno dei log, ad esempio messaggi di errore o attività insolite. Crea regole basate su log utilizzando la console GDC o una definizione di risorsa personalizzata
LoggingRule.
Sia le regole basate su metriche sia quelle basate su log si basano su un'espressione del linguaggio di query per definire la condizione che attiva un avviso. Questa espressione filtra e analizza i dati in entrata, valutando se i criteri definiti sono soddisfatti.
La prima volta che una condizione viene soddisfatta, l'avviso passa allo stato in attesa. Se le condizioni sono vere per il periodo di durata seguente che definisci, l'avviso passa allo stato aperto. A quel punto, il sistema invia l'avviso.
Per fornire ulteriore contesto e facilitare la gestione efficiente degli avvisi, puoi aggiungere etichette e annotazioni alle regole di avviso:
Etichette: coppie chiave-valore che categorizzano e identificano gli avvisi. Utilizza le etichette per informazioni come le seguenti:
- Livello di gravità (errore, critico, avviso)
- Codice di avviso
- Nome risorsa
Annotazioni: forniscono ulteriori informazioni non identificative per arricchire l' avviso. Le annotazioni possono includere le seguenti informazioni:
- Messaggi di errore dettagliati
- Espressioni pertinenti
- Link a runbook o guide alla risoluzione dei problemi
Prima di iniziare
Per ottenere le autorizzazioni necessarie per gestire le regole basate su metriche, chiedi all'amministratore IAM dell'organizzazione o all'amministratore IAM del progetto di concederti uno dei ruoli delle risorse MonitoringRule associati.
D'altra parte, per ottenere le autorizzazioni necessarie per gestire le regole basate su log, chiedi all'amministratore IAM dell'organizzazione o all'amministratore IAM del progetto di concederti uno dei ruoli delle risorse LoggingRule associati.
A seconda del livello di accesso e delle autorizzazioni di cui hai bisogno, potresti ottenere ruoli di creator, editor o visualizzatore per queste risorse in un'organizzazione o un progetto. Per saperne di più, consulta Prepara le autorizzazioni IAM.
Definisci le regole di avviso
Puoi definire le regole di avviso nello spazio dei nomi del progetto utilizzando la console GDC (opzione preferita) o le API di monitoraggio e logging per applicare risorse personalizzate.
Seleziona uno dei seguenti metodi per definire le regole di avviso basate su metriche o log:
Console
Crea regole di avviso nei gruppi di regole dalla console GDC:
- Nella console GDC, seleziona un progetto.
- Nel menu di navigazione, seleziona Operazioni > Avvisi.
- Fai clic sulla scheda Policy di avviso.
- Fai clic su Crea gruppo di regole.
Scegli il tipo di regola di avviso:
- Seleziona Metriche per le regole di avviso basate su metriche.
- Seleziona Log per le regole di avviso basate su log.
Configura il gruppo di regole di avviso:
- Nel campo Nome gruppo di regole di avviso, inserisci un nome per il gruppo di regole.
- Nel campo Intervallo di valutazione delle regole, inserisci il numero di secondi per ogni intervallo.
Nel campo Limite, inserisci il numero massimo di avvisi.
Nella sezione Regole di avviso, fai clic su Aggiungi regola.
Nella finestra Crea regola di avviso, inserisci i seguenti dettagli:
- Un nome per la regola di avviso.
Un'espressione per la regola di avviso (utilizza LogQL per le regole basate su log e PromQL per le regole basate su metriche).
La durata in secondi prima che un avviso passi da in attesa a aperto.
Il livello di gravità, ad esempio Errore o Avviso.
Un nome breve per identificare la risorsa correlata.
Un codice di avviso per identificare l'avviso.
Un URL del runbook o informazioni per la risoluzione dei problemi.
Un messaggio o una descrizione dell'avviso.
(Facoltativo) Aggiungi Etichette e Annotazioni come coppie chiave-valore.
Fai clic su Salva per creare la regola.
Fai clic su Crea per creare il gruppo di regole.
Il gruppo di regole viene visualizzato nell'elenco Gruppo di regole di avviso. Puoi raggruppare altre regole di avviso all'interno di questo gruppo di regole.
API
Crea regole di avviso dalle API di monitoraggio o logging:
Definisci una risorsa personalizzata
MonitoringRule(regole basate su metriche) oLoggingRule(regole basate su log) in un file YAML.La specifica completa della risorsa mostra un esempio per le regole basate su metriche e su log.
Sostituisci i seguenti valori nel file YAML in base alle tue esigenze:
Campo Descrizione namespaceLo spazio dei nomi del progetto. nameIl nome della configurazione della regola di avviso. sourceLa sorgente log per la regola di avviso. Le opzioni valide sono operationaleaudit. Si applica solo alle risorseLoggingRule.intervalLa durata dell'intervallo di valutazione delle regole in secondi. limitFacoltativo. Il numero massimo di avvisi. Imposta su 0per un numero illimitato di avvisi.alertRulesLe definizioni per la creazione di regole di avviso. alertRules.alertIl nome dell'avviso. alertRules.exprUn'espressione LogQL per le regole basate su log o un'espressione PromQL per le regole basate su metriche. L'espressione deve restituire un valore true o false per determinare se l'avviso passa a uno stato in attesa. alertRules.forFacoltativo. La durata in secondi prima che un avviso passi da in attesa a aperto. Il valore predefinito è 0secondi (attivazione immediata).alertRules.labelsCoppie chiave-valore per categorizzare e identificare l'avviso. Richiede le seguenti etichette: severity,codeeresource.alertRules.annotationsFacoltativo. Metadati non identificativi per l'avviso come coppie chiave-valore. Salva il file YAML.
Applica la configurazione delle risorse al server API di gestione nello stesso spazio dei nomi delle regole di avviso basate su metriche o su log:
kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yamlSostituisci quanto segue:
KUBECONFIG_PATH: il percorso del file kubeconfig per il server API di gestione.ALERT_RULE_NAME: il nome del file di definizioneMonitoringRuleoLoggingRule.
Specifica completa della risorsa
Questa sezione contiene i modelli YAML che puoi utilizzare per creare regole di avviso basate su metriche e su log applicando risorse personalizzate. Se crei avvisi dalla console GDC, puoi saltare questa sezione.
Definisci le regole di avviso nelle seguenti risorse personalizzate:
MonitoringRule: regole basate su metriche.LoggingRule: regole basate su log.
MonitoringRule
Il seguente file YAML mostra un modello per la risorsa personalizzata MonitoringRule. Per saperne di più, consulta la
documentazione di riferimento dell'API.
# Configures either an alert or a target record for precomputation.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
# Choose a namespace that matches the project namespace.
# The alert or record is produced in the same namespace.
namespace: PROJECT_NAMESPACE
name: MONITORING_RULE_NAME
spec:
# Rule evaluation interval.
interval: 60s
# Configure the limit for the number of alerts.
# A value of '0' means no limit.
# Optional.
# Default value: '0'
limit: 0
# Configure metric-based alert rules.
alertRules:
# Define an alert name.
- alert: my-metric-based-alert
# Define the PromQL expression to evaluate for this rule.
expr: rate({service_name="bob-service"} [1m])
# The duration in seconds before an alert transitions from pending to open.
# Optional.
# Default value: '0s'
for: 0s
# Define labels to add or overwrite.
# Map of key-value pairs.
# Required labels:
# severity: [error, critical, warning, info]
# code:
# resource: component/service/hardware related to the alert
# Additional labels are optional.
labels:
severity: error
code: 202
resource: AIS
another-label: another-value
# Define annotations to add.
# Map of key-value pairs.
# Optional.
# Recommended annotations:
# message: value of the Message field in the user interface.
# expression: value of the Rule field in the user interface.
# runbookurl: URL of the Actions to take field in the user interface.
annotations:
message: my-alert-message
Sostituisci quanto segue:
PROJECT_NAMESPACE: lo spazio dei nomi del progetto.MONITORING_RULE_NAME: il nome del file di definizioneMonitoringRule.
LoggingRule
Il seguente file YAML mostra un modello per la risorsa personalizzata LoggingRule. Per saperne di più, consulta la
documentazione di riferimento dell'API.
# Configures either an alert or a target record for precomputation.
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
# Choose a namespace that matches the project namespace.
# The alert or record is produced in the same namespace.
namespace: PROJECT_NAMESPACE
name: LOGGING_RULE_NAME
spec:
# Choose the log source to base alerts on (operational or audit logs).
# Optional.
# Valid options: 'operational' and 'audit'
# Default value: 'operational'
source: operational
# Rule evaluation interval.
interval: 60s
# Configure the limit for the number of alerts.
# A value of '0' means no limit.
# Optional.
# Default value: '0'
limit: 0
# Configure log-based alert rules.
alertRules:
# Define an alert name.
- alert: my-log-based-alert
# Define the LogQL expression to evaluate for this rule.
expr: rate({service_name="bob-service"} [1m])
# The duration in seconds before an alert transitions from pending to open.
# Optional.
# Default value: '0s'
for: 0s
# Define labels to add or overwrite.
# Map of key-value pairs.
# Required labels:
# severity: [error, critical, warning, info]
# code:
# resource: component/service/hardware related to the alert
# Additional labels are optional.
labels:
severity: warning
code: 202
resource: AIS
another-label: another-value
# Define annotations to add.
# Map of key-value pairs.
# Optional.
# Recommended annotations:
# message: value of the Message field in the user interface.
# expression: value of the Rule field in the user interface.
# runbookurl: URL of the Actions to take field in the user interface.
annotations:
message: my-alert-message
Sostituisci quanto segue:
PROJECT_NAMESPACE: lo spazio dei nomi del progetto.LOGGING_RULE_NAME: il nome del file di definizioneLoggingRule.