Evénements d'API
Tableau de référence et exemples de cas d'utilisation pour les règles d'engagement basées sur les événements de l'API.
Voici quelques exemples de cas d'utilisation des règles d'engagement basées sur les événements de l'API :
- Un fournisseur d'API peut utiliser Engagement pour être averti :
- S'il y a plus de 3 erreurs HTTP 500 sur une même API au cours d'une période de 24 heures.
- Lorsque le temps de réponse moyen d'une API dépasse un certain seuil.
- Un responsable de la sécurité d'entreprise peut utiliser l'engagement pour recevoir un e-mail si quelqu'un accède à ses API bancaires depuis un pays sous embargo.
- Un fournisseur d'API d'IA peut utiliser l'engagement pour être averti si le total des jetons d'IA utilisés en une heure dépasse un certain seuil.
Le tableau suivant présente la liste des champs disponibles pour un enregistrement d'événement API. Ces champs sont utilisés comme filtres dans la liste de définition des règles et vous pouvez sélectionner une option basée sur les données utilisées pour déclencher la règle.
| Nom de zone | Type | Descriptif |
|---|---|---|
| ai_cache_hit | Booléen | Indique si la réponse AI a été servie à partir du cache. |
| ai_modèle | Chaîne | Le nom ou l'identifiant du modèle d'IA utilisé. |
| ai_request_tokens | Nombre | Le nombre de tokens dans l'invite d'entrée du modèle d'IA. |
| jetons_de_réponse_IA | Nombre | Le nombre de jetons générés dans la réponse de l'IA. |
| ai_total_tokens | Nombre | Nombre total de jetons utilisés dans l'interaction avec l'IA, qui comprend à la fois la demande et la réponse. |
| action_alerte | Chaîne | Action entreprise en réponse à une alerte. |
| alerte_description | Chaîne | Description ou message associé à l'alerte. |
| source_d'alerte | Chaîne | Le système ou module source qui a généré l'alerte. |
| Alert_Type | Chaîne | Le type ou la catégorie de l'alerte. |
| api_id | Chaîne | Identificateur d'API. |
| api_name | Chaîne | Nom de l'API. |
| api_resource_id | Chaîne | Le format du champ est : api_name:api_version:method:path. Disponible uniquement sur API Gateway v10.5.3 ou version ultérieure. |
| api_version | Chaîne | Numéro de version de l'API. |
| api_type | Chaîne | Type de l'API. Par exemple, REST, GraphQL, SOAP. |
| app_id | Chaîne | Identificateur de l'application enregistrée. |
| état du cycle de vie de l'application | Chaîne | Etat du cycle de vie de l'application. |
| nom_app | Chaîne | Nom de l'application enregistrée Remarque : La propriété est définie sur undefined lorsqu'un identifiant client n'est pas utilisé ou n'est pas valide sur l'API. La passerelle a besoin d'un ID client pour déterminer quelle application
a appelé l'API. A partir de cette application, la passerelle peut déterminer le plan auquel l'application est abonnée
sur le produit qui contient l'API. Sans identifiant client, la passerelle est incapable de déterminer quel plan, produit ou application a été invoqué, car une seule API peut appartenir à plusieurs produits (chacun d'entre eux ayant plusieurs plans et applications qui sont abonnés à ces plans avec des identifiants client). |
| app_type | Chaîne | Le type d'application, avec une valeur de Production ou Development. |
| méthode_du_dossier | Chaîne | La méthode HTTP utilisée dans la requête du backend. |
| corps_de_la_demande_de_backend | Chaîne | Le contenu du corps de la requête du backend. |
| en-têtes_de_la_requête_du_backend | Objet | Les en-têtes qui sont envoyés dans la requête du backend. |
| corps_de_la_réponse | Chaîne | Le contenu du corps de la réponse du backend. |
| en-têtes_de_la_réponse_de_la_commande | Objet | Les en-têtes qui sont reçus dans la réponse du backend. |
| code_état_du_backend | Chaîne | Le code d'état HTTP renvoyé par le backend. |
| demande_de_temps_de_service_du_tour_du_tour_du_tour_du_tour_du_tour_de_tour | Nombre | Temps en millisecondes pris par le backend pour servir la requête. |
| url_backend | Chaîne | Le site URL du service backend invoqué. |
| bytes_received | Nombre | Le nombre d'octets reçus du consommateur dans la requête. |
| bytes_sent | Nombre | Le nombre d'octets envoyés au consommateur dans la réponse. |
| réponse_mise_en_cache | Booléen | Indique si la réponse a été servie à partir d'un cache. |
| demande de rappel | Booléen | Indique si la demande était un rappel. |
| catalog_id | Chaîne | L'identifiant du catalogue de l'API. |
| nom_catalogue | Chaîne | Le nom du catalogue API. |
| client_geoip.area_code | Nombre | Indicatif régional du réseau téléphonique public commuté (PSTN) du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.city_name | Chaîne | Nom de la ville du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.continent_code | Chaîne | Code continent à deux lettres du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.country_code2 | Chaîne | Code pays à deux lettres du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.country_code3 | Chaîne | Code pays à trois lettres du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.country_name | Chaîne | Nom du pays du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.dma_code | Nombre | Code DMA (Designated Market Area) du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.ip | Chaîne | Adresse IP du client. |
| client_geoip.latitude | Nombre | Latitude de l'emplacement du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.location | Chaîne | Longitude et latitude de l'emplacement du client (séparés par une virgule), tel qu'identifié à partir de son adresse IP. |
| client_geoip.longitude | Nombre | Longitude de l'emplacement du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.postal_code | Chaîne | Code postal du client, tel qu'identifié à partir de son adresse IP. |
| client_geoip.region_code | Chaîne | Le code régional est basé sur l'IP du client. |
| client_geoip.region_name | Chaîne | Forme abrégée de la région qui correspond à l'adresse IP du client. |
| client_geoip.timezone | Chaîne | Fuseau horaire du client, tel qu'identifié à partir de son adresse IP. |
| client_id | Chaîne | ID unique du client associé à la demande d'API. |
| client_ip | Chaîne | Adresse IP du client. |
| id_de_l'organisation_du_consommateur | Chaîne | L'identifiant de l'organisation de consommateurs. |
| nom de l'organisation de consommateurs | Chaîne | Le nom de l'organisation de consommateurs |
| titre de l'organisation de consommateurs | Chaîne | Le titre ou le nom de l'organisation de consommateurs. |
| données_personnalisées | Matrice de correspondance | Des données personnalisées peuvent être ajoutées à ce champ. |
| date-heure | Date : | Un horodatage qui enregistre le moment où l'API a été invoquée. L'horodatage est toujours indiqué en temps universel coordonné. |
| developer_org_id | Chaîne | Identificateur de l'organisation de type consommateur qui est propriétaire de l'application. |
| developer_org_name | Chaîne | Nom de l'organisation de type consommateur qui est propriétaire de l'application. |
| endpoint_url | Chaîne | Lorsque la demande échoue, endpoint_url identifie le proxy ou invoque la cible URL sur laquelle la demande a échoué. Elle n'est pas incluse avec une requête qui a abouti. Sur une passerelle compatible avec l' V5, ce champ n'est renseigné que lorsque l' URL du serveur backend qui a été invoquée renvoie un code 404 d' HTTP. |
| description_de_l'erreur | Chaîne | Une description détaillée de toute erreur rencontrée. |
| error_message | Chaîne | Un bref message décrivant l'erreur. |
| event_type | Chaîne | Type d'événement. |
| nom_du_filtre | Chaîne | Le nom du filtre qui est appliqué lors de la demande. |
| gateway_geoip.area_code | Nombre | Indicatif régional du réseau téléphonique public commuté (PSTN) de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.city_name | Chaîne | Nom de la ville de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.continent_code | Chaîne | Code continent à deux lettres de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.country_code2 | Chaîne | Code pays à deux lettres de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.country_code3 | Chaîne | Code pays à trois lettres de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.country_name | Chaîne | Nom du pays de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.dma_code | Nombre | Code DMA (Designated Market Area) de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.ip | Chaîne | Adresse IP de la passerelle. |
| gateway_geoip.latitude | Nombre | Latitude de l'emplacement de la passerelle, telle qu'identifiée à partir de son adresse IP. |
| gateway_geoip.location | Chaîne | Longitude et latitude de l'emplacement de la passerelle (séparés par une virgule), telles qu'identifiées à partir de son adresse IP. |
| gateway_geoip.longitude | Nombre | Longitude de l'emplacement de la passerelle, telle qu'identifiée à partir de son adresse IP. |
| gateway_geoip.postal_code | Chaîne | Code postal de la passerelle, tel qu'identifié à partir de son adresse IP. |
| gateway_geoip.region_name | Chaîne | Forme abrégée de la région qui correspond à l'adresse IP de la passerelle. |
| gateway_geoip.timezone | Chaîne | Fuseau horaire de la passerelle, tel qu'identifié à partir de son adresse IP. |
| nom_de_l'hôte_de_la_passerelle | Chaîne | Le nom d'hôte de la passerelle API. |
| gateway_ip | Chaîne | Adresse IP de la passerelle. |
| port_passerelle | Nombre | Le numéro de port utilisé par la passerelle API. |
| nom_du_service_de_la_passerelle | Chaîne | Nom du service de passerelle API d' DataPower. Configuré par l'utilisateur administrateur du cloud lors de l'enregistrement du service de passerelle. Disponible uniquement sur DataPower API Gateway v10.5.3 ou version ultérieure. |
| demande_de_temps_de_service_de_passerelle | Nombre | Temps en millisecondes pris par la passerelle pour répondre à la demande. |
| type de passerelle | Chaîne | Le type et la version de la passerelle qui a traité l'appel, au format : type / version. Défini par tous les types de passerelle sauf v5c, et disponible uniquement sur v10.0.8.0 ou supérieur. |
| global_transaction_id | Chaîne | L'identifiant de transaction global ( DataPower ). Voir https://www.ibm.com/docs/en/datapower-gateway/latest?topic=variables-varserviceglobal-transaction-id-servicevarsglobaltransactionid. |
| hachage du document GraphQL | Chaîne | La valeur de hachage du document de la requête GraphQL. |
| nombre d'erreurs GraphQL | Nombre | Le nombre d'erreurs rencontrées lors de l'exécution de la requête GraphQL. |
| nom_de_l'opération_GraphQL | Chaîne | Le nom de l'opération GraphQL. |
| type d'opération GraphQL | Chaîne | Le type d'opération GraphQL. |
| graphql_request_field_cost | Nombre | API GraphQL uniquement. Coût maximal de toutes les zones accessibles dans la requête. Le coût de chaque accès de zone est configuré dans le schéma. |
| graphql_request_max_nesting | Nombre | API GraphQL uniquement. Profondeur d'imbrication maximale trouvée dans la requête par l'action de validation d'assemblage. La configuration du schéma est utilisée pour déterminer quels types sont imbriqués, cette valeur peut donc être inférieure à la profondeur d'imbrication trouvée par l'action d'analyse de l'assemblage. |
| graphql_request_top_field_counts | Objet | API GraphQL uniquement. Nombre maximal de fois qu'une requête peut récupérer chaque champ. Ce nombre correspond au nombre de fois que le programme de résolution doit s'exécuter. Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée. |
| graphql_request_top_type_counts | Objet | API GraphQL uniquement. Nombre maximal de fois qu'une requête peut récupérer un objet de chaque type. Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée. |
| graphql_request_type_cost | Nombre | API GraphQL uniquement. Coût maximal de tous les types extraits dans la requête. Le coût de chaque type est configuré dans le schéma. |
| graphql_response_field_cost | Nombre | API GraphQL uniquement. Coût de toutes les zones accessibles dans la requête. Le coût de chaque accès de zone est configuré dans le schéma. |
| graphql_response_max_nesting | Nombre | API GraphQL uniquement. Profondeur d'imbrication trouvée dans la requête par l'action de validation d'assemblage. La configuration du schéma est utilisée pour déterminer les types qui sont considérés comme imbriqués. Cette valeur peut donc être inférieure à la profondeur d'imbrication trouvée par l'action d'analyse d'assemblage. |
| graphql_response_top_field_counts | Objet | API GraphQL uniquement. Le nombre de fois où chaque champ a été récupéré par la requête. Ce nombre correspond au nombre de fois que le programme de résolution doit s'exécuter. Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée. |
| graphql_response_top_type_counts | Objet | API GraphQL uniquement. Nombre de fois où un objet de chaque type a été récupéré par la requête. Cette zone est stockée au format JSON et n'est pas indexée ; elle n'est donc pas disponible pour les visualisations. Un nombre limité de demandes et de réponses de requête est stocké pour chaque entrée, en fonction de la quantité de données contenues dans chacune. La quantité maximale de données pouvant être stockées peut être modifiée. |
| graphql_response_type_cost | Nombre | API GraphQL uniquement. Coût de tous les types extraits dans la requête. Le coût de chaque type est configuré dans le schéma. |
| headers. field_ name | Chaîne | Informations internes liées à l'ingestion d'analyses. headers.field_name n'est pas lié à l'appel API ou à sa réponse, voir request_http_headers pour cette information. |
| hôte | Chaîne | Le nom d'hôte ou l'adresse IP du nœud d'ingestion qui a reçu l'événement API. |
| http_user_agent | Chaîne | Valeur de l'en-tête de l'agent utilisateur dans la demande entrante |
| immediate_client_ip | Chaîne | Adresse IP du client qui se trouve directement devant la passerelle. immediate_client_ip est généralement l'adresse IP d'un équilibreur de charge. |
| latency_info.started | Nombre | Le délai (en millisecondes) entre la réception de la requête et le moment où la passerelle a démarré la tâche correspondante. Le démarrage d'une tâche comprend plusieurs étapes pour préparer l'exécution d'une API ; par exemple, l'exécution de l'établissement d'une liaison TCP/TLS, la vérification de l'ID client et de la valeur confidentielle d'une application et la mise en correspondance de l'identificateur URI de la demande avec un catalogue, une API et un plan. Lorsque la passerelle reçoit une requête, la durée « Start » est fixée à 0. La durée de chaque étape de la tâche Début est ensuite additionnée, et le total représente la durée de la tâche Début. |
| latency_info.task | Chaîne | Transaction d'API qui a été traitée. |
| log_policy | Chaîne | Stratégie de journalisation définie. Les valeurs incluent none, event, headers et payload. |
| méthode | Chaîne | La méthode HTTP utilisée dans la demande. Par exemple, GET, POST. |
| attribut_moniteur | Chaîne | L'attribut personnalisé utilisé pour la surveillance de l'API. |
| opentracing_info | Objet | Les données de traçage distribuées pour la demande. |
| chemin_opération | Chaîne | Le chemin d'opération spécifique au sein de l'API. |
| org_id | Chaîne | Identificateur de l'organisation de fournisseurs qui est propriétaire de l'API et des produits associés. |
| org_name | Chaîne | Nom de l'organisation de fournisseurs qui est propriétaire de l'API et des produits associés. |
| chemin d'accès | Chaîne | Le chemin complet de la requête API. |
| iD du chemin d'accès | Chaîne | L'identifiant du chemin d'accès à l'API. |
| plan_id | Chaîne | Identificateur du plan. |
| nom_plan | Chaîne | Nom du plan. Remarque : La propriété est définie sur undefined lorsqu'un identifiant client n'est pas utilisé ou n'est pas valide sur l'API. La passerelle a besoin d'un ID client pour déterminer quelle application
a appelé l'API. A partir de cette application, la passerelle peut déterminer le plan auquel l'application est abonnée
sur le produit qui contient l'API. Sans identifiant client, la passerelle est incapable de déterminer quel plan, produit ou application a été invoqué, car une seule API peut appartenir à plusieurs produits (chacun d'entre eux ayant plusieurs plans et applications qui sont abonnés à ces plans avec des identifiants client). |
| plan_version | Chaîne | Numéro de version du plan. |
| product_id | Chaîne | L'identifiant du produit associé à l'API. |
| nom_produit | Chaîne | Nom du produit. Remarque : La propriété est définie sur undefined lorsqu'un identifiant client n'est pas utilisé ou n'est pas valide sur l'API. La passerelle a besoin d'un ID client pour déterminer quelle application
a appelé l'API. A partir de cette application, la passerelle peut déterminer le plan auquel l'application est abonnée
sur le produit qui contient l'API. Sans identifiant client, la passerelle est incapable de déterminer quel plan, produit ou application a été invoqué, car une seule API peut appartenir à plusieurs produits (chacun d'entre eux ayant plusieurs plans et applications qui sont abonnés à ces plans avec des identifiants client). |
| product_title | Chaîne | Titre du produit. |
| product_version | Chaîne | Numéro de version du produit. |
| query_string | Chaîne | Valeur de la chaîne de requête d'URL dans la demande entrante |
| taux_limite | Chaîne | Nombre maximal de demandes qu'une application est autorisée à envoyer à l'API au cours d'une fenêtre de temps spécifiée. |
| rate_limit.count | Nombre | Le nombre d'appels API restants dans la fenêtre de temps de limite de débit spécifiée. |
| rate_limit.interval | Nombre | La fenêtre de temps totale pendant laquelle un certain nombre d'appels API sont autorisés. |
| rate_limit.limit | Nombre | Nombre maximal de demandes qu'une application est autorisée à envoyer à l'API au cours d'une fenêtre de temps spécifiée. |
| rate_limit.period | Nombre | Fenêtre de temps utilisée pour définir une limite de débit pour les appels API. |
| rate_limit.reject | Chaîne | Une indication du rejet des appels qui dépassent le plafond tarifaire spécifié. Si c'est le cas, l'appel API est rejeté avec un code d'état 429. Si la valeur est false, un enregistrement est créé dans le journal d'activité. |
| rate_limit.shared | Chaîne | Indication comme quoi la limite de débit est partagée au niveau d'un plan par toutes les opérations ou une limite de débit est spécifiée pour chaque opération. |
| rate_limit.unit | Nombre | Unité de temps utilisée pour calculer la limite de débit. Remarque : Les valeurs autorisées sont les suivantes : seconde, minute, heure, jour et semaine |
| request_body | Chaîne | Corps de la demande entrante |
| request _http_headers.field_name | Chaîne | Composant de la section d'en-tête HTTP de la demande entrante ; par exemple, les
codages admis, la chaîne d'identification de l'agent utilisateur ou les proxys par
l'intermédiaire desquels la demande a été envoyée. Remarque : les types d'en-têtes suivants sont considérés comme sensibles et ne sont pas affichés dans les données analytiques pour des raisons de sécurité :
|
| request_method | Chaîne | Méthode de la demande entrante |
| request_protocol | Chaîne | Protocole de la demande entrante |
| ressource | Chaîne | Nom de l'opération. |
| resource_id | Chaîne | Identificateur de l'opération. |
| resource_path | Chaîne | Chemin de l'opération. |
| response_body | Chaîne | Corps de la réponse sortante |
| response_ http_headers.field_name | Chaîne | Composant de la section d'en-tête HTTP de la réponse sortante ; par exemple, le type MIME du contenu ou la date et l'heure auxquelles le message é été envoyé. |
| nom_de_la_règle | Chaîne | Nom de la règle appliquée à la demande. |
| portée | Chaîne | Non utilisé pour l' DataPower® API Gateway, ou DataPower Gateway. |
| space_id | Chaîne | L'identifiant de l'espace sous lequel l'appel à l'API a été effectué. |
| nom_espace | Chaîne | Nom de l'espace. |
| status_code | Chaîne | Code de statut défini dans la réponse sortante |
| time_to_serve_request | Nombre | Le temps écoulé (en millisecondes) entre le moment où la passerelle a reçu la requête et celui où elle a envoyé une réponse. |
| transaction_id | Chaîne | Identificateur de la transaction d'API. Voir https://www.ibm.com/docs/en/datapower-gateway/latest?topic=variables-varservicetransaction-id-servicevarstransactionid. |
| uri_path | Chaîne | Chemin d'identificateur URI dans la demande entrante |
| agent utilisateur | Objet | Le contenu analysé du champ « http_user_agent », qui contient des informations sur l'utilisateur qui a effectué l'appel de l'API. |
| user_agent.device | Chaîne | Nom du périphérique. |
| user_agent.major | Chaîne | Numéro de version majeure de l'agent utilisateur. |
| user_agent.minor | Chaîne | Numéro de version mineure de l'agent utilisateur. |
| user_agent.name | Chaîne | Nom de l'agent utilisateur. |
| user_agent.os_full | Chaîne | Nom complet du système d'exploitation détecté. |
| user_agent.os_major | Chaîne | Numéro de version majeure du système d'exploitation détecté. |
| user_agent.os_minor | Chaîne | Numéro de version mineure du système d'exploitation détecté. |
| user_agent.os_name | Chaîne | Nom du système d'exploitation détecté. |
| user_agent.os_patch | Chaîne | Version du correctif du système d'exploitation détecté. |
| user_agent.os_version | Chaîne | Version du système d'exploitation détectée. |
| user_agent.patch | Chaîne | Version du correctif de l'agent utilisateur. |
| user_agent.version | Chaîne | Version de l'agent utilisateur détectée. |
| type_de_message_de_la_socket | Chaîne | Le type de message WebSocket. |
| websocket_origin | Chaîne | L'en-tête d'origine de la connexion WebSocket. |
not in https://github.ibm.com/velox/analytics/blob/master/scripts/localESApicData/apic-api-template.json but in https://www.elastic.co/guide/en/logstash/current/plugins-filters-useragent.html