Crea un indicador de nivel de servicio

Si creas servicios personalizados, también debe crear objetivos de nivel de servicio (SLO) para ellos. No existen SLO predefinidos para servicios personalizados.

También puedes crear SLO personalizados para servicios detectados automáticamente, pero eso es menos común.

Los SLO se crean a partir de métricas que miden el rendimiento y se usan como indicadores de nivel de servicio (SLI). En el caso de los SLO personalizados, debes identificar las métricas que deseas usar en tus SLI.

Si no estás creando SLO personalizados, puedes omitir esta página.

Características de tipos de métricas apropiados

Existen dos tipos de SLO que puedes crear para tus servicios:

  • SLO basados en solicitudes
  • SLO basados en Windows

Los SLO se basan en los tipos de métricas que eliges como SLI. Los valores de los tipos de métricas se clasifican según la relación entre ellos. Esta clasificación se denomina clase de métrica y tiene tres valores posibles: GAUGE, DELTA, y CUMULATIVE. Para obtener más información, consulta MetricKind.

En el caso de los SLO basados en solicitudes, tu SLI representa una proporción entre las solicitudes aceptables y las solicitudes totales. La clase de métrica de tu SLI debe ser DELTA o CUMULATIVE. No puedes usar las métricas GAUGE en los SLO basados en solicitudes.

Para los SLO basados en Windows, tu SLI representa un recuento de resultados aceptables en un período determinado. Las clases de métricas aceptables dependen de la forma en que se estructuran los SLI. Con el fin de obtener más información, consulta la sección sobre estructuras para SLI basadas en Windows.

Para obtener más información sobre los tipos de SLO, consulta la sección de conceptos en la supervisión de servicios.

Puedes usar tipos de métricas proporcionados por Cloud Monitoring, o puedes usar tipos de métricas personalizadas que hayas creado. En ambos casos, los valores son adecuados para el SLI que deseas crear.

Busca tipos de métricas adecuados

La información acerca de los tipos de métricas, incluida la clase de métrica, se puede buscar en varios lugares:

  • El selector de métricas que se usa en herramientas como el Explorador de métricas muestra una tarjeta emergente para el tipo de métrica seleccionado. Esta herramienta funciona para las métricas integradas y personalizadas.

    Por ejemplo, en la siguiente captura de pantalla se puede observar la tarjeta emergente para el tipo de métrica loadbalancing.googleapis.com/https/request_count tal como se ve en el Explorador de métricas:

    Una métrica de balanceo de cargas en el Explorador de métricas con una tarjeta emergente que muestra la clase de métrica.

    Con el Explorador de métricas, también puedes configurar la métrica para que imite lo que lleva a cabo la API de Service Monitoring, y puedes obtener una representación JSON de esa configuración. Este JSON es útil para crear un SLI de forma manual.

  • Las páginas de la Lista de métricas contienen tablas para cada servicio en las que se detallan los tipos de métricas asociados con los servicios. Estas tablas incluyen todos los tipos de métricas integradas, pero no muestran tipos de métricas personalizadas.

    Por ejemplo, en la siguiente captura de pantalla se muestra la entrada para el tipo de métrica loadbalancing.googleapis.com/https/request_count como se ve en la lista de métricas de balanceo de cargas. Estas entradas suelen proporcionar más detalles que las tarjetas emergentes del Explorador de métricas.

    Una métrica de balanceo de cargas en la tabla de referencia.

Compila el SLI

Para la supervisión de servicios, los datos de métricas se procesan de formas específicas, que puedes replicar en el Explorador de métricas. En esta página, se supone que estás familiarizado con el uso del Explorador de métricas. Si necesitas más información, consulta Explorador de métricas.

Para compilar un SLI basado en solicitudes y en una proporción de series temporales, necesitas dos series temporales: una que represente todas las solicitudes y otra que represente las solicitudes aceptables (o erróneas). Este tipo de SLI tiene la siguiente estructura:

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

Para obtener el valor del campo goodServiceFilter, sigue estos pasos:

  1. Selecciona el tipo de recurso supervisado y el tipo de métrica. Recuerda que la clase de métrica debe ser DELTA o CUMULATIVE. El resultado puede incluir muchas series temporales diferentes.

    Por ejemplo, selecciona el tipo de recurso http_lb_rule y el tipo de métrica loadbalancing.googleapis.com/https/request_count.

  2. Usa el campo Filtro para establecer la etiqueta response_code_class en 200. Esto filtro quita cualquier serie temporal que tenga otros valores para esta etiqueta. Es posible que haya varias series temporales que coincidan.

  3. Elige el agregador sum para crear una única serie temporal. El gráfico de la página Explorador de métricas muestra la serie temporal resultante.

  4. Haz clic en Más opciones sobre el gráfico y selecciona Ver como JSON en el menú.

    El JSON recuperado se verá de la siguiente forma:

    "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 pieza que te interesa es el valor del campo filter incorporado en el objeto dataSets:

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

Para compilar la estructura del SLI, sigue estos pasos:

  1. Inserta este valor en la estructura del SLI como el valor del campo goodServiceFilter.

  2. También inserta este valor en la estructura del SLI como el valor de totalServiceFilter, pero luego quita la parte de la etiqueta del filtro, metric.label.\"response_code_class\"=\"200\".

El indicador de nivel de servicio resultante será el siguiente:

  "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"",
    }
  }

Luego, puedes insertar este SLI en un SLO, por ejemplo:

{
   "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"
}

Puedes usar este JSON para crear un SLO, como se describe en Crea un SLO.