GraphQL API principes fondamentaux

L'interface Instana GraphQL API offre une interface sécurisée au niveau des types pour l'interrogation des données d'observabilité.

Une seule requête vous permet d'extraire exactement les données dont vous avez besoin, ce qui évite de récupérer trop ou pas assez de données.

Avantages principaux

  • Requête unique : récupérer les données associées (applications, services, infrastructure et événements) en une seule requête
  • Sécurité des types : schéma fortement typé avec documentation intégrée
  • Requêtes flexibles : ne demandez que les champs dont vous avez besoin
  • Récupération efficace des données : réduit les récupérations excessives et insuffisantes de données
  • Filtrage temporel : interrogez les métriques, les événements et les SLO à l'aide du filtrage temporel

GraphQL contre REST API

Les sites Instana, GraphQL, API et REST API répondent à différents besoins. Utilisez le tableau comparatif entre GraphQL, API et REST API pour comprendre les principales différences et choisir l'approche qui correspond le mieux à vos besoins.

Tableau 1. Comparaison entre GraphQL, API et REST API
Fonction GraphQL API REST API
Récupération des données Demander des champs spécifiques dans une seule requête Les points de terminaison renvoient des structures de données prédéfinies
Plusieurs ressources Récupérer plusieurs ressources en une seule requête Nécessite que les requêtes soient adressées à des points de terminaison distincts
Surcharge de récupération Réduit la récupération excessive de données en ne renvoyant que les champs demandés Renvoie la réponse prédéfinie complète pour chaque point de terminaison
Sous-extraction Récupérer les données associées en une seule requête Les données associées peuvent nécessiter des demandes distinctes
Gestion des versions Le schéma évolue sans gestion des versions API les modifications nécessitent généralement des points de terminaison versionnés
En temps réel Prend en charge les abonnements aux données en temps réel Nécessite l'utilisation de la méthode « WebSockets » ou d'une interrogation
Système de types Schéma fortement typé avec introspection Le type de données dépend de l'implémentation et de la documentation

Le point de terminaison « GraphQL » API

Toutes les demandes sont transmises à une seule adresse e- URL :

POST https://<your-instana-host>/api/graphql

Remplacez <your-instana-host> par le nom d'hôte de votre tenant Instana (par exemple, my-company.instana.io).

Chaque requête est une requête de type « HTTPPOST » dont le corps est de type « JSON » et contient la requête que vous souhaitez exécuter.

Authentification

Chaque requête doit inclure un jeton d' API dans l'en-tête Authorization :

Authorization: apiToken <your-token>

Vous pouvez créer et gérer les jetons « API » dans les paramètres d’ Instana, sous « Paramètres de l’équipe » → « Jetons d’ API ». Un jeton doit disposer au minimum de la portée « Default » pour pouvoir utiliser l' GraphQL API.

Faites votre première demande

L'exemple suivant permet de récupérer les noms de vos cinq premières applications :

query {
  allApplications(first: 5) {
    edges {
      node {
        id
        name
      }
    }
  }
}

Signification de chaque élément :

  • allApplications: Le champ qui renvoie vos applications configurées.
  • first: 5: Limite les résultats aux cinq premiers éléments.
  • edges { node { ... } }: L'enveloppe standard pour les résultats paginés (expliquée ci-dessous).
  • id name: Les champs à renvoyer : l'identifiant unique et le nom d'affichage.

Exemple de réponse :

{
  "data": {
    "allApplications": {
      "edges": [
        { "node": { "id": "a1b2c3", "name": "Payment Service" } },
        { "node": { "id": "d4e5f6", "name": "Order Management" } }
      ]
    }
  }
}

Limites de débit

L' GraphQL API impose une limite de 5 000 appels par heure et par logement. Contrairement aux API REST, où la limite de débit s'applique par jeton d' API, cette limite s'applique au niveau du tenant. Vérifiez les limites de débit en vigueur avant de développer des intégrations afin de vous assurer que votre application respecte les seuils autorisés.