Créer un indicateur de niveau de service

Si vous créez des services personnalisés, vous devez également créer des objectifs de niveau de service (SLO) pour ceux-ci. Il n'existe pas de SLO prédéfinis pour les services personnalisés.

Vous pouvez également créer des SLO personnalisés pour les services détectés automatiquement, mais ce cas d'utilisation est moins courant.

Les SLO sont basés sur des métriques qui mesurent les performances et servent d'indicateurs de niveau de service (SLI). Pour les SLO personnalisés, vous devez identifier les métriques que vous souhaitez utiliser dans vos SLI.

Si vous ne souhaitez pas créer de SLO personnalisés, vous pouvez ignorer cette page.

Caractéristiques des types de métriques appropriés

Vous pouvez créer deux types de SLO pour vos services :

  • SLO basés sur les requêtes
  • SLO basés sur les périodes

Les SLO sont basés sur les types de métriques que vous choisissez en tant que SLI. Les valeurs des types de métriques sont classées en fonction de la relation qui existe entre elles. On parle alors de genre de métrique. Le genre a trois valeurs possibles, GAUGE, DELTA, et CUMULATIVE. Pour en savoir plus, consultez la documentation de MetricKind.

Pour les SLO basés sur les requêtes, votre SLI représente le ratio de bonnes requêtes par rapport au total de requêtes. Le genre de métrique de votre SLI doit être DELTA ou CUMULATIVE. Vous ne pouvez pas utiliser de métriques GAUGE dans les SLI basés sur les requêtes.

Pour les SLO basés sur les périodes, votre SLI représente le nombre de bons résultats au cours d'une période donnée. Les genres de métriques acceptables dépendent de la façon dont vous structurez les SLI. Toutefois, si vous utilisez un SLI basé sur des requêtes, le genre de métrique de votre SLI doit être DELTA ou CUMULATIVE. Vous ne pouvez pas utiliser de métriques GAUGE dans les SLI basés sur les requêtes. Pour en savoir plus, consultez la section Structures des SLI basés sur les périodes.

Pour en savoir plus sur les types de SLO, consultez la page Concepts de la surveillance des services.

Vous pouvez utiliser les types de métriques fournis par Cloud Monitoring ou exploiter les types de métriques personnalisés que vous avez créés. Dans les deux cas, les valeurs sont adaptées au SLI que vous souhaitez créer.

Types de métriques non appropriés

Lorsque vous envisagez d'utiliser un type de métrique comme SLI, évitez les types de métriques à cardinalité élevée. La cardinalité indique le nombre de séries temporelles possibles pouvant être associées au type de métrique. Elle est liée à la précision des valeurs que les libellés de cette métrique peuvent accepter. Pour en savoir plus sur la cardinalité, consultez la section Cardinalité : séries temporelles et libellés.

Les types de métriques dont les libellés prennent des valeurs telles que les horodatages sont susceptibles de présenter une cardinalité très élevée et ne sont pas adaptés à une utilisation en tant que SLI. Les métriques à cardinalité élevée sont souvent des métriques définies par l'utilisateur qui n'ont pas été conçues pour éviter les problèmes de cardinalité. Elles peuvent inclure des métriques basées sur les journaux définies par l'utilisateur et des métriques personnalisées.

Rechercher des types de métriques appropriés

Les informations sur les types de métriques, y compris le genre de métrique, sont disponibles à plusieurs endroits :

  • Le sélecteur de métriques utilisée dans les outils tels que l'explorateur de métriques fournit une fiche informative concernant le type de métrique en surbrillance. Cet outil fonctionne pour les métriques personnalisées et intégrées.

    Par exemple, la capture d'écran suivante montre la fiche informative associée au type de métrique loadbalancing.googleapis.com/https/request_count, telle qu'elle apparaît dans l'explorateur de métriques :

    Métrique d'équilibrage de charge dans l'explorateur de métriques pour laquelle la fiche informative indique le genre de métrique.

    Avec l'explorateur de métriques, vous pouvez également configurer la métrique pour qu'elle imite le comportement de l'API SLO, et ainsi obtenir une représentation JSON de cette configuration. Cette entrée JSON est utile pour créer un SLI manuellement.

  • Les pages de la liste des métriques contiennent des tableaux pour chaque service qui détaillent les types de métriques associés aux services. Ces tableaux incluent tous les types de métriques intégrés, mais pas les types de métriques personnalisés.

    Par exemple, la capture d'écran suivante montre l'entrée pour le type de métrique loadbalancing.googleapis.com/https/request_count, telle qu'elle apparaît dans la liste des métriques d'équilibrage de charge. Ces entrées fournissent souvent plus de détails que les fiches informatives de l'explorateur de métriques.

    Métrique d'équilibrage de charge dans le tableau de référence.

Créer le SLI

Pour la surveillance des services, les données de métriques sont traitées de manières spécifiques, ce que vous pouvez répliquer dans l'explorateur de métriques. Cette page part du principe que vous êtes familier avec l'explorateur de métriques. Pour en savoir plus, consultez la page Explorateur de métriques.

Pour créer un SLI basé sur les requêtes en fonction d'un ratio de séries temporelles, vous avez besoin de deux séries temporelles : une qui représente toutes les requêtes, et une qui représente les bonnes (ou les mauvaises) requêtes. Ce type de SLI possède la structure suivante :

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": TO_BE_IDENTIFIED,
      "goodServiceFilter": TO_BE_IDENTIFIED,
    }
  }

Pour obtenir la valeur du champ goodServiceFilter, procédez comme suit :

  1. Sélectionnez le type de ressource surveillée et le type de métrique. N'oubliez pas que le genre de métrique doit être DELTA ou CUMULATIVE. Le résultat peut inclure de nombreuses séries temporelles différentes.

    Par exemple, sélectionnez le type de ressource http_lb_rule et le type de métrique loadbalancing.googleapis.com/https/request_count.

  2. Utilisez le champ Filtre pour définir le libellé response_code_class sur 200. Ce filtre supprime toutes les séries temporelles ayant d'autres valeurs pour ce libellé. Il est tout de même possible que plusieurs séries temporelles correspondent.

  3. Choisissez l'agrégateur sum pour créer une seule série temporelle. Le graphique de la page Explorateur de métriques affiche la série temporelle résultante.

  4. Cliquez sur Autres options au-dessus du graphique, puis sélectionnez Afficher au format JSON dans le menu.

    La réponse JSON ressemblera à ceci :

    "dataSets": [
      {
        "timeSeriesFilter": {
          "filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""
          "perSeriesAligner": "ALIGN_RATE",
          "crossSeriesReducer": "REDUCE_SUM",
          "secondaryCrossSeriesReducer": "REDUCE_NONE",
          "minAlignmentPeriod": "60s",
          "groupByFields": [],
          "unitOverride": "1"
        },
        "targetAxis": "Y1",
        "plotType": "LINE"
      }
    ],
    

La partie qui vous intéresse est la valeur du champ filter intégré à l'objet dataSets :

"filter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200""

Pour créer la structure SLI, procédez comme suit :

  1. Insérez cette valeur dans la structure SLI en tant que valeur du champ goodServiceFilter.

  2. Insérez également cette valeur dans la structure SLI en tant que valeur de totalServiceFilter, puis supprimez la partie libellé du filtre, metric.label.\"response_code_class\"=\"200\".

L'indicateur de niveau de service qui en résulte est le suivant :

  "requestBased": {
    "goodTotalRatio": {
      "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
      "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
    }
  }

Vous pouvez ensuite insérer ce SLI dans un SLO. Par exemple :

{
   "serviceLevelIndicator": {
      "requestBased": {
        "goodTotalRatio": {
          "totalServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule"",
          "goodServiceFilter": "metric.type="loadbalancing.googleapis.com/https/request_count" resource.type="http_lb_rule" metric.label."response_code_class"="200"",
        }
     }
   },
   "goal": 0.98,
   "calendarPeriod": "WEEK",
   "displayName": "98% Successful requests in a calendar week"
}

Vous pouvez utiliser ce fichier JSON pour créer un SLO, comme décrit dans la section Créer un SLO.