Servicio administrado de Azure Monitor para grupos de reglas de Prometheus
Las reglas de Prometheus actúan sobre los datos a medida que se recopilan. Se configuran como parte de un grupo de reglas de Prometheus, que se aplica a las métricas de Prometheus en el área de trabajo de Azure Monitor.
Tipos de regla
Existen dos tipos de reglas de Prometheus, tal y como se describe en la tabla siguiente.
Tipo | Descripción |
---|---|
Alerta | Las reglas de alertas le permiten crear una alerta de Azure Monitor en función de los resultados de una consulta de Prometheus Query Language (Prom QL). Las alertas desencadenadas por las reglas de alertas de Prometheus administrado por Azure se procesan y desencadenan notificaciones de forma similar a otras alertas de Azure Monitor. |
Grabando | Las reglas de grabación le permiten calcular previamente expresiones que son con frecuencia necesarias o computacionalmente extensas y almacenar su resultado como un nuevo conjunto de series temporales. Las series temporales que se han creado mediante reglas de grabación se ingieren de nuevo en el área de trabajo de Azure Monitor como nuevas métricas de Prometheus. |
Creación de reglas de Prometheus
Los grupos de reglas de Prometheus administrado por Azure, las reglas de grabación y las reglas de alertas se pueden crear y configurar mediante el tipo de recurso de Azure Microsoft.AlertsManagement/prometheusRuleGroups, donde las reglas de alertas y las reglas de grabación se definen como parte de las propiedades del grupo de reglas. Los grupos de reglas de Prometheus se definen con un ámbito de un área de trabajo de Azure Monitor. Los grupos de reglas de Prometheus se pueden crear mediante plantillas de Azure Resource Manager (ARM), API, CLI de Azure o PowerShell.
Los grupos de reglas de Prometheus administrados por Azure siguen la estructura y la terminología de los grupos de reglas de código abierto de Prometheus. Los nombres de regla, expresión, cláusula "for", etiquetas y anotaciones se admiten en la versión de Azure. Se deben tener en cuenta las siguientes diferencias clave entre los grupos de reglas del OSS y Prometheus administrados por Azure:
- Los grupos de reglas de Prometheus administrados por Azure se administran como recursos de Azure e incluyen información necesaria para la administración de recursos, como la suscripción y el grupo de recursos donde debe residir el grupo de reglas de Azure.
- Las reglas de alertas de Prometheus administradas por Azure incluyen propiedades dedicadas que permiten procesar las alertas como otras alertas de Azure Monitor. Por ejemplo, la gravedad de las alertas, la asociación del grupo de acciones y la configuración de resolución automática de alertas se admiten como parte de las reglas de alerta de Prometheus administradas por Azure.
Nota:
Para los clústeres de AKS o ARC Kubernetes, puede usar algunas de las reglas de alertas recomendadas. Consulte las reglas de alertas predefinidas aquí.
Limitación de reglas a un clúster específico
Opcionalmente, puede limitar las reglas de un grupo de reglas para consultar los datos que se originen en un clúster específico agregando un ámbito de clúster al grupo de reglas o mediante la propiedad clusterName
del grupo de reglas.
Debe limitar las reglas a un único clúster si su área de trabajo de Azure Monitor contiene una gran cantidad de datos de varios clústeres. En tal caso, existe la preocupación de que la ejecución de un único conjunto de reglas en todos los datos pueda causar problemas de rendimiento o limitación. Mediante el ámbito del clúster, puede crear varios grupos de reglas, cada uno configurado con las mismas reglas, con cada grupo abarcando un clúster diferente.
Para limitar el grupo de reglas a un ámbito de clúster mediante una plantilla de ARM, debe agregar el id. de recurso de Azure del clúster a la lista de ámbitos[] del grupo de reglas. La lista de ámbitos debe incluir igualmente el id. de recurso del área de trabajo de Azure Monitor. Los siguientes tipos de recursos de clúster se admiten como ámbito de clúster:
- Clústeres de Azure Kubernetes Service (AKS) (Microsoft.ContainerService/managedClusters)
- Clústeres de Kubernetes habilitados para Azure Arc (Microsoft.kubernetes/connectedClusters)
- Dispositivos conectados a Azure (Microsoft.ResourceConnector/appliances)
Además del id. de clúster, puede configurar la propiedad clusterName del grupo de reglas. La propiedad "clusterName" debe coincidir con la etiqueta cluster
que se agrega a las métricas cuando se extrae de un clúster específico. De manera predeterminada, esta etiqueta se establece en la última parte (nombre de recurso) del id. del clúster. Si ha cambiado esta etiqueta con la configuración "cluster_alias" en el mapa de configuración de extracción de clústeres, debe incluir el valor actualizado en la propiedad "clusterName" del grupo de reglas. Si la extracción usa el valor predeterminado de etiqueta "cluster", la propiedad "clusterName" es opcional.
Este es un ejemplo de cómo se configura un grupo de reglas para limitar la consulta a un clúster específico:
{
"name": "sampleRuleGroup",
"type": "Microsoft.AlertsManagement/prometheusRuleGroups",
"apiVersion": "2023-03-01",
"location": "northcentralus",
"properties": {
"description": "Sample Prometheus Rule Group limited to a specific cluster",
"scopes": [
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.monitor/accounts/<azure-monitor-workspace-name>",
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.containerservice/managedclusters/<myClusterName>"
],
"clusterName": "<myCLusterName>",
"rules": [
{
...
}
]
}
}
Si no se especifican tanto el ámbito del id. de clúster como clusterName
para un grupo de reglas, las reglas en el grupo consultan los datos de todos los clústeres del área de trabajo.
También puede limitar el grupo de reglas a un ámbito de clúster mediante la interfaz de usuario del portal.
Creación o edición del grupo de reglas de Prometheus en Azure Portal
Para crear un nuevo grupo de reglas desde la página principal del portal:
- En el portal, seleccione Monitor>Alertas.
- Seleccione Grupos de reglas de Prometheus
- Seleccione + Crear para abrir el asistente de creación de grupos de reglas
Para editar un nuevo grupo de reglas desde la página principal del portal:
- En el portal, seleccione Monitor>Alertas.
- Seleccione Grupos de reglas de Prometheus para ver la lista de grupos de reglas existentes en la suscripción
- Seleccione el grupo de reglas deseado para ir al modo de edición.
Configuración del ámbito del grupo de reglas
En la pestaña Ámbito del grupo de reglas:
- Seleccione el área de trabajo de Azure Monitor de la lista de áreas de trabajo disponibles en las suscripciones. Las reglas de este grupo consultan los datos de esta área de trabajo.
- Para limitar el grupo de reglas a un ámbito de clúster, seleccione la opción Clúster específico:
- Seleccione el Clúster de la lista de clústeres que ya están conectados al área de trabajo de Azure Monitor seleccionada.
- El valor predeterminado Nombre del clúster se especifica automáticamente. Solo debe cambiar este valor si ha cambiado el valor de la etiqueta del clúster mediante cluster_alias.
- Seleccione Siguiente para configurar los detalles del grupo de reglas.
Configuración de los detalles del grupo de reglas
En la pestaña Detalles del grupo de reglas:
- Seleccione la Suscripción y el Grupo de recursos donde se debe almacenar el grupo de reglas.
- Escriba el Nombre y la Descripción del grupo de reglas. El nombre del grupo de reglas no se puede cambiar después de crear el grupo de reglas.
- Seleccione el período en Evaluar cada para el grupo de reglas. 1 minuto es el valor predeterminado.
- Seleccione si el grupo de reglas se va a habilitar al crearse.
- Seleccione Siguiente para configurar las reglas del grupo.
Configuración de las reglas en el grupo
En la pestaña Reglas del grupo de reglas puede ver la lista de reglas de grabación y las reglas de alerta en el grupo.
Puede agregar hasta un límite de 20 reglas en un solo grupo.
Las reglas se evalúan en el orden en que aparecen en el grupo. Puede cambiar el orden de las reglas mediante las opciones subir y bajar.
Para agregar una nueva regla de grabación:
- Seleccione + Agregar regla de grabación para abrir el panel Crear una regla de grabación.
- Escriba el Nombre de la regla. Este nombre es el nombre de la métrica creada por la regla.
- Escriba la Expresión PromQL para la regla.
- Seleccione si la regla se va a habilitar al crearse.
- Puede escribir Etiquetas opcionales para los pares de clave-valor opcionales de la regla. Estas etiquetas se agregan a la métrica creada por la regla.
- Seleccione Crear para agregar la nueva regla a la lista de reglas.
- Para agregar una nueva regla de alertas:
- Seleccione + Agregar regla de alertas para abrir el panel "Crear una regla de alertas".
- Seleccione la Gravedad de las alertas desencadenadas por esta regla.
- Escriba el Nombre de la regla. Este nombre es el nombre de las alertas desencadenadas por la regla.
- Escriba la Expresión PromQL para la regla.
- Seleccione el valor For para especificar el período entre el momento en que la alerta se vuelve verdadera y el momento en que se activa.
- Puede escribir pares clave-valor opcionales de Anotaciones para la regla. Estas anotaciones se agregan a las alertas desencadenadas por la regla.
- Puede escribir Etiquetas opcionales para los pares de clave-valor opcionales de la regla. Estas etiquetas se agregan a las alertas desencadenadas por la regla.
- Seleccione los grupos de acciones que desencadena la regla.
- Seleccione Resolver automáticamente la alerta para resolver automáticamente las alertas si la condición de regla ya no es verdadera durante el Tiempo para resolver automáticamente.
- Seleccione si la regla se va a habilitar al crearse.
- Seleccione Crear para agregar la nueva regla a la lista de reglas.
Finalización de la creación del grupo de reglas
- En la pestaña Etiquetas, establezca las etiquetas de recursos de Azure necesarias que se van a agregar al recurso del grupo de reglas.
- En la pestaña Revisar y crear, el grupo de reglas se valida y le comunica si hay algún problema. En esta pestaña, también puede seleccionar la opción Ver plantilla de automatización y descargar la plantilla para el grupo que está a punto de crear.
- Cuando se supere la validación y se haya revisado la configuración, seleccione el botón Crear.
- Puede realizar un seguimiento de la implementación del grupo de reglas para asegurarse de que se complete correctamente o recibir una notificación sobre cualquier error.
Crear un grupo de reglas de Prometheus mediante una plantilla de Resource Manager
Puede usar una plantilla de Resource Manager para crear y configurar grupos de reglas de Prometheus, reglas de alertas y reglas de grabación. Las plantillas de Resource Manager le permiten crear y configurar mediante programación grupos de reglas de forma coherente y reproducible en todos los entornos.
Los pasos básicos son los siguientes:
- Use las siguientes plantillas como archivo JSON que describa cómo crear el grupo de reglas.
- Implemente la plantilla mediante cualquier método de implementación, como Azure Portal, la CLI de Azure, Azure PowerShell o la API de REST.
Ejemplo de plantilla para un grupo de reglas de Prometheus
A continuación se muestra una plantilla de ejemplo que crea un grupo de reglas de Prometheus, en el que se incluye una regla de grabación y una regla de alerta. Esta plantilla crea un recurso de tipo Microsoft.AlertsManagement/prometheusRuleGroups
. El ámbito de este grupo está limitado a un solo clúster de AKS. Las reglas se ejecutan en el orden en que aparecen dentro de un grupo.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"name": "sampleRuleGroup",
"type": "Microsoft.AlertsManagement/prometheusRuleGroups",
"apiVersion": "2023-03-01",
"location": "northcentralus",
"properties": {
"description": "Sample Prometheus Rule Group",
"scopes": [
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.monitor/accounts/<azure-monitor-workspace-name>",
"/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.containerservice/managedclusters/<myClusterName>"
],
"enabled": true,
"clusterName": "<myCLusterName>",
"interval": "PT1M",
"rules": [
{
"record": "instance:node_cpu_utilisation:rate5m",
"expression": "1 - avg without (cpu) (sum without (mode)(rate(node_cpu_seconds_total{job=\"node\", mode=~\"idle|iowait|steal\"}[5m])))",
"labels": {
"workload_type": "job"
},
"enabled": true
},
{
"alert": "KubeCPUQuotaOvercommit",
"expression": "sum(min without(resource) (kube_resourcequota{job=\"kube-state-metrics\", type=\"hard\", resource=~\"(cpu|requests.cpu)\"})) / sum(kube_node_status_allocatable{resource=\"cpu\", job=\"kube-state-metrics\"}) > 1.5",
"for": "PT5M",
"labels": {
"team": "prod"
},
"annotations": {
"description": "Cluster has overcommitted CPU resource requests for Namespaces.",
"runbook_url": "https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubecpuquotaovercommit",
"summary": "Cluster has overcommitted CPU resource requests."
},
"enabled": true,
"severity": 3,
"resolveConfiguration": {
"autoResolved": true,
"timeToResolve": "PT10M"
},
"actions": [
{
"actionGroupID": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.insights/actiongroups/<action-group-name>"
}
]
}
]
}
}
]
}
En las tablas siguientes se describe cada una de las propiedades de la definición de regla.
Grupo de reglas
El grupo de reglas contiene las siguientes propiedades.
Nombre | Obligatorio | Type | Descripción |
---|---|---|---|
name |
True | string | Nombre del grupo de reglas de Prometheus |
type |
True | string | Microsoft.AlertsManagement/prometheusRuleGroups |
apiVersion |
True | string | 2023-03-01 |
location |
True | string | Ubicación del recurso fuera de las regiones admitidas. |
properties.description |
False | cadena | Descripción del grupo de reglas. |
properties.scopes |
True | string[] | Debe incluir el id. del área de trabajo de Azure Monitor de destino. Opcionalmente, también puede incluir un id. de clúster más. |
properties.enabled |
False | boolean | Habilitar o deshabilitar grupo. El valor predeterminado es true. |
properties.clusterName |
False | cadena | Debe coincidir con la etiqueta cluster que se agrega a las métricas extraídas del clúster de destino. De manera predeterminada, establezca en la última parte (nombre de recurso) del id. de clúster que aparece en ámbitos[]. |
properties.interval |
False | string | Intervalo de evaluación del grupo. El valor predeterminado es PT1M |
Reglas de grabación
La sección rules
tiene las siguientes propiedades para las reglas de grabación.
Nombre | Obligatorio | Type | Descripción |
---|---|---|---|
record |
True | string | Nombre de la regla de grabación. Este nombre se utiliza para la nueva serie temporal. |
expression |
True | string | Expresión PromQL para calcular el nuevo valor de serie temporal. |
labels |
True | string | La regla de Prometheus etiqueta pares clave-valor. Estas etiquetas se agregan a la serie temporal grabada. |
enabled |
False | boolean | Habilitar o deshabilitar grupo. El valor predeterminado es true. |
Las reglas de alertas
La sección rules
tiene las siguientes propiedades para las reglas de alertas.
Nombre | Obligatorio | Type | Description | Notas |
---|---|---|---|---|
alert |
False | string | Nombre de la regla de alertas | |
expression |
True | string | La expresión PromQL para evaluar. | |
for |
False | string | Tiempo de espera de activación de alertas. Valores: 'PT1M', 'PT5M' etc. | |
labels |
False | object | etiquetas pares clave-valor | Etiquetas de regla de alerta de Prometheus. Estas etiquetas se agregan a las alertas desencadenadas por esta regla. |
rules.annotations |
False | object | Anotaciones pares clave-valor para agregar a la alerta. | |
enabled |
False | boolean | Habilitar o deshabilitar grupo. El valor predeterminado es true. | |
rules.severity |
False | integer | Gravedad de la alerta. 0-4, el valor predeterminado es 3 (informativo) | |
rules.resolveConfigurations.autoResolved |
False | boolean | Cuando está habilitada, la alerta se resuelve automáticamente cuando la condición ya no es verdadera. El valor predeterminado es true | |
rules.resolveConfigurations.timeToResolve |
False | string | Tiempo de espera de resolución automática de alertas. El valor predeterminado es "PT5M" | |
rules.action[].actionGroupId |
false | string | Uno o varios id. de recursos del grupo de acciones. Cada uno se activa cuando se activa una alerta. |
Conversión del archivo de reglas de Prometheus en una plantilla de ARM de grupo de reglas de Prometheus
Si tiene un archivo de configuración de reglas de Prometheus (en formato YAML), ahora puede convertirlo a una plantilla de ARM de grupo de reglas de Azure Prometheus mediante la utilidad az-prom-rules-converter. El archivo de reglas puede contener una definición de uno o varios grupos de reglas.
Además del archivo de reglas, puede proporcionar la utilidad con propiedades adicionales necesarias para crear grupos de reglas de Azure Prometheus, incluidos: suscripción, grupo de recursos, ubicación, área de trabajo de Azure Monitor de destino, id. y nombre del clúster de destino y grupos de acciones (que se usan para las reglas de alerta). La utilidad crea un archivo de plantilla que se puede implementar directamente o dentro de una canalización de implementación que proporciona algunas de estas propiedades como parámetros. Las propiedades que proporcione a la utilidad se usan para todos los grupos de reglas de la plantilla. Por ejemplo, todos los grupos de reglas del archivo se crean en la misma suscripción, grupo de recursos y ubicación, y usan la misma área de trabajo de Azure Monitor. Si se proporciona un grupo de acciones como parámetro para la utilidad, se usa el mismo grupo de acciones en todas las reglas de alerta de la plantilla. Si desea cambiar esta configuración predeterminada (por ejemplo, usar diferentes grupos de acciones en reglas diferentes), puede editar la plantilla resultante según sus necesidades antes de implementarla.
Nota:
Se proporciona az-prom-convert-utility como una herramienta de cortesía. Se recomienda revisar la plantilla resultante y comprobar que coincide con la configuración prevista.
Crear un grupo de reglas de Prometheus mediante la CLI de Azure
Puede usar una CLI de Azure para crear y configurar grupos de reglas de Prometheus, reglas de alertas y reglas de grabación. En los ejemplos siguientes, se usa Azure Cloud Shell.
En el portal, seleccione Cloud Shell. En el símbolo del sistema, utilice los comandos siguientes.
Para crear un grupo de reglas de Prometheus, use el comando
az alerts-management prometheus-rule-group create
. Puede consultar la documentación detallada sobre el comando de creación de grupos de reglas de Prometheus en laaz alerts-management prometheus-rule-group create
sección de los comandos de la CLI de Azure para crear y administrar grupos de reglas de Prometheus.
Ejemplo: Crear un nuevo grupo de reglas de Prometheus con reglas
az alerts-management prometheus-rule-group create -n TestPrometheusRuleGroup -g TestResourceGroup -l westus --enabled --description "test" --interval PT10M --scopes "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/testrg/providers/microsoft.monitor/accounts/testaccount" --rules [{"record":"test","expression":"test","labels":{"team":"prod"}},{"alert":"Billing_Processing_Very_Slow","expression":"test","enabled":"true","severity":2,"for":"PT5M","labels":{"team":"prod"},"annotations":{"annotationName1":"annotationValue1"},"resolveConfiguration":{"autoResolved":"true","timeToResolve":"PT10M"},"actions":[{"actionGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name1","actionProperties":{"key11":"value11","key12":"value12"}},{"actionGroupId":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testrg/providers/microsoft.insights/actionGroups/test-action-group-name2","actionProperties":{"key21":"value21","key22":"value22"}}]}]
Crear un nuevo grupo de reglas de Prometheus con PowerShell
Para crear un grupo de reglas de Prometheus mediante PowerShell, use el cmdlet new-azprometheusrulegroup.
Ejemplo: Crear una definición de grupo de reglas de Prometheus con reglas.
$rule1 = New-AzPrometheusRuleObject -Record "job_type:billing_jobs_duration_seconds:99p5m"
$action = New-AzPrometheusRuleGroupActionObject -ActionGroupId /subscriptions/fffffffff-ffff-ffff-ffff-ffffffffffff/resourceGroups/MyresourceGroup/providers/microsoft.insights/actiongroups/MyActionGroup -ActionProperty @{"key1" = "value1"}
$Timespan = New-TimeSpan -Minutes 15
$rule2 = New-AzPrometheusRuleObject -Alert Billing_Processing_Very_Slow -Expression "job_type:billing_jobs_duration_seconds:99p5m > 30" -Enabled $false -Severity 3 -For $Timespan -Label @{"team"="prod"} -Annotation @{"annotation" = "value"} -ResolveConfigurationAutoResolved $true -ResolveConfigurationTimeToResolve $Timespan -Action $action
$rules = @($rule1, $rule2)
$scope = "/subscriptions/fffffffff-ffff-ffff-ffff-ffffffffffff/resourcegroups/MyresourceGroup/providers/microsoft.monitor/accounts/MyAccounts"
New-AzPrometheusRuleGroup -ResourceGroupName MyresourceGroup -RuleGroupName MyRuleGroup -Location eastus -Rule $rules -Scope $scope -Enabled
Ver grupos de reglas de Prometheus
Puede ver los grupos de reglas de Prometheus y sus reglas incluidas en Azure Portal de una de las maneras siguientes:
- En la página principal del portal, en el cuadro de búsqueda, busque Grupos de reglas de Prometheus.
- En la página principal del portal, seleccione Supervisar>Alertas y, a continuación, seleccione Grupos de reglas de Prometheus.
- En la página de un recurso específico de Azure Kubernetes Services (AKS) o un área de trabajo específica de Azure Monitor (AMW), seleccione Supervisar>Alertas y, a continuación, Grupos de reglas de Prometheus, para ver una lista de grupos de reglas para este recurso específico. Puede seleccionar un grupo de reglas de la lista para ver o editar sus detalles.
Visualización de los estados de mantenimiento de los recursos de los grupos de reglas de Prometheus
Ahora puede ver el estado de mantenimiento de los recursos del grupo de reglas de Prometheus en el portal. Esto puede permitirle detectar problemas en los grupos de reglas, como una configuración incorrecta o problemas de limitación de consultas.
- En el portal, vaya a la información general del grupo de reglas de Prometheus que desea supervisar.
- En el panel izquierdo, en Ayuda, seleccione Estado de los recursos.
- En la pantalla estado de los recursos del grupo de reglas, puede ver el estado de disponibilidad actual del grupo de reglas, así como un historial de eventos recientes de estado de los recursos, de hasta hace 30 días.
- Si el grupo de reglas está marcado como Disponible, funciona según lo previsto.
- Si el grupo de reglas está marcado como Degradado, una o varias reglas del grupo no funcionan según lo previsto. Esto puede deberse a que la consulta de reglas se limita o a otros problemas que pueden provocar un error en la evaluación de la regla. Expanda la entrada de estado para obtener más información sobre el problema detectado, así como sugerencias para la mitigación o para solucionar problemas adicionales.
- Si el grupo de reglas está marcado como No disponible, todo el grupo de reglas no funciona según lo previsto. Esto puede deberse al problema de configuración (por ejemplo, no se puede detectar el área de trabajo de Azure Monitor) o debido a problemas de servicio internos. Expanda la entrada de estado para obtener más información sobre el problema detectado, así como sugerencias para la mitigación o para solucionar problemas adicionales.
- Si el grupo de reglas está marcado como Desconocido, todo el grupo de reglas está deshabilitado o está en un estado desconocido.
Deshabilitar y habilitar grupos de reglas
Para habilitar o deshabilitar una regla, seleccione la regla en Azure Portal. Seleccione Habilitar o Deshabilitar para cambiar su estado.