Point de terminaison des mesures

Les mesures d’observabilité fournissent des informations sur les statistiques d’utilisation, les tendances historiques et les indicateurs de performances de diverses fonctionnalités de Adobe Experience Platform. Le point de terminaison /metrics dans la balise Observability Insights API vous permet de récupérer par programmation les données de mesure pour l’activité de votre organisation dans Platform.

Prise en main

Le point d’entrée dʼAPI utilisé dans ce guide fait partie de lʼAPI Observability Insights . Avant de continuer, consultez le guide de prise en main pour obtenir des liens vers la documentation associée, un guide de lecture des exemples dʼappels API dans ce document et des informations importantes sur les en-têtes requis pour réussir des appels à nʼimporte quel API dʼExperience Platform.

Récupération des mesures d’observabilité

Il existe deux méthodes prises en charge pour récupérer les données de mesure à l’aide de l’API :

  • Version 1 : Spécifiez des mesures à l’aide de paramètres de requête.
  • Version 2 : Spécifiez et appliquez des filtres aux mesures à l’aide d’une charge utile JSON.

Version 1

Vous pouvez récupérer des données de mesure en envoyant une requête de GET au point de terminaison /metrics, en spécifiant des mesures à l’aide de paramètres de requête.

Format d'API

Au moins une mesure doit être fournie dans le paramètre metric . Les autres paramètres de requête sont facultatifs pour le filtrage des résultats.

GET /metrics?metric={METRIC}
GET /metrics?metric={METRIC}&metric={METRIC_2}
GET /metrics?metric={METRIC}&id={ID}
GET /metrics?metric={METRIC}&dateRange={DATE_RANGE}
GET /metrics?metric={METRIC}&metric={METRIC_2}&id={ID}&dateRange={DATE_RANGE}
Paramètre Description
{METRIC} La mesure que vous souhaitez afficher. Lorsque vous combinez plusieurs mesures dans un seul appel, vous devez utiliser une esperluette (&) pour les séparer. Par exemple : metric={METRIC_1}&metric={METRIC_2}.
{ID} Identifiant d’une ressource Platform particulière dont vous souhaitez afficher les mesures. Cet identifiant peut être facultatif, obligatoire ou non applicable en fonction des mesures utilisées. Consultez l’ annexe pour obtenir la liste des mesures disponibles, y compris les ID pris en charge (obligatoires et facultatifs) pour chaque mesure.
{DATE_RANGE} La période des mesures que vous souhaitez afficher, au format ISO 8601 (par exemple, 2018-10-01T07:00:00.000Z/2018-10-09T07:00:00.000Z).

Requête

curl -X GET \
  https://platform.adobe.io/data/infrastructure/observability/insights/metrics?metric=timeseries.ingestion.dataset.size&metric=timeseries.ingestion.dataset.recordsuccess.count&id=5cf8ab4ec48aba145214abeb&dateRange=2018-10-01T07:00:00.000Z/2019-06-06T07:00:00.000Z \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}'

Réponse

Une réponse réussie renvoie une liste d’objets, dont chacun contient une date et heure dans la dateRange fournie et les valeurs correspondantes pour les mesures spécifiées dans le chemin de requête. Si l’identifiant id d’une ressource de est inclus dans le chemin de requête, les résultats s’appliqueront uniquement à cette ressource particulière. Platform Si l’identifiant id est omis, les résultats s’appliqueront à toutes les ressources applicables au sein de votre organisation IMS.

{
  "id": "5cf8ab4ec48aba145214abeb",
  "imsOrgId": "{IMS_ORG}",
  "timeseries": {
    "granularity": "MONTH",
    "items": [
      {
        "timestamp": "2019-06-01T00:00:00Z",
        "metrics": {
          "timeseries.ingestion.dataset.recordsuccess.count": 1125,
          "timeseries.ingestion.dataset.size": 32320
        }
      },
      {
        "timestamp": "2019-05-01T00:00:00Z",
        "metrics": {
          "timeseries.ingestion.dataset.recordsuccess.count": 1003,
          "timeseries.ingestion.dataset.size": 31409
        }
      },
      {
        "timestamp": "2019-04-01T00:00:00Z",
        "metrics": {
          "timeseries.ingestion.dataset.recordsuccess.count": 740,
          "timeseries.ingestion.dataset.size": 25809
        }
      },
      {
        "timestamp": "2019-03-01T00:00:00Z",
        "metrics": {
          "timeseries.ingestion.dataset.recordsuccess.count": 740,
          "timeseries.ingestion.dataset.size": 25809
        }
      },
      {
        "timestamp": "2019-02-01T00:00:00Z",
        "metrics": {
          "timeseries.ingestion.dataset.recordsuccess.count": 390,
          "timeseries.ingestion.dataset.size": 16801
        }
      }
    ],
    "_page": null,
    "_links": null
  },
  "stats": {}
}

Version 2

Vous pouvez récupérer des données de mesure en envoyant une requête de POST au point de terminaison /metrics, en spécifiant les mesures que vous souhaitez récupérer dans la payload.

Format d’API

POST /metrics

Requête

curl -X POST \
  https://platform.adobe.io/data/infrastructure/observability/insights/metrics \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {IMS_ORG}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -d '{
        "start": "2020-07-14T00:00:00.000Z",
        "end": "2020-07-22T00:00:00.000Z",
        "granularity": "day",
        "metrics": [
          {
            "name": "timeseries.ingestion.dataset.recordsuccess.count",
            "filters": [
              {
                "name": "dataSetId",
                "value": "5edcfb2fbb642119194c7d94|5eddb21420f516191b7a8dad",
                "groupBy": true
              }
            ],
            "aggregator": "sum",
            "downsample": "sum"
          },
          {
            "name": "timeseries.ingestion.dataset.dailysize",
            "filters": [
              {
                "name": "dataSetId",
                "value": "5eddb21420f516191b7a8dad",
                "groupBy": false
              }
            ],
            "aggregator": "sum",
            "downsample": "sum"
          }
        ]
      }'
Propriété Description
start Date/heure la plus ancienne à partir de laquelle récupérer les données de mesure.
end Date/heure la plus récente à partir de laquelle récupérer les données de mesure.
granularity Champ facultatif qui indique un intervalle de temps pour diviser les données de mesure en deux. Par exemple, une valeur DAY renvoie des mesures pour chaque jour entre la date start et la date end, tandis qu’une valeur MONTH regroupe les résultats des mesures par mois. Lors de l’utilisation de ce champ, une propriété downsample correspondante doit également être fournie pour indiquer la fonction d’agrégation par laquelle regrouper les données.
metrics Tableau d’objets, un pour chaque mesure que vous souhaitez récupérer.
name Nom d’une mesure reconnue par Observability Insights. Consultez l’ annexe pour obtenir la liste complète des noms de mesures acceptés.
filters Champ facultatif qui vous permet de filtrer les mesures selon des jeux de données spécifiques. Le champ est un tableau d’objets (un pour chaque filtre), chaque objet contenant les propriétés suivantes :
  • name: Type d’entité par rapport auquel filtrer les mesures. Actuellement, seul dataSets est pris en charge.
  • value: L’identifiant d’un ou de plusieurs jeux de données. Plusieurs identifiants de jeu de données peuvent être fournis sous la forme d’une seule chaîne, chaque identifiant étant séparé par des caractères de barre verticale (`
aggregator Spécifie la fonction d’agrégation qui doit être utilisée pour regrouper plusieurs enregistrements de série temporelle en résultats uniques. Pour plus d’informations sur les agrégateurs disponibles, consultez la documentation OpenTSDB.
downsample Champ facultatif qui vous permet de spécifier une fonction d’agrégation afin de réduire le taux d’échantillonnage des données de mesure en triant les champs en intervalles (ou "intervalles"). L’intervalle du sous-échantillonnage est déterminé par la propriété granularity . Pour plus d’informations sur le sous-échantillonnage, consultez la documentation OpenTSDB.

Réponse

Une réponse réussie renvoie les points de données résultants pour les mesures et les filtres spécifiés dans la requête.

{
  "metricResponses": [
    {
      "metric": "timeseries.ingestion.dataset.recordsuccess.count",
      "filters": [
        {
          "name": "dataSetId",
          "value": "5edcfb2fbb642119194c7d94|5eddb21420f516191b7a8dad",
          "groupBy": true
        }
      ],
      "datapoints": [
        {
          "groupBy": {
            "dataSetId": "5edcfb2fbb642119194c7d94"
          },
          "dps": {
            "2020-07-14T00:00:00Z": 44.0,
            "2020-07-15T00:00:00Z": 46.0,
            "2020-07-16T00:00:00Z": 36.0,
            "2020-07-17T00:00:00Z": 50.0,
            "2020-07-18T00:00:00Z": 38.0,
            "2020-07-19T00:00:00Z": 40.0,
            "2020-07-20T00:00:00Z": 42.0,
            "2020-07-21T00:00:00Z": 42.0,
            "2020-07-22T00:00:00Z": 50.0
          }
        },
        {
          "groupBy": {
            "dataSetId": "5eddb21420f516191b7a8dad"
          },
          "dps": {
            "2020-07-14T00:00:00Z": 44.0,
            "2020-07-15T00:00:00Z": 46.0,
            "2020-07-16T00:00:00Z": 36.0,
            "2020-07-17T00:00:00Z": 50.0,
            "2020-07-18T00:00:00Z": 38.0,
            "2020-07-19T00:00:00Z": 40.0,
            "2020-07-20T00:00:00Z": 42.0,
            "2020-07-21T00:00:00Z": 42.0,
            "2020-07-22T00:00:00Z": 50.0
          }
        }
      ],
      "granularity": "DAY"
    },
    {
      "metric": "timeseries.ingestion.dataset.dailysize",
      "filters": [
        {
          "name": "dataSetId",
          "value": "5eddb21420f516191b7a8dad",
          "groupBy": false
        }
      ],
      "datapoints": [
        {
          "groupBy": {},
          "dps": {
            "2020-07-14T00:00:00Z": 38455.0,
            "2020-07-15T00:00:00Z": 40213.0,
            "2020-07-16T00:00:00Z": 31476.0,
            "2020-07-17T00:00:00Z": 43705.0,
            "2020-07-18T00:00:00Z": 33227.0,
            "2020-07-19T00:00:00Z": 34977.0,
            "2020-07-20T00:00:00Z": 36735.0,
            "2020-07-21T00:00:00Z": 36737.0,
            "2020-07-22T00:00:00Z": 43715.0
          }
        }
      ],
      "granularity": "DAY"
    }
  ]
}
Propriété Description
metricResponses Tableau dont les objets représentent chacune des mesures spécifiées dans la requête. Chaque objet contient des informations sur la configuration du filtre et les données de mesure renvoyées.
metric Nom de l’une des mesures fournies dans la requête.
filters Configuration de filtre pour la mesure spécifiée.
datapoints Tableau dont les objets représentent les résultats de la mesure et des filtres spécifiés. Le nombre d’objets dans le tableau dépend des options de filtre fournies dans la requête. Si aucun filtre n’a été fourni, le tableau ne contient qu’un seul objet représentant tous les jeux de données.
groupBy Si plusieurs jeux de données ont été spécifiés dans la propriété filter pour une mesure et que l’option groupBy a été définie sur true dans la requête, cet objet contiendra l’identifiant du jeu de données auquel s’applique la propriété dps correspondante.

Si cet objet apparaît vide dans la réponse, la dps propriété correspondante s’applique à tous les jeux de données fournis dans le filters tableau (ou à tous les jeux de données dans Platform si aucun filtre n’a été fourni).
dps Les données renvoyées pour la mesure, le filtre et la période donnés. Chaque clé de cet objet représente un horodatage avec une valeur correspondante pour la mesure spécifiée. La période entre chaque point de données dépend de la valeur granularity spécifiée dans la requête.

Annexe

La section suivante contient des informations supplémentaires sur l’utilisation du point de terminaison /metrics.

Mesures disponibles

Les tableaux suivants répertorient toutes les mesures exposées par Observability Insights, ventilées par service Platform. Chaque mesure comprend une description et un paramètre de requête d’identifiant accepté.

REMARQUE

Tous les paramètres de requête d’ID répertoriés sont facultatifs, sauf indication contraire.

Data Ingestion

Le tableau suivant décrit les mesures pour Adobe Experience Platform Data Ingestion. Les mesures en gras sont des mesures d’ingestion par flux.

Mesure d’insights Description Paramètre de requête d’identifiant
timeseries.ingestion.dataset.new.count Nombre total de jeux de données créés. N/A
timeseries.ingestion.dataset.size Taille cumulée de toutes les données ingérées pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.ingestion.dataset.dailysize Taille des données ingérées quotidiennement pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.ingestion.dataset.batchfailed.count Nombre de lots échoués pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.ingestion.dataset.batchsuccess.count Nombre de lots ingérés pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.ingestion.dataset.recordsuccess.count Nombre d’enregistrements ingérés pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.total.messages.rate Nombre total de messages pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.valid.messages.rate Nombre total de messages valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.invalid.messages.rate Nombre total de messages non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.type.count Nombre total de messages « type » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.range.count Nombre total de messages « plage » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.format.count Nombre total de messages « format » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.pattern.count Nombre total de messages « modèle » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.presence.count Nombre total de messages « présence » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.enum.count Nombre total de messages « énumération » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.unclassified.count Nombre total de messages « non classé » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.validation.category.unknown.count Nombre total de messages « inconnu » non valides pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.data.collection.inlet.total.messages.received Nombre total de messages reçus pour un inlet de données ou tous les inlets de données. Inlet ID
timeseries.data.collection.inlet.total.messages.size.received Taille totale des données reçues pour un inlet de données ou tous les inlets de données. Inlet ID
timeseries.data.collection.inlet.success Nombre total d’appels HTTP réussis à un inlet de données ou tous les inlets de données. Inlet ID
timeseries.data.collection.inlet.failure Nombre total d’appels HTTP échoués à un inlet de données ou tous les inlets de données. Inlet ID

Identity Service

Le tableau suivant décrit les mesures pour Adobe Experience Platform Identity Service.

Mesure d’insights Description Paramètre de requête d’identifiant
timeseries.identity.dataset.recordsuccess.count Nombre d’enregistrements écrits dans leur source de données par Identity Service pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.identity.dataset.recordfailed.count Nombre d’enregistrements échoués par Identity Service, pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.identity.dataset.namespacecode.recordsuccess.count Nombre d’enregistrements d’identité correctement ingérés pour un espace de noms. Identifiant d’espace de noms (obligatoire)
timeseries.identity.dataset.namespacecode.recordfailed.count Nombre d’enregistrements d’identité échoués par un espace de noms. Identifiant d’espace de noms (obligatoire)
timeseries.identity.dataset.namespacecode.recordskipped.count Nombre d’enregistrements d’identité ignorés par un espace de noms. Identifiant d’espace de noms (obligatoire)
timeseries.identity.graph.imsorg.uniqueidentities.count Nombre d’identités uniques stockées dans le graphique d’identités de votre organisation IMS. N/A
timeseries.identity.graph.imsorg.namespacecode.uniqueidentities.count Nombre d’identités uniques stockées dans le graphique d’identités pour un espace de noms. Identifiant d’espace de noms (obligatoire)
timeseries.identity.graph.imsorg.numidgraphs.count Nombre d’identités de graphique uniques stockées dans le graphique d’identités de votre organisation IMS. N/A
timeseries.identity.graph.imsorg.graphstrength.uniqueidentities.count Nombre d’identités uniques stockées dans le graphique d’identités de votre organisation IMS pour une force de graphique spécifique (« inconnu », « faible » ou « fort »). Force de graphique (obligatoire)

Privacy Service

Le tableau suivant décrit les mesures pour Adobe Experience Platform Privacy Service.

Mesure d’insights Description Paramètre de requête d’identifiant
timeseries.gdpr.jobs.totaljobs.count Nombre total de tâches créées issues du RGPD. ENV (obligatoire)
timeseries.gdpr.jobs.completedjobs.count Nombre total de tâches terminées issues du RGPD. ENV (obligatoire)
timeseries.gdpr.jobs.errorjobs.count Nombre total de tâches d’erreur issues du RGPD. ENV (obligatoire)

Query Service

Le tableau suivant décrit les mesures pour Adobe Experience Platform Query Service.

Mesure d’insights Description Paramètre de requête d’identifiant
timeseries.queryservice.query.scheduleonce.count Nombre total de requêtes planifiées non périodiques. N/A
timeseries.queryservice.query.scheduledrecurring.count Nombre total de requêtes planifiées périodiques. N/A
timeseries.queryservice.query.batchquery.count Nombre total de requêtes en lot exécutées. N/A
timeseries.queryservice.query.scheduledquery.count Nombre total de requêtes planifiées exécutées. N/A
timeseries.queryservice.query.interactivequery.count Nombre total de requêtes interactives exécutées. N/A
timeseries.queryservice.query.batchfrompsqlquery.count Nombre total de requêtes en lot exécutées à partir de PSQL. N/A

Real-time Customer Profile

Le tableau suivant décrit les mesures pour Real-time Customer Profile.

Mesure d’insights Description Paramètre de requête d’identifiant
timeseries.profiles.dataset.recordread.count Nombre d’enregistrements lus à partir de Data Lake par Profile, pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.profiles.dataset.recordsuccess.count Nombre d’enregistrements écrits dans leur source de données par Profile, pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.profiles.dataset.recordfailed.count Nombre d’enregistrements échoués par Profile, pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.profiles.dataset.batchsuccess.count Nombre de Profile lots ingérés pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
timeseries.profiles.dataset.batchfailed.count Nombre de Profile lots échoués pour un jeu de données ou tous les jeux de données. Identifiant du jeu de données
platform.ups.ingest.streaming.request.m1_rate Taux de requêtes entrantes. Organisation IMS (Obligatoire)
platform.ups.ingest.streaming.access.put.success.m1_rate Taux de réussite d’ingestion. Organisation IMS (Obligatoire)
platform.ups.ingest.streaming.records.created.m15_rate Taux de nouveaux enregistrements ingérés pour un jeu de données. Identifiant du jeu de données (Obligatoire)
platform.ups.ingest.streaming.request.error.created.outOfOrder.m1_rate Taux d’enregistrements horodatés en désordre de requête de création pour un jeu de données. Identifiant du jeu de données (Obligatoire)
platform.ups.profile-commons.ingest.streaming.dataSet.record.created.timestamp Horodatage de la dernière requête d’enregistrement de création pour un jeu de données. Identifiant du jeu de données (Obligatoire)
platform.ups.ingest.streaming.request.error.updated.outOfOrder.m1_rate Taux d’enregistrements horodatés en désordre de requête de mise à jour pour un jeu de données. Identifiant du jeu de données (Obligatoire)
platform.ups.profile-commons.ingest.streaming.dataSet.record.updated.timestamp Horodatage de la dernière requête d’enregistrement de mise à jour pour un jeu de données. Identifiant du jeu de données (Obligatoire)
platform.ups.ingest.streaming.record.size.m1_rate Taille moyenne des enregistrements. Organisation IMS (Obligatoire)
platform.ups.ingest.streaming.records.updated.m15_rate Taux de requêtes de mise à jour pour les enregistrements ingérés pour un jeu de données. Identifiant du jeu de données (Obligatoire)

Messages d’erreur

Les réponses du point de terminaison /metrics peuvent renvoyer des messages d’erreur dans certaines conditions. Ces messages d’erreur sont renvoyés au format suivant :

{
    "type": "http://ns.adobe.com/aep/errors/INSGHT-1000-400",
    "title": "Bad Request - Start date cannot be after end date.",
    "status": 400,
    "report": {
        "tenantInfo": {
            "sandboxName": "prod",
            "sandboxId": "49f58060-5d47-34rd-aawf-a5384333ff12",
            "imsOrgId": "{IMS_ORG}"
        },
        "additionalContext": null
    },
    "error-chain": [
        {
            "serviceId": "INSGHT",
            "errorCode": "INSGHT-1000-400",
            "invokingServiceId": "INSGHT",
            "unixTimeStampMs": 1602095177129
        }
    ]
}
Propriété Description
title Chaîne contenant le message d’erreur et la raison potentielle pour laquelle il s’est produit.
report Contient des informations contextuelles sur l’erreur, y compris l’environnement de test et l’organisation IMS utilisés dans l’opération qui l’a déclenchée.

Le tableau suivant répertorie les différents codes d’erreur qui peuvent être renvoyés par l’API :

Code erreur Titre Description
INSGHT-1000-400 Charge utile de requête incorrecte Un problème s’est produit avec le payload de la requête. Assurez-vous de correspondre exactement à la mise en forme de la payload comme indiqué au-dessus. L’une des raisons possibles peut déclencher cette erreur :
  • Champs obligatoires manquants, tels que aggregator
  • Mesures non valides
  • La requête contient un agrégateur non valide
  • Une date de début a lieu après une date de fin
INSGHT-1001-400 Échec de la requête des mesures Une erreur s’est produite lors de la tentative d’interrogation de la base de données de mesures, en raison d’une mauvaise requête ou de l’impossibilité d’analyser la requête elle-même. Assurez-vous que votre requête est correctement formatée avant de réessayer.
INSGHT-1001-500 Échec de la requête des mesures Une erreur s’est produite lors de la tentative d’interrogation de la base de données de mesures, en raison d’une erreur du serveur. Essayez à nouveau la demande. Si le problème persiste, contactez le support Adobe.
INSGHT-1002-500 Erreur de service La demande n’a pas pu être traitée en raison d’une erreur interne. Essayez à nouveau la demande. Si le problème persiste, contactez le support Adobe.
INSGHT-1003-401 Erreur de validation des environnements de test La requête n’a pas pu être traitée en raison d’une erreur de validation de sandbox. Assurez-vous que le nom d’environnement de test que vous avez fourni dans l’en-tête x-sandbox-name représente un environnement de test valide et activé pour votre organisation IMS avant de réessayer la requête.

Sur cette page