Contrôle et attribution des coûts

Le service Google Cloud Managed Service for Prometheus facture le nombre d'échantillons ingérés dans Cloud Monitoring et les requêtes de lecture adressées à l'API Monitoring. Le nombre d'échantillons ingérés est le principal facteur de coût.

Ce document explique comment contrôler les coûts associés à l'ingestion de métriques et comment identifier les sources d'ingestion volumineuse.

Pour en savoir plus sur la tarification de Managed Service pour Prometheus, consultez la section Récapitulatif des tarifs de Managed Service pour Prometheus.

Afficher une facture

Pour afficher une facture Google Cloud, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Facturation.

    Accéder à Facturation

  2. Si vous disposez de plusieurs comptes de facturation, sélectionnez Go to linked billing account (Accéder au compte de facturation associé) pour consulter le compte de facturation du projet actuel. Pour rechercher un autre compte de facturation, sélectionnez Gérer les comptes de facturation, puis sélectionnez le compte pour lequel vous souhaitez afficher les rapports.

  3. Sélectionnez Rapports.

  4. Dans le menu Services, sélectionnez l'option Stackdriver Monitoring.

  5. Dans le menu Codes SKU, sélectionnez les options suivantes :

    • Échantillons Managed Service pour Prometheus ingérés
    • Surveiller les requêtes API

La capture d'écran suivante montre le rapport de facturation de Managed Service pour Prometheus d'un projet :

Le rapport de facturation de Managed Service pour Prometheus indique l'utilisation actuelle et prévue.

Réduire vos coûts

Pour réduire les coûts associés à l'utilisation de Managed Service pour Prometheus, vous pouvez effectuer les opérations suivantes :

  • Réduisez le nombre de séries temporelles envoyées au service géré en filtrant les données de métriques que vous générez.
  • Réduisez le nombre d'échantillons collectés en modifiant l'intervalle de scraping.
  • Limitez le nombre d'échantillons de métriques à cardinalité élevée potentiellement mal configurées.

Réduire le nombre de séries temporelles

La documentation Open Source Prometheus recommande rarement de filtrer le volume de métriques, ce qui est raisonnable lorsque les coûts sont limités par les coûts des machines. Toutefois, lorsque vous payez un fournisseur de services gérés à l'unité, l'envoi de données illimitées peut entraîner des factures inutilement élevées.

Les exportateurs inclus dans le projet kube-prometheus, en particulier le service kube-state-metrics, peuvent émettre de nombreuses données de métriques. Par exemple, le service kube-state-metrics émet des centaines de métriques, dont la plupart peuvent être sans valeur pour vous en tant que consommateur. Un nouveau cluster à trois nœuds utilisant le projet kube-prometheus envoie environ 900 échantillons par seconde à Managed Service pour Prometheus. Le filtrage de ces métriques superflues peut suffire à maintenir votre facture à un niveau acceptable.

Pour réduire le nombre de métriques, vous pouvez effectuer les opérations suivantes :

Par exemple, si vous utilisez le service kube-state-metrics, vous pouvez commencer par ajouter un filtre keep dans votre configuration de scraping, puis l'ajuster. Par exemple, l'utilisation du filtre suivant sur un nouveau cluster à trois nœuds réduit le volume d'échantillons d'environ 125 échantillons par seconde :

kube_(daemonset|deployment|pod|namespace|node|statefulset).+

Il peut arriver qu'un exportateur entier ne soit pas important. Par exemple, le package kube-prometheus installe par défaut les moniteurs de service suivants, dont la plupart sont inutiles dans un environnement géré :

  • alertmanager
  • coredns
  • grafana
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • kube-state-metrics
  • kubelet
  • node-exporter
  • prometheus
  • prometheus-adapter
  • prometheus-operator

Pour réduire le nombre de métriques que vous exportez, vous pouvez supprimer, désactiver ou arrêter les moniteurs de service dont vous n'avez pas besoin. Par exemple, la désactivation du moniteur de service kube-apiserver sur un nouveau cluster à trois nœuds réduit le volume d'échantillons d'environ 200 échantillons par seconde.

Réduire le nombre d'échantillons collectés

Managed Service pour Prometheus est facturé à l'échantillon. Vous pouvez réduire le nombre d'échantillons ingérés en augmentant la durée de la période d'échantillonnage. Exemple :

  • Le remplacement d'une période d'échantillonnage de 10 secondes par une période d'échantillonnage de 30 secondes peut réduire le volume d'échantillons de 66 %, sans perte importante d'informations.
  • Le remplacement d'une période d'échantillonnage de 10 secondes par une période d'échantillonnage de 60 secondes peut réduire le volume d'échantillons de 83 %.

Pour savoir comment les échantillons sont comptabilisés et l'incidence de la période d'échantillonnage sur le nombre d'échantillons, consultez la section Exemples de tarification basés sur les échantillons ingérés.

Vous pouvez généralement définir l'intervalle de scraping par tâche ou par cible.

Pour la collecte gérée, vous définissez l'intervalle de scraping dans la ressource PodMonitoring à l'aide du champ interval. Pour une collecte auto-déployée, vous définissez l'intervalle d'échantillonnage dans vos configurations de scraping, en définissant généralement un champ interval ou scrape_interval.

Limiter les échantillons de métriques à cardinalité élevée

Vous pouvez créer des métriques à cardinalité élevée en ajoutant des libellés avec un grand nombre de valeurs potentielles, comme un ID utilisateur ou une adresse IP. Ces métriques peuvent générer un très grand nombre d'échantillons. L'utilisation de libellés comportant un grand nombre de valeurs est généralement considérée comme une configuration incorrecte. Vous pouvez éviter les métriques à cardinalité élevée dans vos collecteurs auto-déployés en définissant une valeur sample_limit dans vos configurations de scraping.

Si vous utilisez cette limite, nous vous recommandons de la définir sur une valeur très élevée afin qu'elle ne détecte que les métriques mal configurées. Tous les échantillons dépassant la limite sont supprimés. Il peut s'avérer très difficile de diagnostiquer les problèmes causés par le dépassement de la limite.

L'utilisation d'une limite d'échantillons n'est pas un bon moyen de gérer l'ingestion des échantillons, mais elle peut vous protéger contre une erreur de configuration accidentelle. Pour en savoir plus, consultez la page Utiliser sample_limit pour éviter la surcharge.

Identifier et attribuer les coûts

Vous pouvez utiliser Cloud Monitoring pour identifier les métriques Prometheus qui écrivent le plus grand nombre d'échantillons. Ces métriques représentent la part la plus importante des coûts. Après avoir identifié les métriques les plus coûteuses, vous pouvez modifier vos configurations de scraping pour filtrer ces métriques de manière appropriée.

Les sections suivantes décrivent comment analyser le nombre d'échantillons que vous envoyez à Managed Service pour Prometheus et attribuer un volume élevé à des métriques spécifiques, à des espaces de noms Kubernetes et à des régions Google Cloud.

Identifier les métriques à volume élevé

Pour identifier les métriques Prometheus avec les volumes d'ingestion les plus importants, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Monitoring.

    Accéder à Monitoring

  2. Dans le volet de navigation "Surveillance", cliquez sur  Explorateur de métriques.
  3. Sélectionnez l'onglet Configuration, puis utilisez les informations suivantes pour remplir les champs :
    1. Dans le champ Type de ressource, saisissez ou sélectionnez Attribution de l'ingestion de métriques.
    2. Dans le champ Métrique, saisissez ou sélectionnez Exemples écrits par ID d'attribution.
    3. Dans le champ Grouper par, sélectionnez metric_type.
    4. Dans le champ Agrégateur, sélectionnez somme.

    Le graphique affiche maintenant les volumes d'ingestion pour chaque type de métrique.

  4. Pour identifier les métriques avec les volumes d'ingestion les plus importants, cliquez sur Valeur dans la légende du graphique.

Le graphique obtenu montre vos 300 premières métriques par volume, classées par moyenne. Il ressemble à la capture d'écran suivante :

Le graphique configuré indique le volume d'ingestion de métriques pour chaque métrique.

Identifier les espaces de noms à volume élevé

Vous pouvez également utiliser les types de métriques et de ressources de l'exemple précédent pour attribuer le volume d'ingestion à des espaces de noms Kubernetes spécifiques, puis prendre des mesures appropriées. Exemple :

  • Pour mettre en corrélation le volume d'ingestion global avec les espaces de noms, sélectionnez les libellés suivants dans le champ Grouper par :

    • attribution_dimension
    • attribution_id
  • Pour mettre en corrélation le volume d'ingestion de métriques individuelles avec des espaces de noms, sélectionnez les libellés suivants dans le champ Grouper par :

    • attribution_dimension
    • attribution_id
    • Type de métrique
  • Pour identifier les espaces de noms responsables d'une métrique à volume élevé spécifique, procédez comme suit :

    1. Identifiez le type de métrique à volume élevé à l'aide de l'un des autres exemples permettant de les identifier. Le type de métrique est la chaîne de la légende du graphique qui commence par prometheus.googleapis.com/.
    2. Pour limiter les données du graphique à un type de métrique spécifique, ajoutez un filtre pour le type de métrique dans le champ Filtres. Exemple :

      metric_type=prometheus.googleapis.com/container_tasks_state/gauge

    3. Sélectionnez les libellés suivants dans le champ Grouper par :

      • attribution_dimension
      • attribution_id
  • Pour afficher l'ingestion par région Google Cloud, ajoutez le libellé location au champ Grouper par.

  • Pour afficher l'ingestion par projet Cloud, ajoutez le libellé resource_container au champ Grouper par.