2.12. Contrôler l'impact des attributs de métriques non liés dans les projets définis par l'utilisateur


Les développeurs peuvent créer des étiquettes pour définir les attributs des métriques sous la forme de paires clé-valeur. Le nombre de paires clé-valeur potentielles correspond au nombre de valeurs possibles pour un attribut. Un attribut dont le nombre de valeurs potentielles est illimité est appelé attribut non lié. Par exemple, un attribut customer_id est non consolidé car il possède un nombre infini de valeurs possibles.

Chaque paire clé-valeur attribuée possède une série temporelle unique. L'utilisation de nombreux attributs non liés dans les étiquettes peut créer un nombre exponentiel de séries temporelles, ce qui peut avoir un impact sur les performances de Prometheus et l'espace disque disponible.

Les administrateurs de cluster peuvent utiliser les mesures suivantes pour contrôler l'impact des attributs de métriques non liés dans les projets définis par l'utilisateur :

  • Limiter le nombre d'échantillons qui peuvent être acceptés pour chaque analyse de la cible dans les projets définis par l'utilisateur
  • Limiter le nombre d'étiquettes scannées, la longueur des noms d'étiquettes et la longueur des valeurs d'étiquettes.
  • Créer des alertes qui se déclenchent lorsqu'un seuil d'échantillonnage est atteint ou lorsque la cible ne peut pas être scrappée
Note

Pour éviter les problèmes liés à l'ajout de nombreux attributs non liés, limitez le nombre d'échantillons, de noms d'étiquettes et d'attributs non liés que vous définissez pour les métriques. Réduisez également le nombre de combinaisons potentielles de paires clé-valeur en utilisant des attributs liés à un ensemble limité de valeurs possibles.

2.12.1. Définition des limites d'échantillons et d'étiquettes pour les projets définis par l'utilisateur

Vous pouvez limiter le nombre d'échantillons qui peuvent être acceptés par balayage cible dans des projets définis par l'utilisateur. Vous pouvez également limiter le nombre d'étiquettes scrappées, la longueur des noms d'étiquettes et la longueur des valeurs d'étiquettes.

Avertissement

Si vous définissez des limites d'échantillons ou d'étiquettes, aucune autre donnée d'échantillon n'est ingérée pour ce balayage cible une fois la limite atteinte.

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin, ou en tant qu'utilisateur ayant le rôle user-workload-monitoring-config-edit dans le projet openshift-user-workload-monitoring.
  • Vous avez activé la surveillance pour les projets définis par l'utilisateur.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Modifiez l'objet user-workload-monitoring-config ConfigMap dans le projet openshift-user-workload-monitoring:

    $ oc -n openshift-user-workload-monitoring edit configmap user-workload-monitoring-config
  2. Ajoutez la configuration enforcedSampleLimit à data/config.yaml pour limiter le nombre d'échantillons qui peuvent être acceptés par balayage de cible dans les projets définis par l'utilisateur :

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          enforcedSampleLimit: 50000 1
    1
    Une valeur est requise si ce paramètre est spécifié. Cet exemple enforcedSampleLimit limite à 50 000 le nombre d'échantillons pouvant être acceptés par target scrape dans les projets définis par l'utilisateur.
  3. Ajoutez les configurations enforcedLabelLimit, enforcedLabelNameLengthLimit, et enforcedLabelValueLengthLimit à data/config.yaml pour limiter le nombre d'étiquettes scrappées, la longueur des noms d'étiquettes et la longueur des valeurs d'étiquettes dans les projets définis par l'utilisateur :

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: user-workload-monitoring-config
      namespace: openshift-user-workload-monitoring
    data:
      config.yaml: |
        prometheus:
          enforcedLabelLimit: 500 1
          enforcedLabelNameLengthLimit: 50 2
          enforcedLabelValueLengthLimit: 600 3
    1
    Indique le nombre maximal d'étiquettes par balayage. La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de limite.
    2
    Spécifie la longueur maximale en caractères d'un nom d'étiquette. La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de limite.
    3
    Spécifie la longueur maximale en caractères d'une valeur d'étiquette. La valeur par défaut est 0, ce qui signifie qu'il n'y a pas de limite.
  4. Enregistrez le fichier pour appliquer les modifications. Les limites sont appliquées automatiquement.

    Note

    Les configurations appliquées à l'objet user-workload-monitoring-config ConfigMap ne sont pas activées à moins qu'un administrateur de cluster n'ait activé la surveillance pour les projets définis par l'utilisateur.

    Avertissement

    Lorsque les modifications sont enregistrées dans l'objet user-workload-monitoring-config ConfigMap , les pods et autres ressources du projet openshift-user-workload-monitoring peuvent être redéployés. Les processus de surveillance en cours dans ce projet peuvent également être redémarrés.

2.12.2. Création d'alertes d'échantillons scrape

Vous pouvez créer des alertes qui vous préviennent lorsque :

  • La cible ne peut pas être scannée ou n'est pas disponible pour la durée spécifiée for
  • Un seuil d'échantillonnage par raclage est atteint ou dépassé pendant la durée spécifiée for

Conditions préalables

  • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin, ou en tant qu'utilisateur ayant le rôle user-workload-monitoring-config-edit dans le projet openshift-user-workload-monitoring.
  • Vous avez activé la surveillance pour les projets définis par l'utilisateur.
  • Vous avez créé l'objet user-workload-monitoring-config ConfigMap .
  • Vous avez limité le nombre d'échantillons qui peuvent être acceptés par target scrape dans les projets définis par l'utilisateur, en utilisant enforcedSampleLimit.
  • Vous avez installé l'OpenShift CLI (oc).

Procédure

  1. Créez un fichier YAML avec des alertes qui vous informent lorsque les cibles sont en panne et lorsque la limite d'échantillons imposée approche. Le fichier de cet exemple s'appelle monitoring-stack-alerts.yaml:

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      labels:
        prometheus: k8s
        role: alert-rules
      name: monitoring-stack-alerts 1
      namespace: ns1 2
    spec:
      groups:
      - name: general.rules
        rules:
        - alert: TargetDown 3
          annotations:
            message: '{{ printf "%.4g" $value }}% of the {{ $labels.job }}/{{ $labels.service
              }} targets in {{ $labels.namespace }} namespace are down.' 4
          expr: 100 * (count(up == 0) BY (job, namespace, service) / count(up) BY (job,
            namespace, service)) > 10
          for: 10m 5
          labels:
            severity: warning 6
        - alert: ApproachingEnforcedSamplesLimit 7
          annotations:
            message: '{{ $labels.container }} container of the {{ $labels.pod }} pod in the {{ $labels.namespace }} namespace consumes {{ $value | humanizePercentage }} of the samples limit budget.' 8
          expr: scrape_samples_scraped/50000 > 0.8 9
          for: 10m 10
          labels:
            severity: warning 11
    1
    Définit le nom de la règle d'alerte.
    2
    Spécifie le projet défini par l'utilisateur dans lequel la règle d'alerte sera déployée.
    3
    L'alerte TargetDown est déclenchée si la cible ne peut pas être grattée ou si elle n'est pas disponible pendant la durée de l'alerte for.
    4
    Le message qui sera affiché lorsque l'alerte TargetDown se déclenchera.
    5
    Les conditions de l'alerte TargetDown doivent être vraies pendant cette durée avant que l'alerte ne soit déclenchée.
    6
    Définit la gravité de l'alerte TargetDown.
    7
    L'alerte ApproachingEnforcedSamplesLimit est déclenchée lorsque le seuil d'échantillonnage défini est atteint ou dépassé pendant la durée spécifiée for.
    8
    Le message qui sera affiché lorsque l'alerte ApproachingEnforcedSamplesLimit se déclenchera.
    9
    Le seuil de l'alerte ApproachingEnforcedSamplesLimit. Dans cet exemple, l'alerte est déclenchée lorsque le nombre d'échantillons par balayage cible a dépassé 80 % de la limite d'échantillons imposée de 50000. La durée de for doit également s'être écoulée avant que l'alerte ne soit déclenchée. La valeur <number> de l'expression scrape_samples_scraped/<number> > <threshold> doit correspondre à la valeur enforcedSampleLimit définie dans l'objet user-workload-monitoring-config ConfigMap .
    10
    Les conditions de l'alerte ApproachingEnforcedSamplesLimit doivent être vraies pendant cette durée avant que l'alerte ne soit déclenchée.
    11
    Définit la gravité de l'alerte ApproachingEnforcedSamplesLimit.
  2. Appliquer la configuration au projet défini par l'utilisateur :

    $ oc apply -f monitoring-stack-alerts.yaml

Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.