Ce tutoriel explique comment migrer un pipeline de collecte de métriques basé sur le side-car Stackdriver Prometheus vers des métriques de charge de travail Google Kubernetes Engine (GKE) entièrement gérées. L'utilisation des métriques de charge de travail GKE présente de nombreux avantages par rapport au side-car Stackdriver Prometheus :
- Configuration facile : une commande
kubectl
permettant de déployer une ressource personnalisée PodMonitor suffit pour commencer à collecter des métriques. - Haute configuration : ajustez les points de terminaison scrapés, la fréquence et d'autres paramètres.
- Entièrement gérées : Google gère le pipeline, ce qui réduit le coût total de possession.
- Contrôle des coûts : gérez facilement les coûts Cloud Monitoring grâce au filtrage flexible des métriques.
- Standard ouvert : configurez les métriques liées aux charges de travail à l'aide de la ressource personnalisée PodMonitor, modélisée à partir de la ressource PodMonitor de l'opérateur Prometheus.
- Compatibilité AHP : compatible avec l'adaptateur de métriques personnalisées Stackdriver pour permettre l'autoscaling horizontal sur les métriques personnalisées.
- Meilleurs tarifs : tarifs plus intuitifs, prévisibles et économiques.
- Compatibilité avec Autopilot : les métriques de charge de travail GKE sont disponibles pour les clusters GKE Standard et GKE Autopilot.
Vérifier que vous utilisez le side-car Stackdriver Prometheus
Le side-car Stackdriver Prometheus était auparavant l'approche recommandée pour collecter des métriques de type Prometheus à partir de clusters GKE et les ingérer dans Cloud Monitoring. Dans cette approche, une installation Prometheus existante, généralement exécutée en tant que StatefulSet ou Deployment sous GKE, est corrigée avec un side-car qui exporte toutes les métriques qu'il scrape dans Cloud Monitoring. Le chart Helm Prometheus est un moyen pratique de configurer cette intégration.
Déterminer si les métriques de charge de travail GKE correspondent à votre utilisation
La checklist suivante peut vous aider à déterminer si vous utilisez des fonctionnalités de l'approche side-car Stackdriver Prometheus qui ne peuvent pas être reproduites à l'aide de métriques de charges de travail GKE.
Caractéristique | Assistance/solutions |
---|---|
Prometheus est-il utilisé pour surveiller autre chose que les pods d'un même cluster ? Pour ce faire, vérifiez l'utilisation des éléments suivants :
|
Le rôle pod est prêt à l'emploi. Le rôle endpoint peut être simulé en exposant et en nommant le port. |
Les pods sont-ils sélectionnés en fonction des champs plutôt que des libellés ? | Utilisez un sélecteur de libellés équivalent, qui peut nécessiter l'ajout de nouveaux libellés aux pods souhaités. |
Prometheus est-il configuré avec une forme d'autorisation HTTP ou de TLS mutuelle pour le scraping ? | Cette fonctionnalité n'est pas compatible avec les métriques de charge de travail GKE. |
Prometheus est-il configuré avec metric_relabel_configs qui utilise des actions autres que keep et drop ? |
Cette fonctionnalité n'est pas compatible avec les métriques de charge de travail GKE. |
Utilisez-vous les fonctionnalités d'agrégateur de compteurs ou de renommage de métriques du side-car Stackdriver Prometheus ? | Cette fonctionnalité n'est pas compatible avec les métriques de charge de travail GKE. |
Votre configuration Prometheus inclut-elle des alertes ? | Convertir ces données en alertes dans Monitoring. |
Votre configuration side-car inclut-elle static_metadata ? |
Les métriques de charge de travail GKE collectent vos métriques, mais ignorent la documentation. |
Migrer la configuration Prometheus vers les ressources personnalisées PodMonitor
Pour chaque tâche (élément du tableau scrape_configs
) définie dans la configuration Prometheus, créez une ressource personnalisée PodMonitor correspondante. En voici un exemple :
Configuration Prometheus | CRD PodMonitor |
---|---|
scrape_configs: - job_name: example metrics_path: /metrics scheme: http scrape_interval: 20s kubernetes_sd_configs: - role: endpoints namespaces: names: - gke-workload-metrics selectors: - role: endpoints label: "app=prom-example" field: "port=metrics-port" |
apiVersion: monitoring.gke.io/v1alpha1 kind: PodMonitor metadata: name: example spec: namespaceSelector: matchNames: - gke-workload-metrics selector: matchLabels: app: prom-example podMetricsEndpoints: - port: metrics-port path: /metrics scheme: http interval: 20s |
Migrer la configuration du side-car vers les ressources personnalisées PodMonitor
Les filtres configurés au niveau du side-car s'appliquent à toutes les tâches de scraping. Par conséquent, vous devez ajouter ces configurations à chaque CRD de PodMonitor que vous avez créée à l'étape précédente.
CLI du side-car | CRD PodMonitor |
---|---|
$ stackdriver-prometheus-sidecar \ --include='metric_name{label="foo"}' |
apiVersion: monitoring.gke.io/v1alpha1 kind: PodMonitor metadata: name: example spec: namespaceSelector: matchNames: - gke-workload-metrics selector: matchLabels: app: prom-example podMetricsEndpoints: - port: metrics-port path: /metrics scheme: http interval: 20s metricRelabelings: - sourceLabels: [__name__, label] regex: "^metric_name;foo$" action: keep - sourceLabels: [__name__] |
Afficher les métriques dans Google Cloud Monitoring
Utilisez l'Explorateur de métriques pour vérifier que la métrique est désormais ingérée via le pipeline de métriques de la charge de travail GKE.
Notez que si la métrique s'appelait auparavant external.googleapis.com/prometheus/metric_name
, elle s'appelle désormais workload.googleapis.com/metric_name
. N'oubliez pas de modifier les tableaux de bord ou les alertes qui dépendent de ces métriques pour utiliser plutôt le nouveau schéma de nommage.