Какой API следует использовать для управления оповещениями и правилами оповещений в Azure?Python

Программы на Python
Ответить
Anonymous
 Какой API следует использовать для управления оповещениями и правилами оповещений в Azure?

Сообщение Anonymous »

На портале Azure я вижу следующее:
Изображение

Далее я с большим успехом выполнил следующие команды cli:

Код: Выделить всё

az monitor metrics alert list --subscription  "$sub"
az monitor activity-log alert list --subscription  "$sub"
Но хоть убей, я не могу найти правильный API для управления оповещениями и правилами оповещений с помощью Python. Просматривая справочник API, я вижу следующее:
Изображение

Обратите внимание, что упоминается Правило обработки оповещений, но не упоминается оповещение или правило оповещения. Упоминаются также мониторы. Являются ли мониторы оповещениями?
Я боролся с онлайн-примерами кода, документацией API и странными LLM, чтобы придумать эту мерзость:

Код: Выделить всё

def alert_rules(self, tag:str = None, do_debug = False):
"""
List metric alerts across all subscriptions
"""
rules = list()
for subscription_id in self.subscriptions:
if do_debug:
logger.info(f"Looking for alert rules in sub {subscription_id}")
try:
monitor_client = self._monitor_client_for_sub(subscription_id)
if monitor_client:
if do_debug:
metric_alerts = list(monitor_client.metric_alerts.list_by_subscription())
scheduled_query_alerts = list(monitor_client.scheduled_query_rules.list_by_subscription())
logger.info(f"  Metric alerts retrieved: {devtools.pformat(metric_alerts)}")
logger.info(f"  Scheduled query alerts retrieved: {devtools.pformat(scheduled_query_alerts)}")

resource_client = self._resource_client_for_sub(subscription_id)
if resource_client:
resource_groups = [rg.name for rg in resource_client.resource_groups.list()]
for rg in resource_groups:
if do_debug:
logger.info(f"  Looking for alert rules in rg {rg}")
for rule in monitor_client.scheduled_query_rules.list_by_resource_group(rg):
logger.debug(f"    {rule}")
rules.append(rule)
else:
if do_debug:
logger.warning(f"  No resource group client for {subscription_id}")
# List all Metric Alert Rules
for rule in monitor_client.metric_alerts.list_by_subscription():
logger.debug(f"  Scheduled Query Alert Rule: {rule}")
rules.append(rule)
# List all Scheduled Query (Log) Alert Rules
for rule in monitor_client.scheduled_query_rules.list_by_subscription():
logger.debug(f"  Scheduled Query Alert Rule: {rule}")
rules.append(rule)

logs_query_client = self._logs_query_client_for_sub(subscription_id)
if do_debug:
#logger.warning(f"Logs query client for {subscription_id}: {devtools.pformat(logs_query_client.__dict__)}")
pass
else:
if do_debug:
logger.warning(f"  No monitor client for {subscription_id}")
except Exception as e:
logger.error(f"* Error listing alert rules for sub {subscription_id}: {e}")
return None
if tag:
if do_debug:
logger.info(f"We have a tag to match: {tag}")
alert_rules_with_tag = []
for rule in rules:
if rule.tags and tag in rule.tags:
alert_rules_with_tag.append(rule)
rules = alert_rules_with_tag
else:
if do_debug:
logger.info(f"No tag")
processed = list()
for rule in rules:
if do_debug:
logger.info(f"Processing rule: {rule}")
processed.append(self.process_rule(rule))

return processed
Это функция-член моего клиентского класса, которая отчаянно пытается разными способами просто составить список правил оповещений. Он создает пустой список, даже если команда cli выдает хороший результат.
Итак, мой вопрос: существует ли этот API? Как мне составить список правил оповещений для моих подписок?

Подробнее здесь: https://stackoverflow.com/questions/791 ... s-in-azure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»