Gerenciando alertas usando o cliente Python
É possível gerenciar alertas em uma instância do IBM Cloud Monitoring usando o cliente Monitoring Python.
Para saber como usar o cliente Python, consulte Usando o cliente Python.
Criar um alerta (POST)
O código a seguir mostra a estrutura de um script Python que pode ser usado para criar um alerta:
# Reference the Python client
from sdcclient import IbmAuthHelper, SdMonitorClient
# Add the monitoring instance information that is required for authentication
URL = <MONITORING-ENDPOINT>
APIKEY = <IAM_APIKEY>
GUID = <GUID>
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
# Instantiate the Python client
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
# Add the notification channels to send an alert when the alert is triggered
notify_channels = [
{
'type': 'SLACK',
'channel': '<SLACK_CHANNEL_NAME>'
},
{
'type': 'EMAIL',
'emailRecipients': [
'user1@ibm.com', 'user2@ibm.com'
]
}
]
# Get the IDs of the notification channels that you have configured
res = sdclient.get_notification_ids(notify_channels)
if not res[0]:
print("Failed to fetch notification channel ID's")
notification_channel_ids = res
# Create and define the alert details
res = sdclient.create_alert(
name=<ALERT_NAME>,
description=<ALERT_DESCRIPTION>,
severity=<SEVERITY>,
for_atleast_s=<FOR_ATLEAST_S>,
condition=<CONDITION>,
segmentby=<SEGMENTBY>,
segment_condition=<SEGMENT_CONDITION>,
user_filter=<USER_FILTER>,
notify=<NOTIFICATION_CHANNEL_IDS>,
enabled=<ENABLED>,
annotations=<ANNOTATIONS>,
alert_obj=<ALERT_OBJ>
)
if not res[0]:
print("Alert creation failed")
Considere as informações a seguir ao criar um script Python:
-
Deve-se incluir as informações a seguir:
<MONITORING-ENDPOINT>,<IAM_APIKEY>e<GUID>Esses dados são necessários para autenticar a solicitação com a instância de monitoramento. Para obter as informações da instância de monitoramento, consulte Autenticar o seu usuário ou o ID de serviço usando o IAM. -
Você deve definir os canais de notificação através dos quais deseja ser notificado quando o alerta for acionado.
Os tipos de canal de notificação válidos são
SLACK,PAGER_DUTY,VICTOROPS,WEBHOOKeEMAIL.Ao definir os canais de notificação, os canais devem ser configurados na instância de monitoramento.
Ao incluir um canal de notificação por e-mail, é possível incluir vários destinatários. Você separa os valores usando uma vírgula.
Ao definir um canal do Slack, substitua
<SLACK_CHANNEL_NAME>pelo nome de seu canal. Deve-se incluir o símbolo#com o nome do canal, por exemplo,#my_monitoring_alert_channel.
Ao configurar o alerta, complete as seguintes seções:
-
[
nameedescription]: deve-se definir um nome exclusivo para o nome do alerta substituindo<ALERT_NAME>e, opcionalmente, incluir uma descrição substituindo<ALERT_DESCRIPTION>. -
[
severity]: deve-se definir a gravidade do alerta substituindo<SEVERITY>por um número. Os valores válidos são0,1,2,3,4,5,6e7. -
[
for_atleast_s]: deve-se definir o número de segundos consecutivos que a condição foi atendida antes do alerta ser acionado. Substitua<FOR_ATLEAST_S>pelo número de segundos. -
[
condition]: Você deve definir a condição que define quando o alerta é acionado. Por exemplo, é possível configurar esse parâmetro como['host.mac', 'proc.name']para verificar um alerta de CPU para cada processo em cada máquina.Para obter mais informações, consulte Alertas de várias condições.
-
[
segmentby]: é possível definir o escopo do alerta configurando a seçãosegmentedby. O valor padrão éANY. -
[
segment_condition]: quando o parâmetro segmentby for especificado; configure esse campo para determinar quando o alerta será acionado.. Os valores válidos são ANY e ALL. -
[
user_filter]: É possível definir um filtro que indica quando uma notificação é enviada. Por exemplo, é possível definir essa entrada para receber uma notificação somente quando o nome do processo atender à condição. -
[
notify]: é possível definir o tipo de notificações que você deseja que o alerta gere Configure essa entrada para os IDs de notificação dos canais que você definiu. -
[
enabled]: é possível configurar o status do alerta quando ele for criado. Por padrão, os alertas são ativados e a entrada é configurada comotrue. Configure comofalsese você não desejar que ele seja ativado ao ser criado. -
[
annotations]: é possível incluir propriedades customizadas que podem ser associadas ao alerta. -
[
alert_obj]: é possível anexar um objeto de alerta em vez de especificar os parâmetros individuais
Atualizando um alerta (PUT)
Para atualizar um alerta existente, é necessário o ID desse alerta.
O código a seguir mostra a estrutura de um script Python que pode ser usado para atualizar um alerta:
# Reference the Python client
from sdcclient import IbmAuthHelper, SdMonitorClient
# Add the monitoring instance information that is required for authentication
URL = <MONITORING-ENDPOINT>
APIKEY = <IAM_APIKEY>
GUID = <GUID>
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
# Instantiate the Python client
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
res = sdclient.get_alerts()
if not res[0]:
print("Failed to fetch existing alerts")
alert_found = False
for alert in res['alerts']:
if alert['name'] == alert_name:
alert_found = True
if 'notificationChannelIds' in alert:
alert['notificationChannelIds'] = alert['notificationChannelIds'][0:-1]
update_txt = '(changed by update_alert)'
if alert['description'][-len(update_txt):] != update_txt:
alert['description'] = alert['description'] + update_txt
alert['timespan'] = alert['timespan'] * 2 # Note: Expressed in seconds * 1000000
res_update = sdclient.update_alert(alert)
if not res_update:
print("Alert update failed")
if not alert_found:
print('Alert to be updated not found')
Excluindo um alerta (DELETE)
Para excluir um alerta existente, é necessário o ID desse alerta.
O código a seguir mostra a estrutura de um script Python que pode ser usado para excluir um alerta:
# Reference the Python client
from sdcclient import IbmAuthHelper, SdMonitorClient
# Add the monitoring instance information that is required for authentication
URL = <MONITORING-ENDPOINT>
APIKEY = <IAM_APIKEY>
GUID = <GUID>
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
# Instantiate the Python client
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
res = sdclient.get_alerts()
if not res[0]:
print("Failed to fetch existing alerts")
for alert in res['alerts']:
if alert['name'] == alert_name:
print("Deleting alert")
res = sdclient.delete_alert(alert)
if not res:
print("Alert deletion failed")
Obter todos os alertas do usuário (GET)
O código a seguir mostra a estrutura de um script Python que pode ser usado para obter informações sobre todos os alertas:
# Reference the Python client
from sdcclient import IbmAuthHelper, SdMonitorClient
# Add the monitoring instance information that is required for authentication
URL = <MONITORING-ENDPOINT>
APIKEY = <IAM_APIKEY>
GUID = <GUID>
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
# Instantiate the Python client
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
json_res = sdclient.get_alerts()
print(json_res)