Alerts mithilfe des Python-Clients verwalten
Sie können Warnmeldungen in einemIBM Cloud Monitoring Instanz mithilfe derMonitoringPython Klient.
Informationen zur Verwendung des Python-Clients finden Sie unter Python-Client verwenden.
Alert erstellen (POST)
Der folgende Code zeigt die Struktur eines Python-Scripts, das Sie zum Erstellen eines Alerts verwenden können:
# 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")
Beachten Sie Folgendes, wenn Sie ein Python-Script erstellen:
-
Sie müssen die folgenden Informationen angeben:
<MONITORING-ENDPOINT>,<IAM_APIKEY>, Und<GUID>Diese Daten werden benötigt, um die Anfrage bei der Monitoring-Instanz zu authentifizieren. Informationen zum Abrufen der Informationen zur Überwachungsinstanz finden Sie unter Ihren Benutzer oder Ihre Service-ID mithilfe von IAM authentifizieren. -
Sie müssen die Benachrichtigungskanäle definieren, über die Sie benachrichtigt werden möchten, wenn der Alert ausgelöst wird.
Gültige Typen für Benachrichtigungskanäle sind
SLACK,PAGER_DUTY,VICTOROPS,WEBHOOKundEMAIL.Wenn Sie die Benachrichtigungskanäle definieren, müssen die Kanäle in der Überwachungsinstanz konfiguriert sein.
Wenn Sie einen E-Mail-Benachrichtigungskanal hinzufügen, können Sie mehrere Empfänger hinzufügen. Die Werte werden mit Komma getrennt.
Wenn Sie einen Slack-Kanal definieren, ersetzen Sie
<SLACK_CHANNEL_NAME>mit dem Namen Ihres Kanals. Sie müssen das Symbol#in den Namen des Kanals einschließen (z. B.#my_monitoring_alert_channel).
Wenn Sie den Alert konfigurieren, füllen Sie die folgenden Abschnitte aus:
-
[
nameUnddescription] : Sie müssen einen eindeutigen Namen für den Alarmnamen definieren, indem Sie<ALERT_NAME>und fügen Sie optional eine Beschreibung hinzu, indem Sie ersetzen<ALERT_DESCRIPTION>. -
[
severity]: Sie müssen den Schweregrad der Warnung definieren, indem Sie<SEVERITY>mit einer Nummer. Gültige Werte sind0,1,2,3,4,5,6und7. -
[
for_atleast_s]: Sie müssen die Anzahl der aufeinanderfolgenden Sekunden definieren, die die Bedingung erfüllt sein muss, bevor der Alarm ausgelöst wird. Ersetzen<FOR_ATLEAST_S>mit der Anzahl der Sekunden. -
[
condition]: Sie müssen die Bedingung definieren, die bestimmt, wann der Alarm ausgelöst wird. Sie können diesen Parameter beispielsweise auf['host.mac', 'proc.name']setzen, um einen CPU-Alert für jeden Prozess in jedem System festzulegen.Weitere Informationen finden Sie unter Alerts mit mehreren Bedingungen.
-
[
segmentby]: Sie können den Umfang einer Warnung definieren, indem Sie diesegmentedbyAbschnitt. Der Standardwert istANY. -
[
segment_condition]: Wenn der Parameter* segmentieren nach* angegeben ist, legen Sie dieses Feld fest, um zu bestimmen, wann der Alarm ausgelöst wird. Gültige Werte sind ANY und ALL. -
[
user_filter]: Sie können einen Filter definieren, der angibt, wann eine Benachrichtigung gesendet wird. Sie können diesen Eintrag beispielsweise definieren, wenn Sie eine Benachrichtigung nur dann erhalten möchten, wenn der Name des Prozesses die Bedingung erfüllt. -
[
notify]: Sie können die Art der Benachrichtigungen definieren, die der Alarm generieren soll. Legen Sie diesen Eintrag auf die Benachrichtigungs-IDs der von Ihnen definierten Kanäle fest. -
[
enabled]: Sie können den Status der Warnung bei ihrer Erstellung konfigurieren. Standardmäßig sind die Alerts aktiviert und der Eintrag ist auftruegesetzt. Setzen Sie die Einstellung auffalse, wenn sie nicht bei der Erstellung aktiviert werden soll. -
[
annotations]: Sie können benutzerdefinierte Eigenschaften hinzufügen, die Sie der Warnung zuordnen können. -
[
alert_obj]: Sie können ein Alarmobjekt anhängen, anstatt die einzelnen Parameter anzugeben.
Alert aktualisieren (PUT)
Um einen vorhandenen Alert zu aktualisieren, benötigen Sie die ID dieses Alerts.
Der folgende Code zeigt die Struktur eines Python-Scripts, das Sie zum Aktualisieren eines Alerts verwenden können:
# 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')
Alert löschen (DELETE)
Um einen vorhandenen Alert zu löschen, benötigen Sie die ID dieses Alerts.
Der folgende Code zeigt die Struktur eines Python-Scripts, das Sie zum Löschen eines Alerts verwenden können:
# 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")
Alle Benutzeralerts abrufen (GET)
Der folgende Code zeigt die Struktur eines Python-Scripts, das Sie zum Abrufen von Ibformationen zu allen Alerts verwenden können:
# 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)