Я пытаюсь создать политику предупреждений MQL в мониторинге GCP через консоль, но когда я пытаюсь сохранить ее, она продолжает выдавать мне ошибку. «Ошибка: невозможно сохранить политику предупреждений. Запрос содержит недопустимый аргумент».
Насколько я вижу, мой запрос действителен. В редакторе запросов не сообщается о проблемах, и он отображает диаграмму, которую я ожидал.
Это представление json, созданное создателем политики:
{
"displayName": "kube_deployment_replicas_mismatch",
"documentation": {
"content": "The expected number of replicas have not been available for 15 minutes or longer",
"mimeType": "text/markdown"
},
"userLabels": {
"type": "application"
},
"conditions": [
{
"displayName": "kube_deployment_replicas_mismatch",
"conditionMonitoringQueryLanguage": {
"duration": "900s",
"trigger": {
"count": 1
},
"evaluationMissingData": "EVALUATION_MISSING_DATA_INACTIVE",
"query": "{ kubernetes.io/anthos/kube_deployment_spec_replicas\n; kubernetes.io/anthos/kube_deployment_status_replicas_available }\n| [metric.deployment]\n| ratio\n| condition val() != 1"
}
}
],
"alertStrategy": {
"autoClose": "604800s"
},
"combiner": "OR",
"enabled": true,
"notificationChannels": [
"projects/xxxxxxxxx/notificationChannels/xxxxxxxxxxx"
]
}
Некоторые операции с таблицами MQL требуют выравнивания входных данных.
Если вы передаете невыровненные входные данные для этих операций с таблицами, MQL автоматически выравнивает данные за вас.
Но это может вызвать проблемы в запросе оповещения. В этих случаях будет запрещено создавать политику предупреждений, использующую этот тип запроса.
Одним из решений является добавление | window 30s
после операции, которая неявно выравнивает данные для вас.
Попытка сделать то же самое для предоставленного вами запроса работает с созданием оповещения.
Вот пример запроса:
fetch istio_canonical_service
| metric 'istio.io/service/server/request_count'
| { filter (metric.response_code < 499); ident }
| group_by [metric.destination_service_namespace]
| ratio
| fraction_less_than(0.50)
| condition val() > 0.20
| window 30s # correctly sets the window to 30s
Перед добавлением | window 30s
я также получил то же самое после его добавления, политика предупреждений была успешно создана.
Для получения дополнительной информации следуйте этому официальному документу.
Обратите внимание, здесь сказано не использовать window
в политиках предупреждений. sliding
может быть более подходящим. В итоге я добавил временную group_by
, которая по умолчанию скользящая: { kubernetes.io/anthos/kube_deployment_spec_replicas; kubernetes.io/anthos/kube_deployment_status_replicas_available } | [metric.deployment] | group_by 60s, max(val()) | ratio | condition val() != 1
Вы можете использовать align rate(10m)
, также я поделился только одним возможным решением.
Хороший, спасибо! Это действительно работает :)