En este documento se proporcionan ejemplos de políticas de alertas. Los ejemplos están escritos en JSON y usan filtros de monitorización. Puedes crear políticas en formato JSON o YAML, independientemente de si las defines mediante filtros de Monitoring o con el lenguaje de consulta de Monitoring (MQL). La CLI de Google Cloud puede leer y escribir JSON y YAML, mientras que la API REST puede leer JSON.
Para ver ejemplos de políticas de alertas que usan MQL, consulta los siguientes documentos:
Para obtener información sobre cómo configurar los campos de las políticas de alertas, consulta lo siguiente:
- Crea políticas de alertas basadas en métricas con la Google Cloud consola
- Crear políticas de alertas basadas en métricas con la API
Generar YAML para políticas actuales
Para generar representaciones YAML de tus políticas de alertas, usa el comando gcloud alpha monitoring policies list
para enumerar tus políticas y el comando gcloud alpha monitoring policies describe
para imprimir la política.
Para generar representaciones YAML de tus canales de notificaciones, usa el comando gcloud alpha monitoring channels list
para enumerar tus canales y el comando gcloud alpha monitoring channels describe
para imprimir la configuración del canal.
Si no incluyes la marca --format
en los comandos de la CLI de Google Cloud, 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 la redirección
(>
) copia la salida en el archivo test-policy.yaml
:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml
Generar JSON para las políticas actuales
Para generar representaciones JSON de tus políticas de alertas y canales de notificación, haz lo siguiente:
Añade la marca
--format="json"
a los comandos de la interfaz de línea de comandosgcloud
que se describen en Generar YAML para políticas actuales. Por ejemplo, para enumerar las políticas, ejecuta el siguiente comando:gcloud alpha monitoring policies list --format=json
Usa el widget Explorador de APIs en la página de referencia de cada método de la API:
En el caso de las políticas de alertas, consulta los métodos
alertPolicies.list
yalertPolicies.get
.Para los canales de notificación, consulta los métodos
notificationChannels.list
ynotificationChannels.get
.
Para obtener más información, consulta Explorador de APIs.
Ejemplos de políticas
Como se muestra en el ejemplo de copia de seguridad y restauración, puedes usar las políticas guardadas para crear copias 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 hacer los siguientes cambios en una copia de la política guardada:
- Elimina los siguientes campos de los canales de notificaciones:
name
verificationStatus
- Crea canales de notificaciones antes de hacer referencia a ellos en las políticas de alertas (necesitas los nuevos identificadores de canal).
- Elimine los siguientes campos de las políticas de alertas que esté recreando:
name
condition.name
creationRecord
mutationRecord
Las políticas de este documento se organizan con la misma terminología que se usa en la consola de monitorización. Por ejemplo, "política de tasa de cambio". Hay dos tipos de condiciones: Google Cloud
- Una condición de umbral. Casi todos los tipos de políticas mencionados en la interfaz de usuario son variantes de una condición de umbral.
- Una condición de ausencia
En los ejemplos que se muestran a continuación, 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 manualmente mediante la consola de Google Cloud , pero algunas solo se pueden crear mediante la API Monitoring. Para obtener más información, consulta Crear una política de alertas (interfaz de usuario) o Crear políticas de alertas mediante la API.
Política de umbral de métrica
Una política de umbral de métrica detecta cuándo un valor supera un límite predeterminado. Las políticas de umbral te avisan de que algo se acerca a un punto importante para que puedas tomar medidas. Por ejemplo, la condición de una política de umbral de métrica se cumple cuando el espacio en disco disponible es inferior al 10 % del espacio total en disco.
La siguiente política de alertas usa el uso medio de la CPU como indicador del estado de un grupo de VMs. La condición de la política se cumple cuando la utilización media de la CPU de las VMs de un proyecto, medida en intervalos de 60 segundos, supera un umbral del 90 % 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 en el intervalo definido por el campo duration
.
Una forma de demostrarlo es crear una métrica personalizada.
A continuación, se muestra un descriptor de ejemplo de una métrica personalizada. Puedes crear la métrica con el Explorador de APIs.
{
"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 Información general sobre 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 dejan de escribirse datos en la métrica durante aproximadamente una hora. En otras palabras, tu canalización por horas no se ha ejecutado. 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 previsión cuando ocurre lo siguiente:
- Todas las previsiones de una serie temporal son las mismas dentro del periodo definido por el campo
duration
. - Cloud Monitoring prevé que la serie temporal superará el umbral en el horizonte de previsión.
Una condición de previsión es una condición de umbral de métrica que se configura para usar previsiones. Como se muestra en el siguiente ejemplo, estas condiciones incluyen un campo forecastOptions
que habilita las previsiones y especifica el horizonte de previsión. En el siguiente ejemplo, el horizonte de previsión se ha definido 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 tipo de cambio
Las condiciones de tasa de cambio se cumplen cuando los valores de una serie temporal aumentan o disminuyen al menos el porcentaje especificado por el umbral. Cuando crea este tipo de condición, se aplica un cálculo del porcentaje de cambio a la serie temporal antes de compararla con el umbral.
La condición calcula la media de los valores de la métrica de los últimos 10 minutos y, a continuación, compara el resultado con la media de 10 minutos que se midió justo antes de que empezara el periodo de alineación. No puedes cambiar el periodo de 10 minutos que se usa para las comparaciones en una política de alertas de tasa de cambio. Sin embargo, sí que especifica el periodo de alineación al crear la condición.
Esta política de alertas monitoriza si la utilización de la CPU aumenta rápidamente:
{
"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 agregación de grupos
Esta política de alertas monitoriza si la utilización media de la CPU de 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 da por hecho que existe el siguiente grupo:
{
"name": "projects/a-gcp-project/groups/3691870619975147604",
"displayName": "GKE cluster",
"filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}
Para identificar los campos equivalentes de tus grupos, consulta los detalles de tus grupos mediante el Explorador de APIs en la página de referencia project.groups.list.
Política de comprobación de disponibilidad
El estado de las comprobaciones de disponibilidad del servicio aparece en la página Comprobaciones de disponibilidad del servicio, pero puedes configurar una política de alertas para que Cloud Monitoring te envíe una notificación si se produce un error en la comprobación de disponibilidad del servicio.
Por ejemplo, el siguiente JSON describe una comprobación de tiempo de actividad HTTPS en el sitio Google Cloud . La política de alertas comprueba la disponibilidad cada 5 minutos.
La comprobación de disponibilidad se ha creado con la consola Google Cloud . La representación JSON que se muestra aquí se ha creado enumerando las comprobaciones de disponibilidad del servicio del proyecto mediante la API Monitoring. Consulta uptimeCheckConfigs.list
.
También puedes crear comprobaciones de disponibilidad con la API 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": [
{}
]
}
Para crear una política de alertas para una comprobación de disponibilidad del servicio, consulta la comprobación de disponibilidad del servicio por su UPTIME_CHECK_ID
. Este ID se asigna cuando se crea la comprobación. Aparece como el último componente del campo name
y se muestra en la interfaz de usuario como Check ID
en el resumen de la configuración. Si usas la API Monitoring, el método uptimeCheckConfigs.create
devuelve el ID.
El ID se deriva del displayName
, que se ha definido en la interfaz de usuario en este caso.
Para verificarlo, puede consultar la lista de comprobaciones de disponibilidad y buscar el valor name
.
El ID de la comprobación de disponibilidad que se ha descrito anteriormente es
uptime-check-for-google-cloud-site
.
La condición de la siguiente política de alertas se cumple si la comprobación de disponibilidad del servicio falla o si el certificado SSL del sitio Google Cloud caducará en menos de 15 días. Si se cumple alguna de las condiciones, Monitoring envía una notificación al canal de notificación 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 de la condición especifica la métrica que se está monitorizando
por 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 la métrica identifica la comprobación de disponibilidad específica que se está monitorizando.
En este ejemplo, el campo de la etiqueta check_id
contiene el ID de la comprobación de disponibilidad.
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
Para obtener más información, consulte Monitorizar filtros.
Política de estado del proceso
Una política de estado de los procesos puede notificarte si el número de procesos que coinciden con un patrón supera un umbral. Se puede usar para informarte, por ejemplo, de que un proceso ha dejado de ejecutarse.
Esta política de alertas hace que Monitoring envíe una notificación al canal de notificación especificado cuando no haya ningún proceso que coincida con la cadena nginx
y que se ejecute como usuario www
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.
Relación de métricas
Te recomendamos que uses Monitoring Query Language (MQL) para crear políticas de alertas basadas en ratios. Aunque la API Cloud Monitoring admite la creación de algunas ratios basadas en filtros, MQL ofrece una solución más flexible y robusta:
- Para ver ejemplos de políticas de ratios basadas en MQL, consulta Ejemplos de políticas de alertas de MQL.
- 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 representar gráficamente o monitorizar ratios de métricas, consulta Ratios de métricas.
En esta sección se describe una proporción basada en filtros.
Con la API, puede crear y ver una política que calcule la proporción de dos métricas relacionadas y que se active cuando esa proporción supere un umbral. Las métricas relacionadas deben tener el mismo MetricKind
. Por ejemplo, puedes crear una política de alertas basada en una proporción si ambas métricas son de tipo de valor.
Para determinar el MetricKind
de un tipo de métrica, consulta la lista de métricas.
Una condición de ratio es una variante de una condición de umbral de métrica, en la que la condición de una política de ratio usa dos filtros: el filter
habitual, que actúa como numerador del ratio, y un denominatorFilter
, que actúa como denominador del ratio.
Las series temporales de ambos filtros deben agregarse de la misma forma para 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 supera un valor de umbral en el periodo definido por el campo duration
.
En la siguiente sección se describe cómo configurar una política de alertas que monitorice la proporción de respuestas de error HTTP con respecto a todas las respuestas HTTP.
Ratio de errores HTTP
La siguiente política de alertas tiene una condición de umbral basada en la proporción del número de respuestas de error HTTP con respecto al número total de 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 métricas y de recursos
El tipo de métrica de esta política es appengine.googleapis.com/http/server/response_count
, que tiene dos etiquetas:
response_code
, un entero de 64 bits que representa el código de estado HTTP de la solicitud. Esta política filtra los datos de serie temporal de esta etiqueta, por lo que puede determinar lo siguiente:- Número de respuestas recibidas.
- Número de respuestas de error recibidas.
- La proporción de respuestas de error con respecto al total de respuestas.
loading
, un valor booleano que indica si se estaba cargando la solicitud. La etiquetaloading
no es relevante en esta política de alertas.
La política de alertas evalúa los datos de respuesta de las aplicaciones de App Engine, es decir, los datos procedentes del tipo de recurso monitorizado gae_app
. Este recurso monitorizado tiene tres etiquetas:
project_id
, el ID del proyecto Google Cloud .module_id
, el nombre del servicio o módulo de la aplicación.version_id
, la versión de la aplicación.
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 de respuestas de error con respecto al total de respuestas. La condición se cumple si la proporción es superior al 50 % (es decir, superior a 0,5) durante el periodo de alineación de 5 minutos.
Esta política registra el módulo y la versión de la aplicación que infringe la condición agrupando las series temporales de cada filtro por los valores de esas etiquetas.
- El filtro de la condición analiza las respuestas HTTP de una aplicación App Engine y selecciona las que están en el intervalo de errores 5xx. Es el numerador de la relación.
- El filtro de denominador de la condición analiza todas las respuestas HTTP de una aplicación App Engine.
Se cumple la condición y Monitoring envía una notificación del nuevo incidente inmediatamente. El intervalo de tiempo permitido del campo duration
de la condición es de cero segundos. Esta condición usa un trigger
recuento de uno, que es el número de series temporales que deben incumplir la condición para provocar el incidente. En el caso de una aplicación de App Engine con un solo servicio, un recuento de trigger
es suficiente. Si tienes una aplicación con 20 servicios y quieres que se produzca un incidente si 3 o más servicios infringen la condición, usa un recuento de trigger
de 3.
Configurar una proporción
Los filtros de numerador y denominador son exactamente iguales, excepto que el filtro de condición del numerador coincide con los códigos de respuesta del intervalo de errores, y el filtro de condición del denominador coincide con todos los códigos de respuesta. Las siguientes cláusulas solo aparecen 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 seleccionadas por cada filtro deben agregarse de la misma forma para que el cálculo de la proporción sea válido. Cada filtro puede recoger 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 por etiquetas de recursos especificadas, lo que divide el conjunto de series temporales en varios grupos. Algunas de las series temporales de cada grupo coinciden con el filtro del numerador, mientras que el resto coincide con el filtro del denominador.
Para calcular una proporción, el conjunto de series temporales que coincida con cada filtro debe agregarse en una sola serie temporal. De esta forma, cada grupo tendrá dos series temporales: una para el numerador y otra para el denominador. A continuación, se puede calcular la proporción de puntos de las series temporales del numerador y del denominador de cada grupo.
En esta política, las series temporales de ambos filtros se agregan de la siguiente manera:
Cada filtro crea una serie temporal alineada en intervalos de 5 minutos, con valores representados mediante el cálculo de
ALIGN_DELTA
en los valores de ese periodo de alineación de 5 minutos. Este alineador devuelve el número de respuestas coincidentes de ese periodo de alineación como un entero de 64 bits.Las series temporales de cada filtro también se agrupan por los valores de las etiquetas de recursos del módulo y la versión, de modo que cada grupo contiene dos conjuntos de series temporales alineadas: las que coinciden con el filtro del numerador y las que coinciden con el filtro del denominador.
Las series temporales de cada grupo que coinciden con el filtro del numerador o del denominador se agregan en una sola serie temporal sumando los valores de las series temporales individuales mediante el reductor entre series
REDUCER_SUM
. De este modo, se obtiene una serie temporal para el numerador y otra para el denominador, y cada una de ellas indica el número de respuestas de todas las series temporales coincidentes del periodo de alineación.
A continuación, la política calcula la proporción de los valores de las series temporales del numerador y del denominador que representan a cada grupo. La condición de la política de alertas se cumple cuando la proporción es superior al 50 %.