Cette page décrit le processus d'extraction des métriques des charges de travail dans les environnements Google Distributed Cloud (GDC) isolés pour faciliter la surveillance et l'observabilité des données.
Vous pouvez extraire et collecter les métriques générées par vos composants au fil du temps. La plate-forme de surveillance propose une API personnalisée pour extraire les métriques des charges de travail en cours d'exécution dans l'espace de noms de votre projet Distributed Cloud. Pour scraper des métriques, vous déployez une ressource personnalisée MonitoringTarget
dans l'espace de noms de votre projet sur le serveur de l'API Management. Une fois cette ressource déployée, la plate-forme de surveillance lance la collecte de données.
La ressource personnalisée MonitoringTarget
indique au pipeline de surveillance d'extraire les pods désignés dans votre projet. Ces pods doivent exposer un point de terminaison HTTP qui fournit des métriques au format d'exposition Prometheus, tel qu'OpenMetrics.
Les métriques extraites sont ensuite affichées dans l'instance Grafana de votre projet, ce qui vous permet d'obtenir des informations sur l'état opérationnel de votre application.
Pour configurer la ressource personnalisée MonitoringTarget
, vous devez spécifier les pods dans l'espace de noms de votre projet pour la collecte des métriques. Vous pouvez personnaliser différents paramètres, y compris la fréquence du scraping, le point de terminaison des métriques des pods, les libellés et les annotations.
Avant de commencer
Pour obtenir les autorisations nécessaires pour gérer les ressources personnalisées MonitoringTarget
, demandez à votre administrateur IAM de l'organisation ou du projet de vous accorder l'un des rôles MonitoringTarget
associés.
Selon le niveau d'accès et les autorisations dont vous avez besoin, vous pouvez obtenir des rôles de créateur, d'éditeur ou de lecteur pour cette ressource dans une organisation ou un projet. Pour en savoir plus, consultez Préparer les autorisations IAM.
Configurer la ressource personnalisée MonitoringTarget
La ressource personnalisée MonitoringTarget
indique à la plate-forme de surveillance où collecter les métriques. Vous pouvez spécifier les pods pour lesquels vous collectez des métriques, le point de terminaison des métriques de ces pods, la fréquence de récupération et tous les paramètres supplémentaires.
Cette ressource définit les configurations suivantes :
- Cibles : pods et leurs points de terminaison dans votre projet qui exposent des métriques.
- Intervalle d'extraction : fréquence à laquelle vous souhaitez extraire les métriques des points de terminaison sélectionnés.
- Personnalisation des libellés : règles facultatives avec toutes les modifications de libellés pour les métriques.
Choisissez l'une des méthodes suivantes pour spécifier les points de terminaison des métriques dans la ressource personnalisée MonitoringTarget
:
- Points de terminaison statiques : vous déclarez explicitement le point de terminaison (port, chemin d'accès, schéma) dans la configuration
MonitoringTarget
. Annotations : les informations sur le point de terminaison des métriques de pod sont récupérées à partir des annotations du fichier
Deployment
du conteneur. Cette méthode offre plus de flexibilité si chaque pod possède des points de terminaison différents.
Points de terminaison statiques
Suivez ces étapes pour exposer les métriques de vos pods sélectionnés sur un point de terminaison défini de manière statique :
Déterminez le projet Distributed Cloud à partir duquel vous souhaitez collecter des métriques à des fins de surveillance.
Dans la spécification de votre pod, déclarez le port qui diffuse les métriques dans le champ
containerPort
. L'exemple suivant montre comment déclarer le port2112
dans la spécification du pod :# ... spec: template: spec: containers: - name: your-container-name ports: - containerPort: 2112 # ...
Dans votre configuration
MonitoringTarget
, spécifiez les détails du point de terminaison (port, chemin d'accès, schéma) dans la sectionpodMetricsEndpoints
pour qu'ils correspondent au port que vous avez exposé dans la spécification du pod.Le fichier YAML suivant montre un exemple de configuration
MonitoringTarget
où chaque pod sélectionné doit exposer des métriques sur le même point de terminaison,http://your-container-name:2112/metrics
:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: # Choose pod labels to consider for this job. # Optional: Map of key-value pairs. # Default: No filtering by label. # To consider every pod in the project namespace, remove selector fields. matchLabels: app: your-app-label podMetricsEndpoints: port: value: 2112 path: # Choose any value for your endpoint. # The /metrics value is an example. value: /metrics scheme: value: http
Appliquez la configuration
MonitoringTarget
au serveur de l'API Management dans le même espace de noms que vos pods cibles :kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Remplacez les éléments suivants :
KUBECONFIG_PATH
: chemin d'accès au fichier kubeconfig pour le serveur de l'API Management.MONITORING_TARGET_NAME
: nom du fichier de définitionMonitoringTarget
.
La plate-forme de surveillance commence à collecter des métriques.
Annotations
Pour exposer des métriques à l'aide d'annotations si chaque pod possède des points de terminaison différents, procédez comme suit :
Déterminez le projet Distributed Cloud à partir duquel vous souhaitez collecter des métriques à des fins de surveillance.
Ajoutez les annotations suivantes à la section
annotations
du fichierDeployment
de votre conteneur :prometheus.io/path
prometheus.io/port
prometheus.io/scheme
L'exemple suivant montre les annotations pour les métriques sur le port
2112
:apiVersion: apps/v1 kind: Deployment metadata: name: your-container-name namespace: your-project-namespace labels: app: your-app-label annotations: # These annotations are not required. They demonstrate selecting # pod metric endpoints through annotations. prometheus.io/path: /metrics prometheus.io/port: \"2112\" prometheus.io/scheme: http
Dans votre configuration
MonitoringTarget
, spécifiez les annotations que vous avez ajoutées au fichierDeployment
du conteneur dans la sectionpodMetricsEndpoints
. Cette spécification indique à la ressource personnalisée de collecter les informations sur le point de terminaison des métriques à partir des annotations sur les pods sélectionnés.Le fichier YAML suivant montre un exemple de configuration
MonitoringTarget
à l'aide d'annotations :apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: matchLabels: app: your-app-label podMetricsEndpoints: port: annotation: prometheus.io/port path: annotation: prometheus.io/path scheme: annotation: prometheus.io/scheme
Appliquez la configuration
MonitoringTarget
au serveur de l'API Management dans le même espace de noms que vos pods cibles :kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yaml
Remplacez les éléments suivants :
KUBECONFIG_PATH
: chemin d'accès au fichier kubeconfig pour le serveur de l'API Management.MONITORING_TARGET_NAME
: nom du fichier de définitionMonitoringTarget
.
La plate-forme de surveillance commence à collecter des métriques.
Consultez la spécification complète de MonitoringTarget
et la documentation de référence de l'API pour découvrir d'autres champs et options.
Spécification complète de MonitoringTarget
Le fichier YAML suivant montre un exemple de spécification complète de la ressource personnalisée MonitoringTarget
. Pour en savoir plus et obtenir une description complète des champs, consultez la documentation de référence de l'API.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
metadata:
# Choose the same namespace as the workload pods.
namespace: PROJECT_NAMESPACE
name: MONITORING_TARGET_NAME
spec:
# Choose matching pattern that identifies pods for this job.
# Optional
# Relationship between different selectors: AND
selector:
# Choose clusters to consider for this job.
# Optional: List
# Default: All clusters applicable to this project.
# Relationship between different list elements: OR
matchClusters:
- string
# Choose pod labels to consider for this job.
# Optional: Map of key-value pairs.
# Default: No filtering by label.
# Relationship between different pairs: AND
matchLabels:
key1: value1
# Choose annotations to consider for this job.
# Optional: Map of key-value pairs
# Default: No filtering by annotation
# Relationship between different pairs: AND
matchAnnotations:
key1: value1
# Configure the endpoint exposed for this job.
podMetricsEndpoints:
# Choose a port either through static value or annotation.
# Optional
# Annotation takes priority.
# Default: static port 80
port:
value: integer
annotation: string
# Choose a path either through static value or annotation.
# Optional
# Annotation takes priority
# Default: static path /metrics
path:
value: string
annotation: string
# Choose a scheme either through a static value (http or https) or annotation.
# Optional
# Annotation takes priority
# Default: static scheme http
scheme:
value: string
annotation: string
# Choose the frequency to scrape the metrics endpoint defined in podMetricsEndpoints
# Optional
# Default: 60s
scrapeInterval: string
# Dynamically rewrite the label set of a target before it gets scraped.
# https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
# Optional
# Default: No filtering by label
metricsRelabelings:
- sourceLabels:
- string
separator: string
regex: string
action: string
targetLabel: string
replacement: string
Remplacez les éléments suivants :
PROJECT_NAMESPACE
: espace de noms de votre projet.MONITORING_TARGET_NAME
: nom du fichier de définitionMonitoringTarget
.