La surveillance des alertes dans l'appliance Google Distributed Cloud (GDC) sous air gap vous permet de suivre et de résoudre les notifications actives dans votre projet après avoir créé des règles d'alerte. Vous pouvez inspecter la gravité, la durée, l'état et les étiquettes des alertes dans la console GDC. Pour les scripts, les jobs Cron et les intégrations personnalisées, interrogez le point de terminaison HTTP Cortex Alertmanager de votre projet avec curl.
Avant de commencer
Pour obtenir les autorisations nécessaires pour interroger et visualiser les alertes, demandez à l'administrateur IAM de votre projet de vous accorder l'un des rôles Project Cortex Alertmanager associés dans l'espace de noms de votre projet. Selon le niveau d'accès et les autorisations dont vous avez besoin, vous pouvez obtenir des rôles d'éditeur ou de lecteur pour cette ressource dans un projet.
Pour obtenir les autorisations nécessaires pour exporter des journaux, demandez à l'administrateur IAM de votre projet de vous accorder le rôle de lecteur Grafana du projet (project-grafana-viewer). Ce processus de contrôle des accès basé sur les rôles vous permet d'accéder aux visualisations de données en toute sécurité. Pour en savoir plus sur ces rôles, consultez Préparer les autorisations IAM.
Le tableau suivant récapitule les exigences de Role pour PA and AO persona.
| Persona | Objet | Cluster | Rôle | Espace de noms | Groupe/Utilisateur | Configuration |
|---|---|---|---|---|---|---|
| PA | alertmanager | org-admin | project-cortex-alertmanager-viewer |
platform-obs | Groupe | 1 |
| PA | alertmanager | org-admin | project-cortex-alertmanager-viewer |
platform-obs | Utilisateur | 2 |
| AO | alertmanager | org-admin | project-cortex-alertmanager-viewer |
PROJECT_NAMESPACE | Groupe | 1 |
| AO | alertmanager | org-admin | project-cortex-alertmanager-viewer |
PROJECT_NAMESPACE | Utilisateur | 2 |
Remplacez les variables suivantes de manière appropriée :
| Variable | Description |
|---|---|
KUBECONFIG |
Vous aurez besoin du fichier kubeconfig du cluster spécifique contenant l'élément NAMESPACE où ce RoleBinding sera appliqué. |
RULE_NAME |
Nom unique de cette ressource RoleBinding dans l'espace de noms. Exemple :pa-cortex-alertmanager-viewer |
NAMESPACE |
Espace de noms Kubernetes dans lequel ce RoleBinding sera créé et appliqué. Recherchez la colonne Namespace dans le tableau précédent. |
EMAIL_ADDRESS |
Identifiant de l'utilisateur auquel le rôle est attribué. Il s'agit souvent d'une adresse e-mail. Par exemple, platform-administrator@example.com. |
ROLE |
Nom du Role contenant les autorisations que vous souhaitez accorder à l'utilisateur. Recherchez les rôles disponibles dans le tableau précédent. |
GROUP_NAME |
Nom de l'Group auquel appartient l'utilisateur PA/AO. Exemple :pa-group |
ZONE |
Nom de la zone |
Configuration 1
Cette configuration accorde à un groupe d'utilisateurs les autorisations nécessaires pour accéder aux alertes PA/AO dans le cluster org. Après avoir défini cette configuration, consultez la section Console de ce document pour afficher les alertes dans la console GDC.
Commande kubectl
Voici le format de commande générique :
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-cortex-alertmanager-viewerExemple :
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --group=my-team --namespace=platform-obsFichier YAML
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
Configuration 2
Cette configuration accorde à un utilisateur les autorisations nécessaires pour accéder aux alertes PA/AO dans le cluster org. Après avoir défini cette configuration, consultez la section Console de ce document pour afficher les alertes dans la console GDC.
Commande kubectl
Voici le format de commande générique :
kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-cortex-alertmanager-viewerExemple :
kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --user=my-email@example.com --namespace=platform-obsChemin d'accès au fichier IAC
/infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>Fichier YAML
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.ioPour en savoir plus sur ces rôles, consultez Préparer les autorisations IAM.
Point de terminaison Grafana
Pour l'opérateur d'application (AO) :
Ouvrez l'URL suivante pour accéder au point de terminaison de votre projet :
https://GDC_URL/PROJECT_NAMESPACE/grafana
Remplacez les éléments suivants :
- GDC_URL : URL de votre organisation dans GDC.
- PROJECT_NAMESPACE : espace de noms de votre projet.
L'interface utilisateur du projet contient des tableaux de bord par défaut, tels que le tableau de bord Alertes - Présentation, qui fournit des informations sur les alertes. Interroger les alertes depuis l'interface utilisateur vous permet de récupérer visuellement les informations d'alerte de votre projet et d'obtenir une vue intégrée des ressources pour identifier et résoudre rapidement les problèmes.
Pour l'administrateur de la plate-forme (PA) :
Ouvrez l'URL suivante pour accéder au point de terminaison de votre projet platform-obs :
https://GDC_URL/platform-obs/grafana
Remplacez GDC_URL par l'URL de votre organisation dans GDC.
L'interface utilisateur de l'instance de surveillance du système contient des tableaux de bord par défaut, tels que le tableau de bord Alerts - Overview (Alertes - Présentation), qui fournit des informations sur les alertes liées à l'observabilité des données. Interroger les alertes depuis l'interface utilisateur vous permet de récupérer visuellement les informations d'alerte de votre projet et d'obtenir une vue intégrée des ressources pour identifier et résoudre rapidement les problèmes.

Figure 1 : Le tableau de bord Alerts - Overview (Alertes - Présentation) dans l'interface utilisateur de Grafana.
Afficher et filtrer les alertes ouvertes
Sélectionnez l'une des méthodes suivantes pour interroger et filtrer les alertes ouvertes à partir de l'espace de noms de votre projet :
Console
Affichez les alertes en cours dans un projet à partir de la console GDC :
- Connectez-vous à la console GDC.
- Dans la console GDC, sélectionnez votre projet.
- Dans le menu de navigation, sélectionnez Opérations > Alertes.
- Sélectionnez l'onglet Alertes.
- Affichez la liste des alertes.
- Dans la section Alertes ouvertes, cliquez sur Filtrer pour n'afficher que les alertes ouvertes. Vous pouvez également filtrer les alertes en fonction d'autres noms ou valeurs de propriété.
- Cliquez sur le nom d'une alerte pour afficher ses détails.
Point de terminaison Cortex
Cette section explique comment accéder aux alertes à l'aide de votre point de terminaison Cortex Alertmanager.
Identifier votre point de terminaison Cortex
L'URL suivante est le point de terminaison de l'instance Cortex de votre projet :
https://GDC_URL/PROJECT_NAMESPACE/cortex/alertmanager/
Remplacez les éléments suivants :
GDC_URL: URL de votre organisation dans GDC.PROJECT_NAMESPACE: l'espace de noms de votre projet.Par exemple, le point de terminaison Cortex pour le projet
platform-obsdans l'organisationorg-1esthttps://org-1/platform-obs/cortex/alertmanager/.
Authentifier la requête curl
- Téléchargez et installez la CLI gdcloud.
Définissez la propriété gdcloud
core/organization_console_url:gdcloud config set core/organization_console_url https://GDC_URLConnectez-vous avec le fournisseur d'identité configuré :
gdcloud auth loginUtilisez votre nom d'utilisateur et votre mot de passe pour vous authentifier et vous connecter.
Une fois la connexion établie, vous pouvez utiliser l'en-tête d'autorisation dans votre requête cURL via la commande
gdcloud auth print-identity-token. Pour en savoir plus, consultez gdcloud auth.
Appeler le point de terminaison Cortex
Pour accéder au point de terminaison Cortex à l'aide de l'outil curl, procédez comme suit :
- Authentifiez la requête
curl. Utilisez
curlpour appeler le point de terminaison Cortex et étendez l'URL à l'aide de la spécification d'API Alertmanager standard (https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers) pour interroger les alertes.Voici un exemple de requête
curl:curl https://GDC_URL/PROJECT_NAME/cortex/alertmanager/api/v1/alertmanagers \ -H "Authorization: Bearer $(gdcloud auth print-identity-token \ --audiences=https://GDC_URL)"Vous obtenez le résultat suivant la commande. La réponse de l'API est au format JSON.
Alertmanager
Alertmanager vous permet de surveiller les notifications d'alerte des applications clientes. Vous pouvez inspecter et désactiver les alertes à l'aide d'Alertmanager, et filtrer ou regrouper les alertes :

Figure 2. Option de menu permettant d'interroger les journaux d'audit à partir d'Alertmanager.
Règles d'alerte prédéfinies
Le tableau suivant liste les règles d'alerte préinstallées dans Prometheus :
| Nom | Description |
|---|---|
| KubeAPIDown (critique) | KubeAPI a disparu de la découverte de cibles Prometheus pendant 15 minutes. |
| KubeClientErrors (avertissement) | Ratio d'erreurs client du serveur d'API Kubernetes > 0,01 pendant 15 minutes. |
| KubeClientErrors (critique) | Le ratio d'erreurs client du serveur d'API Kubernetes est supérieur à 0,1 pendant 15 minutes. |
| KubePodCrashLooping (avertissement) | Le pod est dans un état de boucle de plantage depuis plus de 15 minutes. |
| KubePodNotReady (avertissement) | Le pod est dans un état non prêt depuis plus de 15 minutes. |
| KubePersistentVolumeFillingUp (critique) | Octets disponibles d'un PersistentVolume revendiqué < 0,03. |
| KubePersistentVolumeFillingUp (avertissement) | Octets disponibles d'un PersistentVolume revendiqué < 0,15. |
| KubePersistentVolumeErrors (critique) | Le volume persistant est en phase d'échec ou en attente depuis cinq minutes. |
| KubeNodeNotReady (avertissement) | Le nœud n'est pas prêt depuis plus de 15 minutes. |
| KubeNodeCPUUsageHigh (critique) | L'utilisation du processeur du nœud est supérieure à 80%. |
| KubeNodeMemoryUsageHigh (critique) | L'utilisation de la mémoire du nœud est supérieure à 80%. |
| NodeFilesystemSpaceFillingUp (avertissement) | L'utilisation du système de fichiers du nœud est supérieure à 60%. |
| NodeFilesystemSpaceFillingUp (critique) | L'utilisation du système de fichiers du nœud est supérieure à 85%. |
| CertManagerCertExpirySoon (avertissement) | Un certificat arrive à expiration dans 21 jours. |
| CertManagerCertNotReady (critique) | Un certificat n'est pas prêt à diffuser le trafic après 10 minutes. |
| CertManagerHittingRateLimits (critique) | Une limitation du débit a été atteinte lors de la création et du renouvellement des certificats pendant cinq minutes. |
| DeploymentNotReady (critique) | Un déploiement sur le cluster d'administrateur de l'organisation est dans un état non prêt depuis plus de 15 minutes. |
Exemple d'alertemanagerConfigurationConfigmaps
La syntaxe des configurations dans les ConfigMaps listés par alertmanagerConfigurationConfigmaps doit respecter 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>
Exemple de configuration de règle
# 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>
Interroger les alertes à partir de l'API HTTP
La plate-forme d'observabilité expose un point de terminaison d'API HTTP pour interroger et lire les métriques, les alertes et d'autres données de séries temporelles de votre projet pour la surveillance du système.Interrogez les alertes directement depuis l'API HTTP Observability pour configurer des tâches automatisées, adapter les réponses et créer des intégrations en fonction de votre cas d'utilisation. Par exemple, insérez le résultat dans une autre commande, exportez les détails dans des formats de fichier texte ou configurez un job Cron Linux. Vous pouvez appeler l'API HTTP Observability depuis l'interface de ligne de commande (CLI) ou un navigateur Web, et obtenir le résultat au format JSON.
Cette section explique comment appeler le point de terminaison de l'API HTTP d'observabilité à partir de la CLI à l'aide de la spécification d'APIpour interroger les alertes.
Interrogez les alertes directement depuis l'API HTTP Observability pour configurer des tâches automatisées, adapter les réponses et créer des intégrations en fonction de votre cas d'utilisation. Par exemple, insérez le résultat dans une autre commande, exportez les détails dans des formats de fichier texte ou configurez un job Cron Linux. Vous pouvez appeler l'API HTTP Observability depuis l'interface de ligne de commande (CLI) ou un navigateur Web, et obtenir le résultat au format JSON.
Cette section explique comment appeler le point de terminaison de l'API HTTP Observability à partir de la CLI à l'aide de la spécification de l'API Alertmanager pour interroger des métriques.
Avant de commencer
Pour obtenir les autorisations nécessaires pour accéder au point de terminaison de l'API HTTP d'observabilité, demandez à l'administrateur IAM de votre projet de vous attribuer le rôle Lecteur Project Cortex Alertmanager (project-cortex-alertmanager-viewer) dans l'espace de noms de votre projet.
L'administrateur IAM du projet peut vous accorder l'accès en créant une liaison de rôle :
a. Administrateur racine de l'opérateur d'infrastructure (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. Administrateur racine de l'administrateur de la plate-forme (PA) - 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. Administrateur racine de l'opérateur d'application (AO) - Lecteur Alertmanager du projet Cortex : Projet : $AO_PROJECT Nom d'utilisateur 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
Une fois la liaison de rôle créée, vous pouvez accéder à l'Alertmanager correspondant avec votre nom d'utilisateur.
Vérifier la liaison de rôle
kubectl --kubeconfig $HOME/org-1-admin-kubeconfig get rolebinding -n platform-obs
Pour en savoir plus sur la définition des liaisons de rôles à partir de la console GDC, consultez Accorder l'accès aux ressources.
Point de terminaison Cortex
L'URL suivante est le point de terminaison Cortex permettant d'accéder aux alertes :
https://GDC_URL/PROJECT_NAME/cortex/alertmanager/
Remplacez les éléments suivants :
- GDC_URL : URL de votre organisation dans GDC.
- PROJECT_NAME : nom de votre projet
Appeler le point de terminaison de l'API
Suivez ces étapes pour accéder au point de terminaison de l'API Cortex à partir de la CLI et interroger les alertes :
- Assurez-vous de remplir les conditions préalables.
- Ouvrez la CLI.
Utilisez l'outil
curlpour appeler l'URL du point de terminaison Cortex et étendez l'URL à l'aide de la norme https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers pour interroger les alertes. Exemple :curl https://console.org-1.zone1.google.gdch.test/alice/cortex/alertmanager/api/v1/alertmanagers
Vous obtenez le résultat dans la CLI après la commande. Le format de réponse de l'API est JSON.