Extraction de métriques d'une instance Monitoring à l'aide de l'API Monitoring

Vous pouvez extraire des métriques d'une instance d' IBM Cloud Monitoring, en utilisant l'API d' Monitoring.

Obtention des métriques à l'aide de cURL

Vous pouvez utiliser la commande cURL suivante pour obtenir les métriques :

curl -X POST <SYSDIG_REST_API_ENDPOINT>/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json" -d DATA

  • <SYSDIG_REST_API_ENDPOINT>indique le noeud final ciblé par l'appel 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.

    SysdigTeamID 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 le fichier metrics.json pour extraire les métriques à l'aide de l'indicateur -d. Par exemple, -d @metrics.json.

L'exemple suivant illustre un modèle de fichier metrics.json :

{
  "start": "Number: seconds",
  "end": "Number: seconds",
  "last": "Number: last available seconds",
  "metrics": [
    {
      "id": "<>",
      "aggregations": {}
    }
  ],
  "sampling": "Number: <10|60|600|3600|86400>",
  "dataSourceType": "<host|container>",
  "filter": "<>",
  "paging": {
    "from": "Number",
    "to": "Number"
  }
}

Dictionnaire des métriques

Pour voir les métriques prédéfinies par Sysdig, consultez le dictionnaire des métriques.

Pour afficher les métriques prédéfinies définies par les services IBM Cloud compatibles Sysdig, voir Services Cloud.

Agrégation des données

Pour en savoir plus sur l'agrégation de données, voir Agrégation de données.

Exemple : extraction des métriques de plateforme

Cet exemple montre comment extraire des métriques de plateforme de Cloud Foundry dans la région us-south pour les dernières 24 heures.

curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @metrics.json

L'exemple suivant du fichier metrics.json montre comment configurer le fichier pour extraire les données par ID d'instance, ancienneté de conteneur d'application et nombre d'octets utilisés par l'application :

{
  "metrics": [
    {
      "id": "ibm_resource"
    },
    {
      "id": "ibm_cloudfoundry_app_container_age",
      "aggregations": {"group": "max", "time": "max"}
    },
    {
      "id": "ibm_cloudfoundry_app_memory_bytes_used",
      "aggregations": {"group": "avg", "time": "avg"}
    }
  ],
  "filter": "ibm_location = \"us-south\"",
  "sampling": 86400,
  "last": 86400
}

Le résultat de l'extraction de données renvoie les informations suivantes :

{
  "data": [
    {
      "d": [
        "73a9d202-7e97-45b2-a107-3b1528856be3",
        316660942465643,
        18809015.575
      ],
      "t": 1587772800
    }
  ],
  "end": 1587772800,
  "start": 1587686400
}

Exemple : extraction des données d'unité centrale

Cet exemple montre comment extraire les données d'unité centrale par hôte avec les limites de début, de fin et d'échantillonnage.

L'exemple suivant du fichier metrics.json montre comment configurer le fichier pour extraire les données d'unité centrale :

{
  "start":"1555404790",
  "end":"1555404850",
  "sampling": 10,
  "metrics": [
    {
      "id": "host.hostName"
    },
    {
      "id": "cpu.used.percent",
      "aggregations": {"time": "avg"}
    }
  ],
  "dataSourceType": "host"
}

Le résultat de l'extraction de données renvoie les informations suivantes :

{
  "data": [
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.621
      ],
      "t": 1555404800
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.597
      ],
      "t": 1555404810
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.993
      ],
      "t": 1555404820
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.145
      ],
      "t": 1555404830
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        4.09
      ],
      "t": 1555404840
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        5.057
      ],
      "t": 1555404850
    }
  ],
  "end": 1555404850,
  "start": 1555404790
}

Exemple : extraction de la dernière métrique avec la commande cURL

Pour obtenir la dernière valeur d'une métrique, indiquez uniquement le nom de la métrique. La valeur la plus récente qui a été générée il y a 5 minutes ou moins est renvoyée.

Par exemple, pour obtenir la dernière valeur de host_cpu_used_percent :

curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

  • <SYSDIG_REST_API_ENDPOINT>indique le noeud final ciblé par l'appel 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.

    SysdigTeamID 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.

Tous les tableaux de bord prennent en charge l'API PromQL dans son intégralité. Pour plus d'informations sur les possibilités offertes par l' PromQL,, consultez la documentation de l' Prometheus.

Exemple : échantillon cURL pour l'extraction des données d'UC pour une équipe

Cet exemple montre comment extraire les données d'UC disponibles dans le contexte d'une équipe.

curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: 30785" -H "content-type: application/json" -d @metrics.json

Exemple : extraction de données de métrique de Monitoring vers Event Streams

Vous pouvez utiliser l'exemple de code suivant pour extraire des métriques de votre instance Monitoring vers Event Streams.

  • Remplacez <region> par la région de votre instance d' Monitoring, par exemple us-east.
  • Remplacez <apikey> par un jeton de clé d'API IAM IBM Cloud.
  • Remplacez <instance_id> par l'ID de votre instance d' Monitoring.
  • Remplacez la zone metrics par un tableau JSON des métriques que vous souhaitez extraire. L'exemple utilise la métrique cpu.cores.used.
from sdcclient import IbmAuthHelper, SdMonitorClient
endpoint = "https://<region>.monitoring.cloud.ibm.com"
apikey = "<apikey>"
instanceID = "<instance_id>"
ibm_headers = IbmAuthHelper.get_headers(endpoint, apikey, instanceID)
sdclient = SdMonitorClient(sdc_url=endpoint, custom_headers=ibm_headers)
metrics = [
    {
    "id": "cpu.cores.used",
    "aggregations": {
        "time": "avg",
        "group": "sum"
    }
    }
]
filter = None
start = -120
end = 0
sampling = 60
ok, res = sdclient.get_data(metrics, start, end, sampling, filter=filter, datasource_type = "container")
print(ok)
print(res)
return res

Exemple : extraction des notifications de Monitoring vers Event Streams avec l'API REST Event Streams

  1. Créez une instance Event Streams.

    • Depuis Plans de tarification, sélectionnez un plan d'entreprise.
    • Si nécessaire, configurez une autorisation dans IAM pour Event Streams afin de cibler un fournisseur KMS tel que Key Protect, puis actualisez la page.
    • Pour le Noeud final de service, sélectionnez une option avec réseau privé.
  2. Attendez quelques minutes que votre instance Event Streams soit mise à disposition.

  3. Dans votre instance Event Streams, créez une rubrique, telle que kafka-java-console-sample-topic.

  4. Créez une clé de service pour les données d'identification de votre instance Event Streams sur le noeud final de service de cloud privé.

    • <name>: Saisissez un nom pour la clé de service.
    • <event_streams_instance>: Remplacez par le nom de votre instance d' Event Streams.
    ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private
    
  5. Dans la sortie de la commande précédente, récupérez les détails dont vous avez besoin pour effectuer un appel REST.

    • api_key
    • kafka_http_url

    Exemple de sortie :

    api_key:      123465123456123465123465123465123465
    kafka_http_url:           https://mh-<id>.private.us-south.messagehub.appdomain.cloud
    
  6. Depuis le tableau de bord d' Monitoring, cliquez sur Ouvrir le tableau de bord pour l'instance d' Monitoring.

  7. Cliquez sur Commencer > Configurer un canal de notification > Configurer un canal de notification. La page Paramètres s'ouvre.

  8. Cliquez sur + Ajouter un canal de notification, puis sélectionnez l'option Webhook.

  9. Configurez le canal de notification Webhook. Après avoir créé le canal de notification Webhook, vous devez continuer à configurer l'authentification pour le canal.

    • Pour URL, entrez l' kafka_http_url à partir de la clé de service, et ajoutez l'itinéraire /topics/<topic>/records à l' URL. <topic> est le nom du sujet que vous avez créé dans votre instance d' Event Streams.
    • Pour Nom, saisissez le nom du canal de notification Webhook.
    • Pour les autres zones, laissez les paramètres par défaut.
    • Cliquez sur Sauvegarder pour créer le canal.
  10. Obtenez un jeton IAM pour authentifier vos requêtes auprès de l'API Monitoring.

  11. Utilisez la commande curl sur l'API Monitoring pour répertorier les canaux de notification.

  • Remplacez <region> par la région de votre instance d' Monitoring, par exemple us-east.
  • Remplacez <token> par le jeton IAM que vous avez récupéré précédemment.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

Dans la sortie, notez l'id du canal de notification où la zone options.url correspond à l'URL que vous avez précédemment créée.

 {
     "id": 123,
     "version": 6,
     ...
     "options": {
         "notifyOnOk": true,
         "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud",
         "notifyOnResolve": true
     }
 },
  1. Utilisez la commande curl sur l'API Monitoring pour ajouter l'en-tête d'authentification au canal de notification Webhook.
  • Remplacez <region> par la région de votre instance d' Monitoring, par exemple us-east.
  • Remplacez <id> par l'identifiant du canal de notification que vous avez récupéré précédemment.
  • Remplacez <token> par le jeton IAM que vous avez récupéré précédemment.
curl -X PUT ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels/<id>' \
--header ‘Content-Type: application/json’
--header ‘Authorization: Bearer <token>’ -d @/tmp/notification.json
  1. Utilisez de nouveau la commande curl sur l'API Monitoring pour confirmer que le canal de notification est mis à jour avec l'en-tête d'authentification.
  • Remplacez <region> par la région de votre instance d' Monitoring, par exemple us-east.
  • Remplacez <token> par le jeton IAM que vous avez récupéré précédemment.
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

Dans la sortie, notez que la zone additionalHeaders.X-Auth-Token a été ajoutée au canal de notification.

{
"notificationChannel":
    {
        "id": 123,
        ....
        "options": {
            "notifyOnOk": true,
            "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud/topics/kafka-java-console-sample-topic/records",
            "notifyOnResolve": true,
            "additionalHeaders": {
                "X-Auth-Token": "123456123456123456123456123465123456"
    ...
  1. Configurez une alerte qui utilise le canal de notification Webhook que vous avez créé pour Event Streams.

Désormais, lorsqu'une alerte est déclenchée par Event Streams, vous pouvez consulter les détails de votre instance Monitoring.