Objectifs de niveau de service API
Vous pouvez utiliser l'outil Instana API pour récupérer et configurer les points de données clés. Cette solution API permet notamment de réagir automatiquement aux modifications des objectifs de niveau de service (SLO), d'analyser plus en détail les incidents détectés et de générer des rapports.
L'adresse Instana API est spécifiée en utilisant le format OpenAPI v3. Pour plus d'informations sur la spécification actuelle, consultez la documentation GitHubAPI.
Authentification et autorisation
Vous pouvez vous authentifier et vous autoriser de différentes manières :
Utilisation d'une clé d'API
L'authentification par clé de session ( Instana ) API authentifie les requêtes à l'aide d'une clé de session ( API ) dans l'en-tête de requête d'autorisation ( HTTP ).
Exemple : l'exemple suivant utilise l'interface REST API avec curl pour récupérer toutes les métriques disponibles avec les agrégations possibles à l'aide d'un appel GET.
curl --request GET \
--url https://instana.rocks/api/application-monitoring/catalog/metrics \
--header 'authorization: apiToken xxxxxxxxxxxxxxxx'
Comment obtenir une clé d' API
Suivez les étapes suivantes pour obtenir une clé d' API :
- Connectez-vous à l'interface utilisateur d' Instana
- Dans la barre latérale de navigation, accédez à l'onglet Paramètres > Sécurité et accès. Sous Contrôle d'accès, sélectionnez Jetons API, puis cliquez sur Nouveau jeton API.
- Remplissez les champs obligatoires et activez les autorisations requises.
- Cliquez sur Sauvegarder.
Utilisation des cookies de session Web d' Instana
Vous pouvez accéder à toutes les API d' Instana s directement depuis un navigateur Web après vous être connecté à l'interface utilisateur d' Instana. Entrez l'adresse URL dans le champ d'adresse du navigateur, puis appuyez sur Entrée. Une requête GET est envoyée au backend Instana avec les cookies de session utilisateur connecté existants.
Limitation : les navigateurs ne pouvant envoyer que des requêtes GET directement, les autres méthodes d' HTTP s ne sont pas possibles, sauf si elles sont prises en charge via l'intégration d'extensions tierces.
Exigences en matière d'autorisation pour les API SLO
Pour accéder à toute l' API relative Configuration of service level indicators aux SLO à l'aide d'un jeton API, une autorisation est requise pour le jeton API correspondant.
API de configuration SLO
L' API de configuration SLO sert à gérer les configurations SLO. La charge utile de configuration SLO correspond à la description d'une entité SLO d' Instana. Instana traite ces configurations afin de générer divers indicateurs et rapports une fois celles-ci créées. Ces configurations peuvent être mises à jour et supprimées via cette page API. Une fois la configuration supprimée, Instana ne la traite plus, et les artefacts SLO associés ne sont plus accessibles. Le fonctionnement de l' Instana, de API et de l'interface Web est synchronisé.
Configuration SLO, actions et point de terminaison
La charge utile représente le contenu du corps de l' JSON pour l'objet de configuration SLO. Les actions GET, POST, DELETE et PUT sont utilisées pour récupérer, créer, supprimer et mettre à jour la configuration SLO. Pour plus d'informations sur ces éléments et leurs interactions, consultez la documentation « SLO Configurations » sur API.
Exemples de configurations SLO
Exemple 1 : Latence basée sur le temps d'application
L'objectif de niveau de service (SLO) suivant vise une qualité de service de 96.3818 %, caractérisée par une latence moyenne inférieure à 341 ms. Le budget d'erreur est calculé en minutes sur une période glissante de 7 jours. Il est mesuré du point de vue de l'application backend. Ce SLO est lié au UTC fuseau horaire par défaut.
Charge utile :
{
"name": "Cupcake Vending Machine performance aggregation over time",
"target": 0.963818,
"lastUpdated": 1690357470848,
"entity": {
"type": "application",
"applicationId": "LsEOORPeR0Gnt_kntZbosw",
"serviceId": null,
"endpointId": null,
"boundaryScope": "ALL",
"includeInternal": false,
"includeSynthetic": false,
"tagFilterExpression": null
},
"indicator": {
"type": "timeBased",
"blueprint": "latency",
"threshold": 341,
"aggregation": "MEAN"
},
"timeWindow": {
"type": "rolling",
"duration": 7,
"durationUnit": "day"
},
"tags": [
"food",
"snacks",
"timeBased",
"latency",
"demo"
]
}
Exemple 2 : Disponibilité basée sur les événements du site Web
L'objectif SLO suivant vise une qualité de service de 71.38 % indiquée par le rapport entre les balises de requête d' HTTP s réussies et celles ayant échoué. Le budget d'erreur est calculé pour chaque événement sur une période glissante de 7 jours. Elle est mesurée du point de vue de l'utilisateur. Ce SLO est configuré pour utiliser le America/New_York fuseau horaire.
Charge utile :
{
"name": "Cupcake Shop reliability by event count",
"target": 0.7138,
"lastUpdated": 1690357470042,
"entity": {
"type": "website",
"websiteId": "h_TxI-AGSZqVd5tVKjDXKw",
"beaconType": "httpRequest",
"tagFilterExpression": null
},
"indicator": {
"type": "eventBased",
"blueprint": "availability",
"threshold": 0
},
"timeWindow": {
"type": "rolling",
"duration": 7,
"durationUnit": "day",
"timezone": "America/New_York"
},
"tags": [
"food",
"snacks",
"eventBased",
"availability",
"demo"
]
}
Exemple 3 : Tests synthétiques de disponibilité basés sur les événements
L'objectif SLO suivant vise une qualité de service de 96.99 %, calculée à partir du rapport entre les résultats de tests synthétiques non erronés et erronés. Le budget d'erreur est calculé sur la base d'événements individuels sur une période glissante de 7 jours. Il est mesuré du point de vue de l'application backend. Par défaut, ce SLO est aligné sur le UTC fuseau horaire.
Charge utile :
{
"name": "Cupcake Shop Synthetic Availability",
"target": 0.9699,
"lastUpdated": 1742587582774,
"entity": {
"type": "synthetic",
"syntheticTestIds": [
"lLW0jCW8mZRmdrEZ1cno"
],
"tagFilterExpression": {
"type": "EXPRESSION",
"logicalOperator": "AND",
"elements": []
}
},
"indicator": {
"type": "eventBased",
"threshold": 0,
"operator": null,
"aggregation": null,
"badEventsFilter": {
"type": "TAG_FILTER",
"name": "call.erroneous",
"stringValue": null,
"numberValue": null,
"booleanValue": true,
"floatValue": null,
"key": null,
"value": null,
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
},
"goodEventsFilter": {
"type": "TAG_FILTER",
"name": "call.erroneous",
"stringValue": null,
"numberValue": null,
"booleanValue": false,
"floatValue": null,
"key": null,
"value": null,
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
},
"blueprint": "availability"
},
"timeWindow": {
"type": "rolling",
"duration": 1,
"durationUnit": "week"
},
"tags": []
}
Exemple 4 : Tests synthétiques du trafic basé sur le temps
L'objectif SLO suivant vise une qualité de service de 90 % sur la base du nombre total de trafic des résultats des tests synthétiques. Le budget d'erreur est calculé en minutes sur une période fixe d'un jour. Il est mesuré à partir de la SOMME de tout le trafic dans la fenêtre temporelle. Le SLO est lié au fuseau Europe/Dublin horaire.
Charge utile :
{
"name": "Cupcake Shop Synthetic Traffic",
"target": 0.9,
"lastUpdated": 1736873398635,
"entity": {
"type": "synthetic",
"syntheticTestIds": [
"zOj9zRK2142Fjo6SNc4r",
"0Ir0TqQzEECdc05jiHHu"
],
"tagFilterExpression": {
"type": "EXPRESSION",
"logicalOperator": "AND",
"elements": []
}
},
"indicator": {
"threshold": 1,
"operator": ">=",
"aggregation": "SUM",
"trafficType": "all",
"type": "timeBased",
"blueprint": "traffic"
},
"timeWindow": {
"type": "fixed",
"duration": 1,
"durationUnit": "day",
"timezone": "Europe/Dublin",
"startTimestamp": 1736830800000
},
"tags": []
}
Exemple 5 : Disponibilité des tests synthétiques à l'aide d'une sélection de tests basée sur des filtres de balises
L'objectif SLO suivant vise une qualité de service de 99 %, calculée à partir du rapport entre les résultats de tests synthétiques corrects et ceux comportant des erreurs. Au lieu de spécifier individuellement les identifiants des tests synthétiques, ce SLO sélectionne dynamiquement les tests synthétiques à l'aide d'une expression de filtrage par balise. Dans cet exemple, tous les tests synthétiques dont le nom commence par checkout sont pris en compte dans le calcul du SLO. La marge d'erreur est calculée à partir des événements individuels sur une période fixe d'un jour. Par défaut, cet SLO est aligné sur le UTC fuseau horaire.
Charge utile :
{
"name": "Cupcake Shop Checkout Synthetic Availability",
"target": 0.99,
"lastUpdated": 1742587582774,
"entity": {
"type": "synthetic",
"syntheticTestIds": null,
"tagFilterExpression": {
"key": null,
"name": "synthetic.testName",
"type": "TAG_FILTER",
"value": "checkout",
"entity": "NOT_APPLICABLE",
"operator": "STARTS_WITH",
"floatValue": null,
"numberValue": null,
"stringValue": "checkout",
"booleanValue": null
}
},
"indicator": {
"type": "eventBased",
"threshold": 0,
"operator": null,
"aggregation": null,
"badEventsFilter": {
"type": "TAG_FILTER",
"name": "call.erroneous",
"stringValue": null,
"numberValue": null,
"booleanValue": true,
"floatValue": null,
"key": null,
"value": null,
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
},
"goodEventsFilter": {
"type": "TAG_FILTER",
"name": "call.erroneous",
"stringValue": null,
"numberValue": null,
"booleanValue": false,
"floatValue": null,
"key": null,
"value": null,
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
},
"blueprint": "availability"
},
"timeWindow": {
"type": "fixed",
"duration": 1,
"durationUnit": "day"
},
"tags": []
}
Exemple 6 : Tests de trafic simulé en fonction du temps utilisant une sélection de tests basée sur des filtres de balises
L'objectif SLO suivant vise une qualité de service de 95 %, calculée sur la base du trafic total issu des résultats des tests synthétiques. Au lieu de spécifier individuellement les identifiants des tests synthétiques, ce SLO sélectionne dynamiquement les tests synthétiques à l'aide d'une expression de filtrage par balise. Dans cet exemple, seuls les tests synthétiques exécutés à partir de l'emplacement portant l'identifiant wfVYynQmKVY9LglFuC33 sont pris en compte dans le calcul du SLO. Le budget d'erreur est calculé en minutes sur une période fixe de quatre semaines. Cette mesure repose sur la SOMME de l'ensemble du trafic synthétique enregistré au cours de la fenêtre temporelle. Le SLO est lié au America/New_York fuseau horaire.
Charge utile :
{
"name": "Cupcake Shop New York Synthetic Traffic",
"target": 0.95,
"lastUpdated": 1736873398635,
"entity": {
"type": "synthetic",
"syntheticTestIds": null,
"tagFilterExpression": {
"key": null,
"name": "synthetic.locationId",
"type": "TAG_FILTER",
"value": "wfVYynQmKVY9LglFuC33",
"entity": "NOT_APPLICABLE",
"operator": "EQUALS",
"floatValue": null,
"numberValue": null,
"stringValue": "wfVYynQmKVY9LglFuC33",
"booleanValue": null
}
},
"indicator": {
"threshold": 1,
"operator": ">=",
"aggregation": "SUM",
"trafficType": "all",
"type": "timeBased",
"blueprint": "traffic"
},
"timeWindow": {
"type": "fixed",
"duration": 4,
"durationUnit": "week",
"timezone": "America/New_York",
"startTimestamp": 1736830800000
},
"tags": []
}
Exemple 7 : Saturation du processeur de l'hôte d'infrastructure (en fonction du temps)
Le SLO suivant surveille la saturation du processeur sur les hôtes de production, avec pour objectif une disponibilité de 99 % et une utilisation moyenne du processeur inférieure à 80 %. Le budget d'erreur est calculé en minutes sur une période de 7 jours consécutifs. Le budget d'erreurs utilise le modèle de saturation avec un indicateur basé sur le temps pour aider à garantir que les hôtes maintiennent des niveaux de CPU sains.
Charge utile :
{
"name": "Production Host CPU Saturation",
"target": 0.99,
"entity": {
"type": "infrastructure",
"infraType": "host",
"tagFilterExpression": {
"type": "TAG_FILTER",
"name": "host.name",
"stringValue": "prod-web-01",
"numberValue": null,
"booleanValue": null,
"floatValue": null,
"key": null,
"value": "prod-web-01",
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
}
},
"indicator": {
"type": "timeBased",
"metricName": "cpu.sys",
"threshold": 0.8,
"operator": ">=",
"aggregation": "MEAN",
"blueprint": "saturation"
},
"timeWindow": {
"type": "rolling",
"duration": 7,
"durationUnit": "day",
"timezone": "UTC"
},
"tags": [
"infrastructure",
"host",
"cpu",
"saturation"
]
}
Exemple 8 : Saturation de la mémoire du cluster « Kubernetes » (basée sur les événements)
Le SLO suivant surveille la saturation de la mémoire dans un cluster d' Kubernetes s à l'aide d'un indicateur basé sur les événements, avec un objectif de disponibilité de 95 %. Les événements sont classés comme bons lorsque le ratio mémoire est inférieur au seuil et comme mauvais lorsqu'il atteint ou dépasse le seuil. Le budget d'erreur est calculé pour chaque événement sur une période de 30 jours consécutifs à l'aide du modèle de saturation.
Charge utile :
{
"name": "K8s Cluster Memory Saturation",
"target": 0.95,
"entity": {
"type": "infrastructure",
"infraType": "kubernetesCluster",
"tagFilterExpression": {
"type": "TAG_FILTER",
"name": "kubernetes.cluster.name",
"stringValue": "production-cluster",
"numberValue": null,
"booleanValue": null,
"floatValue": null,
"key": null,
"value": "production-cluster",
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
}
},
"indicator": {
"type": "eventBased",
"metricName": "limitCapacityMemoryRatio",
"threshold": 0.75,
"operator": ">=",
"aggregation": "MEAN",
"blueprint": "saturation"
},
"timeWindow": {
"type": "rolling",
"duration": 30,
"durationUnit": "day",
"timezone": "UTC"
},
"tags": [
"infrastructure",
"kubernetes",
"memory",
"saturation"
]
}
Exemple 9 : Indicateur de santé personnalisé pour un conteneur AWS ECS (basé sur les événements)
Le SLO suivant utilise un indicateur personnalisé pour surveiller l'état du conteneur AWS ECS en fonction de métriques personnalisées, avec un objectif de disponibilité de 99 %. Les événements sont classés comme bons lorsque l'utilisation du processeur du conteneur est inférieure à 70 % et comme mauvais lorsqu'elle dépasse ce seuil. Cela démontre la flexibilité des indicateurs personnalisés dans le cadre de la surveillance des infrastructures adaptée aux besoins spécifiques des entreprises.
Charge utile :
{
"name": "ECS Container Custom Health",
"target": 0.99,
"entity": {
"type": "infrastructure",
"infraType": "awsEcsContainer",
"tagFilterExpression": {
"type": "TAG_FILTER",
"name": "aws.ecs.cluster.name",
"stringValue": "production-ecs-cluster",
"numberValue": null,
"booleanValue": null,
"floatValue": null,
"key": null,
"value": "production-ecs-cluster",
"operator": "EQUALS",
"entity": "NOT_APPLICABLE"
}
},
"indicator": {
"type": "eventBased",
"goodEventsFilter": {
"type": "TAG_FILTER",
"name": "cpu.usage",
"stringValue": null,
"numberValue": 0,
"booleanValue": null,
"floatValue": 0.7,
"key": null,
"value": 0.7,
"operator": "LESS_THAN",
"entity": "NOT_APPLICABLE"
},
"badEventsFilter": {
"type": "TAG_FILTER",
"name": "cpu.usage",
"stringValue": null,
"numberValue": 0,
"booleanValue": null,
"floatValue": 0.7,
"key": null,
"value": 0.7,
"operator": "GREATER_OR_EQUAL_THAN",
"entity": "NOT_APPLICABLE"
},
"goodEventInfraMetric": "cpu.usage",
"badEventInfraMetric": "cpu.usage",
"blueprint": "custom",
"operator": null,
"threshold": 0,
"aggregation": "MEAN"
},
"timeWindow": {
"type": "rolling",
"duration": 1,
"durationUnit": "week",
"timezone": "America/New_York"
},
"tags": [
"infrastructure",
"aws",
"ecs",
"custom"
]
}
Exemple 10 : Latence de l'application avec une fenêtre temporelle d'un mois civil
L'objectif SLO suivant vise une qualité de service de 99 %, indiquée par une latence moyenne inférieure à 200 ms. Le budget d'erreurs est calculé en minutes sur une période fixe d'un mois civil. Elle est mesurée du point de vue de l'application backend. Ce SLO est lié au fuseau horaire America/New_York. Les fenêtres temporelles mensuelles ne sont prises en charge que pour les fenêtres temporelles fixes et sont limitées à une durée d'un mois. Si elle est créée au milieu du mois, la période de mesure initiale commence à la date de création et s'étend jusqu'au dernier jour de ce mois; les périodes suivantes correspondent à des mois civils complets.
Charge utile :
{
"name": "Payment Service Monthly Latency",
"target": 0.99,
"lastUpdated": 1737561600000,
"entity": {
"type": "application",
"applicationId": "PaymentApp123456",
"serviceId": null,
"endpointId": null,
"boundaryScope": "INBOUND",
"includeInternal": false,
"includeSynthetic": false,
"tagFilterExpression": null
},
"indicator": {
"type": "timeBased",
"blueprint": "latency",
"threshold": 200,
"aggregation": "MEAN"
},
"timeWindow": {
"type": "fixed",
"duration": 1,
"durationUnit": "calendar_month",
"timezone": "America/New_York",
"startTimestamp": 1737561600000
},
"tags": [
"payment",
"production",
"monthly",
"latency"
]
}
API de base pour créer/obtenir/mettre à jour/supprimer des configurations SLO
Les API de base suivantes permettent de créer, récupérer, mettre à jour et supprimer la configuration SLO sans interaction avec l'interface utilisateur. Le document « API » (L'impact des changements climatiques sur les ressources en eau) est disponible à l'adresse suivante : Instana GitHub.
Créer une configuration SLO
Cet appel API crée une nouvelle configuration SLO unique basée sur la charge utile JSON incluse dans la commande.
curl exemple :
echo -e ' \
{
"name": "my SLO no 1",
"target": 0.96,
"lastUpdated": 1690357470848,
"entity": {
"type": "application",
"applicationId": "LsEOORPeR0Gnt_kntZbosw",
"serviceId": null,
"endpointId": null,
"boundaryScope": "ALL",
"includeInternal": false,
"includeSynthetic": false,
"tagFilterExpression": null
},
"indicator": {
"type": "timeBased",
"blueprint": "latency",
"threshold": 341,
"aggregation": "MEAN"
},
"timeWindow": {
"type": "rolling",
"duration": 7,
"durationUnit": "day",
"timezone": "America/Chicago"
},
"tags": [
"food",
"snacks",
"timeBased",
"latency",
"demo"
]
}
' | curl -X POST -H "Content-Type: application/json" -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/settings/slo -d @-
Récupérer la configuration SLO par ID
Cet appel API renvoie une configuration SLO unique et les paires d'attributs clés qui lui sont associées. Nécessite la connaissance de l'attribut ID pour la configuration particulière.
curl exemple :
curl -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/settings/slo/SLOsmbQLI8ORcuhF_L-QquFWQ
Mettre à jour la configuration SLO existante
Équivalent à UPDATE, il met à jour uniquement les attributs pouvant être mis à jour d'une configuration SLO existante. Nécessite la connaissance de l'attribut ID pour la configuration particulière.
Les champs suivants peuvent être mis à jour (tous les autres champs ne sont pas autorisés) :
- nom
- cible
- timeWindow.type
- timeWindow.duration
- timeWindow.durationUnit
- timeWindow.timezone
- balises
curl exemple :
echo -e ' \
{
"name": "My SLO no1 updated",
"target": 90.1,
"entity": {
"type": "application",
"applicationId": "6uWKK5izTFqo0bdioIr1PA",
"serviceId": null,
"endpointId": null,
"boundaryScope": "ALL",
"includeInternal": false,
"includeSynthetic": false,
"tagFilterExpression": {
"type": "EXPRESSION",
"logicalOperator": "AND",
"elements": []
}
},
"indicator": {
"type": "timeBased",
"threshold": 1234,
"aggregation": "P95",
"blueprint": "latency"
},
"timeWindow": {
"type": "fixed",
"duration": 1,
"durationType": "day",
"timezone": "Europe/Berlin",
"startTimestamp": 1681311907374
},
"tags": ["tagA", "tagB"]
}
' | curl -X PUT -H "Content-Type: application/json" -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/settings/slo/SLOsmbQLI8ORcuhF_L-QquFWQ
Récupérer toutes les configurations SLO
Cet appel API renvoie toutes les configurations SLO et les paires d'attributs clés pour chacune d'entre elles.
curl exemple :
curl -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/settings/slo
Récupérer les balises de configuration SLO
Cet appel API renvoie TOUTES les balises de configuration SLO existantes.
curl exemple :
curl -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/settings/slo/tags
Supprimer la configuration SLO
Cet appel API supprime une configuration SLO existante identifiée de manière unique par son ID.
curl exemple :
curl -X DELETE -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/settings/slo/SLOsmbQLI8ORcuhF_L-QquFWQ
Rapport sur les niveaux de service API
Le rapport SLO REST API renvoie l'ensemble des indicateurs et des graphiques dans une seule réponse, en fonction de l'ID de configuration et de la plage horaire fournis.
Voici un exemple d'utilisation de l' API du rapport SLO pour récupérer un rapport couvrant la période du 31 mars 2025, de 13 h à 16 h :
curl exemple :
curl -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/slo/report/SLO99DvvwekR3G0VDw-1m2KtA?to=1743451200000&from=1743444000000
Exemple de réponse :
{
"sli": 0.9895833333333334,
"slo": 0.99,
"totalErrorBudget": 14,
"errorBudgetRemaining": -1,
"errorBudgetSpent": 15,
"errorBurnRate": 1,
"fromTimestamp": 1743444000000,
"toTimestamp": 1743451200000,
"violationDistribution": {
"0": 1,
"1": 1,
"2": 1
},
"errorChart": {
"0": 0,
"1": 0,
"2": 0
},
"errorAccumulationChart": {
"0": 7,
"1": 7,
"2": 7
},
"errorBudgetRemainChart": {
"0": 7,
"1": 7,
"2": 7
},
"errorBurnRateChart": {
"0": 0,
"1": 0,
"2": 0
}
}
}
API aux alertes intelligentes SLO
Les alertes intelligentes SLO peuvent être gérées via les API de configuration des alertes des niveaux de service. À l'instar des autres API Smart Alert, cet ensemble d'API permet de lire, créer, mettre à jour, supprimer, activer, désactiver, versionner et réviser les alertes SLO.
Voici un exemple de création d'une alerte intelligente SLO pour le dépassement du budget d'erreurs :
- Demande :
echo -e ' \
{
"alertChannelIds": [],
"customPayloadFields": [],
"description": "Consumed >= 80% of the error budget.",
"name": "Remaining error budget is low",
"rule": {
"alertType": "ERROR_BUDGET",
"metric": "BURNED_PERCENTAGE"
},
"severity": 5,
"sloIds": [
"SLO2XfFi3h7TiWk56MRbyiAOA",
"SLOlVgz62GhQO6x0I-qUJnwZg"
],
"threshold": {
"type": "staticThreshold",
"value": 0.8,
"operator": ">=",
"lastUpdated": 1743534460472
},
"timeThreshold": {
"expiry": 300000,
"timeWindow": 900000
},
"triggering": true
}
' | curl -X PUT -H "Content-Type: application/json" -H 'authorization: apiToken XXXXXXXXXXXXXX' https://instana.rocks/api/events/settings/global-alert-configs/service-levels
- Réponse :
{
"name": "Remaining error budget is low",
"description": "Consumed >= 80% of the error budget.",
"severity": 5,
"burnRateTimeWindows": null,
"triggering": true,
"rule": {
"alertType": "ERROR_BUDGET",
"metric": "BURNED_PERCENTAGE"
},
"threshold": {
"type": "staticThreshold",
"operator": ">=",
"value": 0.8,
"lastUpdated": 1743534460472
},
"sloIds": [
"SLO2XfFi3h7TiWk56MRbyiAOA",
"SLOlVgz62GhQO6x0I-qUJnwZg"
],
"alertChannelIds": [],
"timeThreshold": {
"expiry": 300000,
"timeWindow": 900000
},
"customPayloadFields": [],
"id": "o-xuzP6yT1u5UZNthAx6Rg",
"created": 1743534461234,
"initialCreated": 1743534461234,
"readOnly": false,
"enabled": true
}
API Legacy et Lite SLO
Gérez les SLI Legacy et Lite via API
Les SLO Legacy et Lite ont été mis en œuvre différemment du SLO précédent. L'indicateur de niveau de service (SLI) est un élément de configuration essentiel. Le SLO fait partie des paramètres du tableau de bord personnalisé permettant d'afficher les résultats en matière de niveau de service conformément aux exigences de l'entreprise.
- L'interface de configuration SLI ( API ) fournit des points de terminaison permettant de créer, de lire, de mettre à jour et de supprimer des configurations SLI pour les configurations SLI classiques et Lite.
- Les widgets de tableau de bord personnalisés API sont utilisés pour gérer les tableaux de bord personnalisés et les widgets SLO.
À titre d'exemple, la commande curl suivante peut être utilisée pour créer un SLI basé sur le temps nommé My First SLI pour une application avec l'ID appId qui dispose d'un service avec l'ID serviceId et qui est limité aux appels où l'ID du point de terminaison est égal à endpointId. Le SLI est agrégé pour le 90e centile de la latency métrique et une valeur seuil de 25 ms.
curl --location --request POST "{{base}}/api/settings/v2/sli" \
--header "Authorization: apiToken {{apiToken}}" \
--header "Content-Type: application/json" \
--data '{
"sliName": "My first SLI",
"metricConfiguration": {
"metricName": "latency",
"metricAggregation": "P90",
"threshold": 25
},
"sliEntity": {
"sliType": "application",
"applicationId": "appId",
"serviceId": "serviceId",
"endpointId": "endpointId",
"boundaryScope": "ALL"
}
}'
Rapports Legacy et Lite SLI API
Tout comme le rapport SLO API, le rapport SLI peut être invoqué pour renvoyer Legacy et les rapports Lite SLI. Contrairement au rapport SLO API, l'objectif SLO doit être fourni dans la demande.
Par exemple :
- Demande
https://instana.rocks/api/sli/report/Ca_h3OGvT3iu5Kt6LVsJ7g?slo=0.9&to=1743451200000&from=1743444000000
- Réponse
{
"sli": 0.9166666666666666,
"slo": 0.9,
"totalErrorBudget": 12,
"errorBudgetRemaining": 2,
"fromTimestamp": 1743444000000,
"toTimestamp": 1743451200000,
"violationDistribution": {
"0": 1,
"1": 1,
"2": 1,
"3": 1,
"4": 1,
"5": 1,
"6": 1,
... ...
"99": 1,
"100": 0
}
}