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
Où
-
<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.AuthorizationetIBMInstanceIDsont les en-têtes requis pour l'authentification.SysdigTeamIDest 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_TOKENetGUID, voir En-têtes des jetons IAM. -
Vous pouvez transmettre le fichier
metrics.jsonpour 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"
Où
-
<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.AuthorizationetIBMInstanceIDsont les en-têtes requis pour l'authentification.SysdigTeamIDest 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_TOKENetGUID, 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 exempleus-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
metricspar un tableau JSON des métriques que vous souhaitez extraire. L'exemple utilise la métriquecpu.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
-
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é.
-
Attendez quelques minutes que votre instance Event Streams soit mise à disposition.
-
Dans votre instance Event Streams, créez une rubrique, telle que
kafka-java-console-sample-topic. -
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 -
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_keykafka_http_url
Exemple de sortie :
api_key: 123465123456123465123465123465123465 kafka_http_url: https://mh-<id>.private.us-south.messagehub.appdomain.cloud -
Depuis le tableau de bord d' Monitoring, cliquez sur Ouvrir le tableau de bord pour l'instance d' Monitoring.
-
Cliquez sur Commencer > Configurer un canal de notification > Configurer un canal de notification. La page Paramètres s'ouvre.
-
Cliquez sur + Ajouter un canal de notification, puis sélectionnez l'option Webhook.
-
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.
- Pour URL, entrez l'
-
Obtenez un jeton IAM pour authentifier vos requêtes auprès de l'API Monitoring.
-
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 exempleus-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
}
},
- 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 exempleus-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
- 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 exempleus-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"
...
- 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.