Получать все активные оповещения о подписке в Azure Monitor с помощью Python

#python #azure

#python #azure

Вопрос:

Мне просто нужно было получить все активные оповещения из Azure Monitor для всех ресурсов в подписке с использованием Python.
Для той же цели доступен rest API, проверьте это.
Я проверил это, но он предоставляет определения оповещений / метрик, а не само оповещение.
Доступно ли что-то подобное с использованием Azure python SDK?
Было бы полезно, если бы кто-нибудь мог предоставить некоторую информацию. Заранее спасибо.

Ответ №1:

Это функция, предоставляемая doc. Но он возвращает это: введите описание изображения здесь

Похоже, он не используется для новой версии.

get_all используется для перечисления всех существующих оповещений. Он возвращает контейнер подкачки для итерации по списку Alert объектов.

Установить пакет: pip install azure-mgmt-alertsmanagement

 from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.alertsmanagement import AlertsManagementClient
 
subscription_id = 'subscription_id '
tenant_id = 'tenant_id '
client_id = 'client_id '
client_secret = 'client_secret'
 
credentials = ServicePrincipalCredentials(tenant=tenant_id, client_id=client_id, secret=client_secret)
 
client = AlertsManagementClient(
    credentials,
    subscription_id
)
 
for alert in client.alerts.get_all():
    print((alert.name))
  

Итак, я попытался вызвать REST API с помощью Python. Это работает.

 import requests
import json

client_id = ''
client_secret = ''
subscription_id = ''
tenant_id = ''

# authorize with azure
url = "https://login.microsoftonline.com/"   tenant_id   "/oauth2/v2.0/token"
data = "scope=https://management.azure.com/.defaultamp;client_id="   client_id   "amp;grant_type=client_credentialsamp;client_secret="   client_secret
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
response = requests.post(url, data=data, headers=headers)

# create new resource group using Azure REST API
# https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.AlertsManagement/alerts?api-version=2018-05-05
url = "https://management.azure.com/subscriptions/"   subscription_id   "/providers/Microsoft.AlertsManagement/alerts?api-version=2018-05-05"
headers = { 'Authorization': 'Bearer '   response.json()['access_token']}
response = requests.get(url, headers=headers)

print(response.json())
  

введите описание изображения здесь