Si creas servicios personalizados, también debes crear objetivos de nivel de servicio (SLOs) para ellos. No hay SLOs predefinidos para los servicios personalizados.
También puedes crear SLOs personalizados para los servicios detectados automáticamente, pero no es lo habitual.
Los objetivos de nivel de servicio se basan en métricas que miden el rendimiento y se usan como indicadores de nivel de servicio. En el caso de los SLOs personalizados, debes identificar las métricas que quieres usar en tus SLIs.
Si no vas a crear SLOs personalizados, puedes saltarte esta página.
Características de los tipos de métricas adecuados
Puedes crear dos tipos de SLOs para tus servicios:
- Objetivos de nivel de servicio basados en solicitudes.
- Objetivos de nivel de servicio basados en periodos.
Los SLOs se basan en los tipos de métricas que elijas como SLIs. Los valores de los tipos de métricas se clasifican según su relación entre sí. Esta clasificación se denomina tipo 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 SLOs basados en solicitudes, el SLI representa una proporción de solicitudes válidas respecto al total de solicitudes. El tipo de métrica de tu SLI debe ser DELTA
o CUMULATIVE
. No puedes usar métricas de GAUGE
en indicadores de nivel de servicio basados en solicitudes.
En el caso de los SLOs basados en periodos, el SLI representa un recuento de los resultados correctos en un periodo determinado. Los tipos de métricas aceptables dependen de cómo estructures los indicadores de nivel de servicio. Sin embargo, si usas un indicador de nivel de servicio basado en solicitudes, el tipo de métrica de tu indicador de nivel de servicio debe ser DELTA
o CUMULATIVE
. No puedes usar métricas de GAUGE
en indicadores de nivel de servicio basados en solicitudes.
Para obtener más información, consulta Estructuras de SLIs basadas en ventanas.
Para obtener más información sobre los tipos de SLOs, consulta Conceptos de la monitorización de servicios.
Puede usar los tipos de métricas que proporciona Cloud Monitoring o los tipos de métricas personalizadas que haya creado. En ambos casos, los valores son adecuados para el SLI que quieras crear.
Tipos de métricas no adecuados
Cuando elija un tipo de métrica para usarlo como SLI, evite los tipos de métricas de cardinalidad elevada. La cardinalidad describe el número de series temporales posibles que se pueden asociar al tipo de métrica y está relacionada con la granularidad de los valores que pueden adoptar las etiquetas de métricas. Para obtener más información sobre la cardinalidad, consulta Cardinalidad: series temporales y etiquetas.
Es probable que los tipos de métricas con etiquetas que toman valores como marcas de tiempo tengan una cardinalidad muy alta y no sean una buena opción para usarse como SLIs. Las métricas de alta cardinalidad suelen ser métricas definidas por el usuario que no se han diseñado para evitar problemas de cardinalidad. Entre ellas, se incluyen las métricas basadas en registros y las métricas personalizadas definidas por el usuario.
Buscar tipos de métricas adecuados
La información sobre los tipos de métricas, incluido el tipo de métrica, se puede encontrar en varios lugares:
El selector de métricas que se usa en herramientas como el explorador de métricas muestra una tarjeta emergente con el tipo de métrica resaltado. Esta herramienta funciona con métricas personalizadas y predefinidas.
Por ejemplo, en la siguiente captura de pantalla se muestra la tarjeta emergente de la métrica de tipo
loadbalancing.googleapis.com/https/request_count
, tal como se ve en el explorador de métricas:Con Explorador de métricas, también puedes configurar la métrica para que imite lo que hace la API SLO y obtener una representación JSON de esa configuración. Este JSON es útil para crear un SLI manualmente.
Las páginas de la lista de métricas contienen tablas de cada servicio en las que se detallan los tipos de métricas asociados a los servicios. Estas tablas incluyen todos los tipos de métricas integradas, pero no muestran los tipos de métricas personalizadas.
Por ejemplo, en la siguiente captura de pantalla se muestra la entrada del tipo de métrica
loadbalancing.googleapis.com/https/request_count
, tal como se ve en la lista de métricas de balanceo de carga. Estas entradas suelen proporcionar más detalles que las tarjetas emergentes de Explorador de métricas.
Crear el indicador de nivel de servicio
Para la monitorizació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 da por supuesto que ya sabes cómo usar el explorador de métricas. Si necesitas más información, consulta Explorador de métricas.
Para crear un indicador de nivel de servicio basado en solicitudes a partir de una proporción de serie temporal, necesitas dos series temporales: una que represente todas las solicitudes y otra que represente las solicitudes correctas (o incorrectas). 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
, siga estos pasos:
Selecciona el tipo de recurso monitorizado y el tipo de métrica. Recuerde que el tipo de métrica debe ser
DELTA
oCUMULATIVE
. El resultado puede incluir muchas series temporales diferentes.Por ejemplo, selecciona el tipo de recurso
http_lb_rule
y el tipo de métricaloadbalancing.googleapis.com/https/request_count
.Use el campo Filtro para asignar la etiqueta
response_code_class
a200
. Este filtro elimina cualquier serie temporal con otros valores para esta etiqueta. Puede que aún haya varias series temporales que coincidan.Elige el agregador
sum
para crear una sola serie temporal. El gráfico de la página Explorador de métricas muestra la serie temporal resultante.Haz clic en Más opciones more_vert encima del gráfico y selecciona Ver como JSON en el menú.
El JSON recuperado tiene un aspecto similar al siguiente:
"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" } ],
El fragmento que te interesa es el valor del campo filter
insertado 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 desarrollar la estructura de SLI, sigue estos pasos:
Inserta este valor en la estructura SLI como valor del campo
goodServiceFilter
.También debe insertar este valor en la estructura de SLI como valor de
totalServiceFilter
, pero después debe quitar la parte de la etiqueta del filtro,metric.label.\"response_code_class\"=\"200\"
.
El indicador de nivel de servicio resultante es 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"", } }
Después, 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, tal como se describe en el artículo Crear un SLO.