En este documento, se proporcionan ejemplos de políticas de alertas. Las muestras se escriben en JSON y usan filtros de supervisión. Puedes crear políticas en JSON o YAML, sin importar si defines la política con los filtros de Monitoring o el Lenguaje de consulta de Monitoring (MQL). Google Cloud CLI puede leer y escribir tanto JSON como YAML, mientras que la API de REST puede pueden leer JSON.
Para ver muestras de políticas de alertas que usan MQL, consulta los siguientes documentos:
Para obtener información sobre cómo configurar los campos de la política de alertas, consulta la lo siguiente:
- Crea políticas de alertas basadas en métricas con la consola de Google Cloud
- Crea políticas de alertas basadas en métricas con la API
Genera YAML para políticas existentes
Para generar representaciones YAML de tus políticas de alertas existentes, usa el
Comando gcloud alpha monitoring policies list
para mostrar tu
políticas y la gcloud alpha monitoring policies describe
para imprimir la política.
Para generar representaciones YAML de tus canales de notificaciones existentes, usa el
Comando gcloud alpha monitoring channels list
para mostrar tu
canales y la gcloud alpha monitoring channels describe
para imprimir la configuración del canal.
Si no incluyes la marca --format
en los comandos de Google Cloud CLI, el formato predeterminado será YAML para ambos comandos gcloud ... describe
.
Por ejemplo, el siguiente comando gcloud alpha monitoring policies describe
recupera una sola política llamada
projects/a-gcp-project/alertPolicies/12669073143329903307
y el redireccionamiento
(>
) copia el resultado en el archivo test-policy.yaml
:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml
Genera JSON para políticas existentes
Generar representaciones JSON de tus políticas de alertas existentes y canales de notificaciones, realiza cualquiera de las siguientes acciones:
Agrega la marca
--format="json"
a los comandos de la CLIgcloud
descritos en Genera archivos YAML para las políticas existentes. Por ejemplo, para enumerar las políticas, ejecuta el siguiente comando:gcloud alpha monitoring policies list --format=json
Usa el widget del Explorador de API en la página de referencia para cada método de API:
Para conocer las políticas de alertas, consulta la
alertPolicies.list
yalertPolicies.get
.Para los canales de notificaciones, consulta los métodos
notificationChannels.list
ynotificationChannels.get
.
Para obtener más información, consulta Explorador de APIs.
Muestras de política
Como se muestra en el ejemplo de copia de seguridad y restablecimiento, puedes usar políticas guardadas para crear copias nuevas de esas políticas.
Puedes usar una política guardada en un proyecto para crear una política nueva o similar en otro proyecto. Sin embargo, primero debes realizar los siguientes cambios en una copia de la política guardada:
- Quita los siguientes campos de los canales de notificaciones:
name
verificationStatus
- Crea canales de notificaciones antes de consultar los canales en las políticas de alertas (necesitas los identificadores de canales nuevos).
- Quita los siguientes campos de las políticas de alertas que vuelvas a crear:
name
condition.name
creationRecord
mutationRecord
Las políticas de este documento se organizan usando la misma terminología que Monitoring en la consola de Google Cloud usa, por ejemplo, “política de tasa de cambio”, y hay dos tipos de condiciones:
- Una condición de umbral; casi todos los tipos de políticas mencionados en la IU son variantes de una condición de umbral
- Una condición de ausencia
En los siguientes ejemplos, estas condiciones corresponden a conditionThreshold
y conditionAbsent
. Para obtener más información, consulta la página de referencia de
Condition
Puedes crear muchas de estas políticas de forma manual con la consola de Google Cloud, pero algunas solo se pueden crear con la API de Monitoring. Para obtener más información, consulta Crea una política de alertas (IU) o Crea políticas de alertas con la API.
Política de umbral de métrica
Una política de umbral de métrica detecta cuando algún valor cruza un límite predeterminado. Las políticas de umbral te permiten saber que algo se acerca a un punto importante, para que puedas realizar alguna acción. Por ejemplo, la condición de una política de límite de métricas se cumple cuando el espacio disponible en el disco es inferior al 10% del espacio total.
La siguiente política de alertas utiliza el uso promedio de la CPU como un indicador del del estado de un grupo de VMs. La condición de la política se cumple cuando el uso de CPU promedio la utilización de VMs en un proyecto, medida en intervalos de 60 segundos, supera un umbral del 90% de uso durante 15 minutos (900 segundos):
{
"displayName": "Very high CPU usage",
"combiner": "OR",
"conditions": [
{
"displayName": "CPU usage is extremely high",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"project"
],
"perSeriesAligner": "ALIGN_MAX"
}
],
"comparison": "COMPARISON_GT",
"duration": "900s",
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
AND resource.type=\"gce_instance\"",
"thresholdValue": 0.9,
"trigger": {
"count": 1
}
}
}
],
}
Política de ausencia de métricas
Una condición de ausencia de métrica se cumple cuando no se escriben datos en una métrica dentro del período definido por el campo duration
.
Una forma de demostrar esto es crear una métrica personalizada.
Aquí hay un descriptor de muestra para una métrica personalizada. Puedes crear la métrica con el Explorador de API.
{
"description": "Number of times the pipeline has run",
"displayName": "Pipeline runs",
"metricKind": "GAUGE",
"type": "custom.googleapis.com/pipeline_runs",
"labels": [
{
"description": "The name of the pipeline",
"key": "pipeline_name",
"valueType": "STRING"
},
],
"unit": "1",
"valueType": "INT64"
}
Consulta Descripción general de las métricas definidas por el usuario para obtener más información.
La condición de la siguiente política de alertas se cumple cuando los datos dejan de escribirse en la métrica durante un período de aproximadamente una hora, es decir, si la canalización por hora no se ejecutó. Ten en cuenta que la condición que se usa aquí es
conditionAbsent
{
"displayName": "Data ingestion functioning",
"combiner": "OR",
"conditions": [
{
"displayName": "Hourly pipeline is up",
"conditionAbsent": {
"duration": "3900s",
"filter": "resource.type=\"global\"
AND metric.type=\"custom.googleapis.com/pipeline_runs\"
AND metric.label.pipeline_name=\"hourly\"",
}
}
],
}
Política de previsión
Se cumple una condición de pronóstico cuando ocurre lo siguiente:
- Todas las previsiones de una serie temporal son las mismas dentro del período
definido por el campo
duration
. - Cloud Monitoring prevé que la serie temporal incumplirá el umbral dentro del horizonte de previsión.
Una condición de previsión es una condición de umbral de métrica que se configura
para usar la previsión. Como se ilustra en el siguiente ejemplo, estas condiciones
incluir un campo forecastOptions
que habilite la previsión y especifique la
horizonte de previsión. En el siguiente ejemplo, el horizonte de pronóstico se establece en una hora, que es el valor mínimo:
{
"displayName": "NFS free bytes alert",
"combiner": "OR",
"conditions": [
{
"displayName": "Filestore Instance - Free disk space percent",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "300s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_LT",
"duration": "900s",
"filter": "resource.type = \"filestore_instance\" AND metric.type = \"file.googleapis.com/nfs/server/free_bytes_percent\"",
"forecastOptions": {
"forecastHorizon": "3600s"
},
"thresholdValue": 20,
"trigger": {
"count": 1
}
}
}
],
}
Política de tasa de cambio
Las condiciones de tasa de cambio se cumplen cuando los valores de una serie temporal aumentan o disminuyen, al menos, en el porcentaje especificado por el umbral. Cuando creas este tipo de condición, un cálculo de porcentaje de cambio se aplica a las series temporales antes de la comparación con el umbral.
La condición calcula el promedio de los valores de la métrica de los últimos 10 minutos y, luego, compara el resultado con el promedio de 10 minutos que se midió antes de que comenzara el período de alineación. No puedes cambiar el período de 10 minutos que se usa para hacer comparaciones en una política de alertas de tasa de cambio. Sin embargo, sí puedes especificar el período de alineación cuando creas la condición.
Esta política de alertas supervisa si el uso de CPU aumenta con rapidez:
{
"displayName": "High CPU rate of change",
"combiner": "OR",
"conditions": [
{
"displayName": "CPU usage is increasing at a high rate",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "900s",
"perSeriesAligner": "ALIGN_PERCENT_CHANGE",
}],
"comparison": "COMPARISON_GT",
"duration": "180s",
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
"thresholdValue": 0.5,
"trigger": {
"count": 1
}
}
}
],
}
Política de grupo agregado
Esta política de alertas supervisa si el uso de CPU promedio un clúster de Google Kubernetes Engine supera un umbral:
{
"displayName": "CPU utilization across GKE cluster exceeds 10 percent",
"combiner": "OR",
"conditions": [
{
"displayName": "Group Aggregate Threshold across All Instances in Group GKE cluster",
"conditionThreshold": {
"filter": "group.id=\"3691870619975147604\" AND metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
"comparison": "COMPARISON_GT",
"thresholdValue": 0.1,
"duration": "300s",
"trigger": {
"count": 1
},
"aggregations": [
{
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_MEAN",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"project"
]
},
{
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_SUM",
"crossSeriesReducer": "REDUCE_MEAN"
}
]
},
}
],
}
Esta política supone la existencia del siguiente grupo:
{
"name": "projects/a-gcp-project/groups/3691870619975147604",
"displayName": "GKE cluster",
"filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}
A fin de identificar los campos equivalentes para tus grupos, haz una lista de los detalles de tu grupo con el Explorador de API en la página de referencia project.groups.list.
Política de verificaciones de tiempo de actividad
El estado de las verificaciones aparece en la página Verificaciones de tiempo de actividad, pero puede configurar una política de alertas para que Cloud Monitoring si la verificación de tiempo de actividad falla.
Por ejemplo, el siguiente JSON describe una verificación de tiempo de actividad de HTTPS en el sitio de Google Cloud. La política de alertas verifica la disponibilidad cada 5 minutos.
La verificación de tiempo de actividad se creó con la consola de Google Cloud. La representación JSON en este caso se creó mediante la enumeración de las verificaciones de tiempo de actividad en el proyecto con la API de Monitoring. Consulta uptimeCheckConfigs.list
.
También puedes crear verificaciones de tiempo de actividad con la API de Monitoring.
{
"name": "projects/a-gcp-project/uptimeCheckConfigs/uptime-check-for-google-cloud-site",
"displayName": "Uptime check for Google Cloud site",
"monitoredResource": {
"type": "uptime_url",
"labels": {
"host": "cloud.google.com"
}
},
"httpCheck": {
"path": "/index.html",
"useSsl": true,
"port": 443,
"authInfo": {}
},
"period": "300s",
"timeout": "10s",
"contentMatchers": [
{}
]
}
Si deseas crear una política de alertas para una verificación de tiempo de actividad, consulta la verificación con su UPTIME_CHECK_ID
. Este ID se establece cuando se crea la verificación. Aparece como el último componente del campo name
y en la IU aparece como Check ID
en el resumen de la configuración. Si usas la API de Monitoring, el método uptimeCheckConfigs.create
muestra el ID.
El ID se deriva del displayName
, que se estableció en la IU en este caso.
Se puede verificar si enumeras las verificaciones de tiempo de actividad y observas el valor de name
.
El ID de la verificación de tiempo de actividad que se describió antes es uptime-check-for-google-cloud-site
.
La condición de la siguiente política de alertas se cumple si falla la verificación de tiempo de actividad o si faltan menos de 15 días para que caduque el certificado SSL del sitio de Google Cloud. Si se cumple, Monitoring envía una notificación al canal de notificaciones especificado:
{
"displayName": "Google Cloud site uptime failure",
"combiner": "OR",
"conditions": [
{
"displayName": "Failure of uptime check_id uptime-check-for-google-cloud-site",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_COUNT_FALSE",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_GT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 1,
"trigger": {
"count": 1
}
}
},
{
"displayName": "SSL Certificate for google-cloud-site expiring soon",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_LT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 15,
"trigger": {
"count": 1
}
}
}
],
}
El filtro en la condición especifica la métrica que se supervisa
según su tipo y etiqueta. Los tipos de métricas son monitoring.googleapis.com/uptime_check/check_passed
y monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires
.
La etiqueta de métrica identifica la verificación de tiempo de actividad específica que se supervisa.
En este ejemplo, el campo de etiqueta check_id
contiene el ID de la verificación de tiempo de actividad.
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
Consulta Filtros de supervisión para obtener más información.
Política de estado del proceso
Una política de estado del proceso puede notificarte si la cantidad de procesos que coinciden con un patrón supera un umbral. Esto se puede usar para notificarte, por ejemplo, que un proceso se dejó de ejecutar.
Esta política de alertas hace que Monitoring envíe una notificación a
el canal de notificaciones especificado
cuando no se ha verificado ningún proceso que coincida con la cadena nginx
, que se ejecute como usuario www
disponible durante más de 5 minutos:
{
"displayName": "Server health",
"combiner": "OR",
"conditions": [
{
"displayName": "Process 'nginx' is not running",
"conditionThreshold": {
"filter": "select_process_count(\"has_substring(\\\"nginx\\\")\", \"www\") AND resource.type=\"gce_instance\"",
"comparison": "COMPARISON_LT",
"thresholdValue": 1,
"duration": "300s"
}
}
],
}
Para obtener más información, consulta Estado del proceso.
Proporción de métrica
Te recomendamos que uses el lenguaje de consulta de Monitoring (MQL) para crear políticas de alertas basadas en proporciones. Si bien la API de Cloud Monitoring admite la compilación de algunas proporciones basadas en filtros, MQL proporciona una solución más flexible y sólida:
- Para ver ejemplos de políticas de proporción basadas en MQL, consulta MQL. de políticas de alertas.
- Para obtener información sobre cómo crear políticas de alertas con MQL, consulta Políticas de alertas con MQL.
- Para obtener información sobre cómo graficar o supervisar las proporciones de las métricas, consulta Razones de métricas.
En esta sección, se describe una proporción basada en filtros.
Con la API, puedes crear y ver una política que calcule la proporción de dos métricas relacionadas y que se active cuando esa proporción traspase un límite. Las métricas relacionadas deben tener la misma MetricKind
. Por ejemplo, puedes crear una política de alertas basada en la proporción si ambas métricas son métricas de indicador.
Para determinar el MetricKind
de un tipo de métrica, consulta la Lista de métricas.
Una condición de proporción es una variante de una condición de umbral de métrica, en la que
la condición en una política de proporción usa dos filtros: el filter
habitual,
que actúa como numerador de la proporción y un denominatorFilter
,
que actúa como denominador de la proporción.
Las series temporales de ambos filtros deben agregarse de la misma manera, de modo que el cálculo de la proporción de los valores sea significativo.
La condición de la política de alertas se cumple cuando la proporción de los filtros
infringe un valor de umbral para el intervalo de tiempo definido por
duration
.
En la siguiente sección, se describe cómo configurar una política de alertas que supervise la proporción de respuestas de error HTTP en todas las respuestas HTTP.
Proporción de errores HTTP
La siguiente política de alertas tiene una condición de umbral basada en la proporción entre el recuento de respuestas de errores HTTP y el recuento de todas las respuestas HTTP.
{
"displayName": "HTTP error count exceeds 50 percent for App Engine apps",
"combiner": "OR",
"conditions": [
{
"displayName": "Ratio: HTTP 500s error-response counts / All HTTP response counts",
"conditionThreshold": {
"filter": "metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\" AND
metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"aggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA"
}
],
"denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"denominatorAggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA",
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.5,
"duration": "0s",
"trigger": {
"count": 1
}
}
}
]
}
Tipos de recursos y métricas
El tipo de métrica para esta política es appengine.googleapis.com/http/server/response_count
, que tiene dos etiquetas:
response_code
, un número entero de 64 bits que representa el código de estado HTTP de la solicitud. Esta política filtra los datos de series temporales de esta etiqueta para que pueda determinar lo siguiente:- La cantidad de respuestas recibidas
- La cantidad de respuestas de error recibidas
- La proporción entre respuestas de error y todas las respuestas
loading
, un valor booleano que indica si la solicitud se estaba cargando. La etiquetaloading
es irrelevante en esta política de alertas
La política de alertas evalúa los datos de respuesta de las apps de App Engine, es decir, los datos que se originan del tipo de recurso supervisado gae_app
. Este recurso supervisado tiene estas tres etiquetas:
project_id
, el ID del proyecto de Google Cloudmodule_id
, el nombre del servicio o módulo en la appversion_id
, la versión de la app
Para obtener información de referencia sobre estos tipos de métricas y recursos supervisados, consulta las métricas de App Engine en la lista de métricas y la entrada gae_app
en la lista de recursos supervisados.
¿Qué hace esta política?
Esta condición calcula la proporción entre las respuestas de error y el total de respuestas. La condición se cumple si la proporción es superior al 50%. (es decir, la proporción es mayor que 0.5) durante el período de alineación de 5 minutos.
Esta política captura el módulo y la versión de la app que infringe la condición. Para ello, agrupa la serie temporal de cada filtro por los valores de esas etiquetas.
- El filtro en la condición analiza las respuestas HTTP de una app de App Engine y selecciona esas respuestas en el rango de error de 5xx. Este es el numerador en la proporción.
- El filtro de denominador en la condición analiza todas las respuestas HTTP de una app de App Engine.
Se cumple la condición y Monitoring envía una notificación del incidente nuevo de inmediato. El intervalo de tiempo permitido del campo duration
en la condición es de cero segundos. Esta condición usa un recuento de trigger
de uno,
que es la cantidad de series temporales que deben infringir la condición para causar
el incidente. Para una aplicación de App Engine con un solo servicio,
está bien un recuento de trigger
de uno. Si tienes una app con 20 servicios y quieres provocar un incidente si 3 o más servicios infringen la condición, usa un recuento de trigger
de 3.
Configura una proporción
Los filtros de numerador y denominador son idénticos, excepto que el filtro de condición en el numerador coincide con los códigos de respuesta en el rango de error, y el filtro de condición en el denominador coincide con todos los códigos de respuesta. Las siguientes cláusulas aparecen solo en la condición del numerador:
metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\"
De lo contrario, los filtros de numerador y denominador son los mismos.
Las series temporales que selecciona cada filtro deben agregarse de la misma manera para que el cálculo de la proporción sea válido. Cada filtro puede recopilar varias series temporales, ya que habrá una serie temporal diferente para cada combinación de valores de las etiquetas. Esta política agrupa el conjunto de series temporales según etiquetas de recursos, que particiona el conjunto de series temporales en un conjunto de grupos. Algunas de las series temporales de cada grupo coinciden con el filtro de numerador; el resto coincide con el filtro de denominador.
Para calcular una proporción, se debe agregar el conjunto de series temporales que coincide con cada filtro a una sola serie temporal. Esto deja a cada grupo con dos series temporales, una para el numerador y otra para el denominador. Luego, se puede calcular la proporción de puntos en las series temporales del numerador y denominador de cada grupo.
En esta política, las series temporales de ambos filtros se agregan de la siguiente manera:
Cada filtro crea una cantidad de series temporales alineadas en intervalos de 5 minutos, con valores representados que se calculan
ALIGN_DELTA
en los valores en el período de alineación de 5 minutos. Este alineador devuelve la cantidad de que coinciden con las respuestas en ese período de alineación como un número entero de 64 bits.Las series temporales de cada filtro también se agrupan según los valores de las etiquetas de recursos del módulo y la versión, de modo que cada grupo contenga dos conjuntos de series temporales alineadas, las que coincidan con el filtro de numerador y las que coincidan con el filtro de denominador.
Las series temporales dentro de cada grupo que coincidan con el filtro de numerador o denominador se agregan a una sola serie mediante la suma de los valores en la serie temporal individual con el reductor de series cruzadas
REDUCER_SUM
. Esto da como resultado una serie temporal para el numerador y otra para el denominador; cada una indica la cantidad de respuestas en todas las series temporales coincidentes en el período de alineación.
Luego la política calcula la proporción de los valores para las series temporales del numerador y denominador que representan cada grupo. La condición para la alerta se cumple la política cuando la proporción es superior al 50%.