Gestion des alertes à l'aide de l'API Alertes

Vous pouvez gérer les alertes dans une instance IBM Cloud Monitoring en utilisant l'Monitoring API.

Pour savoir comment utiliser cURL, voir Commande cURL.

Obtention des détails sur une alerte utilisateur

Vous pouvez utiliser la commande cURL suivante pour obtenir des informations sur une alerte :

curl -X GET <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"

  • <REST_API_ENDPOINT> indique le point de terminaison visé par l'appel à l'API REST. Pour plus d'informations, voir Noeuds finaux d'API REST Monitoring. Par exemple, le noeud final public d'une instance disponible dans la région us-south est le suivant : https://us-south.monitoring.cloud.ibm.com/api

  • Vous pouvez transmettre plusieurs en-têtes à l'aide de l'indicateur -H.

    Authorization et IBMInstanceID sont les en-têtes requis pour l'authentification.

    TeamID est facultatif. Lorsque vous spécifiez cet en-tête, vous limitez la demande aux données et aux ressources disponibles pour l'équipe spécifiée.

    Pour obtenir AUTH_TOKEN et GUID, voir En-têtes des jetons IAM.

  • <ALERT_ID> définit l'identifiant de l'alerte que vous souhaitez modifier.

Par exemple, le corps de la réponse d'une alerte se présente comme suit :

{
  "alert": {
    "autoCreated": false,
    "condition": "min(min(dallas_prod)) = 0",
    "createdOn": 1551358413000,
    "enabled": false,
    "id": 23211,
    "modifiedOn": 1551634372000,
    "name": "Monitoring Uptime Alert",
    "filter": "env in (\"prod\")",
    "notificationChannelIds": [
      4
    ],
    "segmentBy": [
      "host.hostname"
    ],
    "segmentCondition": {
      "type": "ANY"
    },
    "notificationCount": 60,
    "rateOfChange": false,
    "reNotify": false,
    "severity": 0,
    "severityLabel": "HIGH",
    "teamId": 493,
    "timespan": 60000000,
    "type": "MANUAL",
    "version": 9
  }
}

Création d'une alerte

Vous pouvez utiliser la commande cURL suivante pour créer une alerte :

curl -X POST <REST_API_ENDPOINT>/api/alerts -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json

  • <REST_API_ENDPOINT> indique le point de terminaison visé par l'appel à l'API REST. Pour plus d'informations, voir Noeuds finaux d'API REST Monitoring. Par exemple, le noeud final public d'une instance disponible dans la région us-south est le suivant : https://us-south.monitoring.cloud.ibm.com/api

  • Vous pouvez transmettre plusieurs en-têtes à l'aide de l'indicateur -H.

    Authorization et IBMInstanceID sont les en-têtes requis pour l'authentification.

    TeamID est facultatif. Lorsque vous spécifiez cet en-tête, vous limitez la demande aux données et aux ressources disponibles pour l'équipe spécifiée.

    Pour obtenir AUTH_TOKEN et GUID, voir En-têtes des jetons IAM.

  • Vous pouvez transmettre des données pour créer l'alerte dans le fichier alert.json à l'aide de l'indicateur -d.

    Lorsque vous créez une alerte, incluez les paramètres suivant : type, name, severity, timespan, condition, segmentby, segmentConditionn, filter, notificationChannelIds, enabled

    Pour plus d'informations, voir Schéma des alertes.

L'exemple suivant illustre les paramètres de corps de demande que vous pouvez définir pour créer une alerte :

{
  "alert": {
    "version": null,
    "name": "My Alert!",
    "description": null,
    "teamId": null,
    "enabled": false,
    "filter": null,
    "type": "MANUAL",
    "condition": "avg(timeAvg(uptime)) <= 0",
    "timespan": 600000000,
    "notificationChannelIds": [],
    "reNotify": false,
    "reNotifyMinutes": 30,
    "segmentBy": [
      "host.hostName"
    ],
    "segmentCondition": {
      "type": "ANY"
    },
    "severityLabel": "LOW"
  }
}

Mise à jour d'une alerte

Pour mettre à jour une alerte existante, vous avez besoin de l'ID de cette alerte.

Vous pouvez utiliser la commande cURL suivante pour mettre à jour une alerte :

curl -X PUT <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json

  • <REST_API_ENDPOINT> indique le point de terminaison visé par l'appel à l'API REST. Pour plus d'informations, voir Noeuds finaux d'API REST Monitoring. Par exemple, le noeud final public d'une instance disponible dans la région us-south est le suivant : https://us-south.monitoring.cloud.ibm.com/api

  • Vous pouvez transmettre plusieurs en-têtes à l'aide de l'indicateur -H.

    Authorization et IBMInstanceID sont les en-têtes requis pour l'authentification.

    TeamID est facultatif. Lorsque vous spécifiez cet en-tête, vous limitez la demande aux données et aux ressources disponibles pour l'équipe spécifiée.

    Pour obtenir AUTH_TOKEN et GUID, voir En-têtes des jetons IAM.

  • <ALERT_ID> définit l'identifiant de l'alerte que vous souhaitez modifier.

  • Vous pouvez transmettre des données pour créer l'alerte dans le fichier alert.json à l'aide de l'indicateur -d.

    Pour plus d'informations, voir Schéma des alertes.

L'exemple suivant illustre les paramètres de corps de demande que vous pouvez définir pour mettre à jour une alerte :

{
  "alert": {
      "type": "MANUAL",
      "id": 23212,
      "version": 10,
      "name": "CheckNginxConnections",
      "description": "Active connections of nginx server",
      "enabled": false,
      "severity": 2,
      "timespan": 1000000,
      "condition": "avg(avg(nginx.net.connections)) > 1000",
      "segmentBy": [
          "host.hostName"
      ],
      "segmentCondition": {
          "type": "ANY"
      },
      "notificationChannelIds": [
          2
      ]
    }
}

Supprimer une alerte

Pour supprimer une alerte existante, vous avez besoin de l'ID de cette alerte.

Vous pouvez utiliser la commande cURL suivante pour supprimer une alerte :

curl -X DELETE <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"

  • <REST_API_ENDPOINT> indique le point de terminaison visé par l'appel à l'API REST. Pour plus d'informations, voir Noeuds finaux d'API REST Monitoring. Par exemple, le noeud final public d'une instance disponible dans la région us-south est le suivant : https://us-south.monitoring.cloud.ibm.com/api

  • Vous pouvez transmettre plusieurs en-têtes à l'aide de l'indicateur -H.

    Authorization et IBMInstanceID sont les en-têtes requis pour l'authentification.

    TeamID est facultatif. Lorsque vous spécifiez cet en-tête, vous limitez la demande aux données et aux ressources disponibles pour l'équipe spécifiée.

    Pour obtenir AUTH_TOKEN et GUID, voir En-têtes des jetons IAM.

  • <ALERT_ID> définit l'ID de l'alerte que vous souhaitez supprimer.

Obtention de toutes les alertes utilisateur

Vous pouvez utiliser la commande cURL suivante pour obtenir des informations sur toutes les alertes :

curl -X GET <REST_API_ENDPOINT>/api/alerts?from=<START_TIMESTAMP>&to=<END_TIMESTAMP> -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID"

  • <REST_API_ENDPOINT> indique le point de terminaison visé par l'appel à l'API REST. Pour plus d'informations, voir Noeuds finaux d'API REST Monitoring. Par exemple, le noeud final public d'une instance disponible dans la région us-south est le suivant : https://us-south.monitoring.cloud.ibm.com/api

  • Vous pouvez transmettre plusieurs en-têtes à l'aide de l'indicateur -H.

    Authorization et IBMInstanceID sont les en-têtes requis pour l'authentification. Pour obtenir AUTH_TOKEN et GUID, voir En-têtes des jetons IAM.

  • to et from représentent les paramètres de requête que vous devez définir pour configure la période pendant laquelle vous souhaitez des informations sur les alertes.

Pour plus d'informations sur le format de réponse, voir Schéma des alertes.

Schéma des alertes : corps de demande

{
  "alerts": [
    {
      "alert": {
        "version": null,
        "name": "",
        "description": null,
        "teamId": null,
        "enabled": false,
        "filter": null,
        "type": "",
        "condition": "",
        "timespan": 600000000,
        "notificationChannelIds": [],
        "reNotify": false,
        "reNotifyMinutes": 30,
        "segmentBy": [],
        "segmentCondition": {
          "type": ""
        },
        "severityLabel": ""
      }
    }
  ]
}

Schéma des alertes : corps de réponse

{
  "alerts": [
    {
    "alert": {
      "autoCreated": false,
      "condition": "",
      "createdOn": 1551358413000,
      "enabled": false,
      "id": 23211,
      "modifiedOn": 1551634372000,
      "name": "",
      "filter": "",
      "notificationChannelIds": [],
      "segmentBy": [],
      "segmentCondition": {
        "type": "ANY"
      },
      "notificationCount": 60,
      "rateOfChange": false,
      "reNotify": false,
      "severity": 0,
      "severityLabel": "",
      "teamId": 493,
      "timespan": 60000000,
      "type": "",
      "version": 9
      }
    }
  ]
}

Codes de réponse des erreurs

Le tableau suivant récapitule les codes de réponse des erreurs courantes :

RC
RC Description
400 La configuration d'alerte n'est pas valide.
401 Accès non autorisé.
404 L'ID d'alerte n'est pas reconnu.
409 Non concordance de version.
422 Le nom d'alerte n'est pas valide. Il est déjà utilisé.

Paramètres du corps

id (entier)

ID d'une alerte.

condition (chaîne)

Définit le seuil configuré pour l'alerte. Ce paramètre n'est requis que pour les alertes MANUAL.

Par exemple, vous pouvez définir une condition comme suit : avg(timeAvg(uptime)) <= 0

createdOn (entier)

Définit l'heure de création d'une alerte en millisecondes.

Ce paramètre renvoie l'horodatage Unix de la création de l'alerte.

description (chaîne)

Ce paramètre décrit l'alerte.

La description est disponible lorsque vous affichez une alerte dans la section Alertes de l'interface utilisateur de surveillance et elle est incluse dans les courriers électroniques de notification.

enabled (valeur booléenne)

Définit le statut d'une alerte.

Par défaut, ce paramètre est défini sur true et l'alerte est activée lorsqu'elle est créée.

filter (chaîne)

Définit la portée de l'alerte en configurant des segments.

Si cette zone est vide, toutes les sources de métriques sont incluses. La portée est définie sur Tout.

Par exemple, vous pouvez définir des filtres tels que les suivants :

kubernetes.namespace.name='production'
container.image='nginx'*.
kubernetes.namespace.name='production' and container.image='nginx'*.

name (chaîne)

Nom de l'alerte. Doit être unique.

Le nom est utilisé pour identifier l'alerte dans la section Alertes de l'interface utilisateur de surveillance et il est inclus dans les courriers électroniques de notification.

modifiedOn (entier)

Définit à quel moment une alerte a été modifiée pour la dernière fois, en millisecondes.

Ce paramètre définit l'horodatage Unix de la dernière modification de l'alerte.

notificationChannelIds (tableau)

Répertorie les canaux de notification configurés pour indiquer à quel moment une alerte est déclenchée.

Les options valides sont EMAIL, PAGER_DUTY, WEBHOOK, VICTOROPS et SLACK.

"notificationChannelIds": [
      "EMAIL",
      "WEBHOOK"
    ]

notificationCount (entier)

Définit le nombre de notifications envoyées pour l'alerte au cours des deux dernières semaines.

ReNotify (valeur booléenne)

Définit si vous souhaitez obtenir des notifications de suivi jusqu'à ce que la condition d'alerte soit reconnue et résolue.

Par défaut, les notifications de suivi ne sont pas activées et cette zone est définie sur false.

reNotifyMinutes (entier)

Définit la fréquence à laquelle vous souhaitez recevoir des notifications sur une alerte non résolue.

Vous spécifiez le nombre de minutes avant l'envoi d'un rappel.

severity (entier)

Définit la gravité d'alerte codée par syslog.

Le tableau suivant répertorie les valeurs que vous pouvez définir :

Valeurs de gravité
Gravité Info
0 emergency
1 alert
2 critical
3 error
4 warning
5 notice
6 informational
7 debug

severityLabel (chaîne)

Définit la criticité d'une alerte. Les valeurs valides sont HIGH, MEDIUM, LOWet INFO. Une valeur plus petite indique une gravité plus élevée.

Le tableau suivant indique le statut de gravité qui doit être défini en fonction de la valeur du paramètre de gravité :

Valeurs du niveau de gravité
Gravité Statut de gravité
0 HIGH
1 HIGH
2 MEDIUM
3 MEDIUM
4 LOW
5 LOW
6 INFO
7 INFO

SegmentBy (tableau de chaînes)

Définit des critères de segmentation supplémentaires.

Par exemple, vous pouvez segmenter une alerte d'unité centrale par ['host.mac', 'proc.name'] pour que l'alerte puisse signaler tout processus de toute machine pour laquelle vous obtenez des données dans l'instance de surveillance.

segmentCondition (chaîne)

Définit quand l'alerte est déclenchée pour chaque entité surveillée spécifiée dans le paramètre segmentBy. Ce paramètre n'est requis que pour les alertes MANUAL.

Les valeurs valides sont les suivantes :

  • ANY : l'alerte est déclenchée si au moins l'une des entités surveillées remplit la condition.
  • ALL : l'alerte est déclenchée si toutes les entités surveillées remplissent la condition.

teamId (chaîne)

Définit l'identificateur global unique de l'équipe propriétaire de l'alerte.

type (chaîne)

Définit le type d'alerte. Les valeurs valides sont MANUAL, BASELINE et HOST_COMPARISON.

Spécifiez MANUAL pour les alertes à contrôler lorsqu'une notification est envoyée. Vous devez définir le seuil qui détermine à quel moment l'alerte est déclenchée.

Spécifiez BASELINE pour les alertes à envoyer lorsque des valeurs de métrique inattendues sont détectées. Les nouvelles données de métrique sont comparées à celles collectées au fil du temps.

Spécifiez HOST_COMPARISON pour les alertes à envoyer lorsqu'un hôte d'un groupe signale des valeurs de métrique différentes de celles des autres hôtes du groupe.

timespan (entier)

Intervalle minimal en microsecondes, pendant lequel la condition d'alerte doit être remplie pour que l'alerte soit déclenchée.

La valeur minimale est de 60 000 000 microsecondes, soit une minute.

La valeur de ce paramètre doit être un multiple de 60 000 000 microsecondes.

version (entier)

Version d'une alerte.

La version change chaque fois que vous mettez à jour une alerte.

La version est utilisée pour le verrouillage optimiste.

Paramètres de requête

alertId (entier)

ID d'une alerte.

from (long)

Définit l'horodatage de début, en microsecondes, utilisé lorsque vous demandez des informations sur les alertes définies.

to (long)

Définit l'horodatage de fin, en microsecondes, utilisé lorsque vous demandez des informations sur les alertes définies.