```html

Introduction à l'API Datadog
L'API de Datadog fournit un accès programmatique aux capacités robustes de surveillance et d'analyse de la plateforme. Cette API RESTful permet aux développeurs d'envoyer des données, de créer des visualisations et de gérer leurs comptes Datadog via du code. Que vous intégriez des applications personnalisées, automatisiez des flux de travail ou étendiez les fonctionnalités de Datadog, il est essentiel de comprendre comment exploiter l'API pour maximiser le potentiel de la plateforme.
L'API Datadog est conçue avec une architecture orientée ressources qui utilise des codes de réponse HTTP standard, accepte et renvoie du JSON dans toutes les requêtes et utilise des méthodes HTTP standard. Cela la rend intuitive pour les développeurs familiarisés avec les services web RESTful. La fonctionnalité complète de l'API permet à la fois des opérations de lecture et d'écriture, vous permettant non seulement de récupérer des données de surveillance, mais également de configurer divers aspects de votre environnement Datadog.
En maîtrisant l'API Datadog, vous pourrez :
- Créer et gérer par programme des tableaux de bord, des moniteurs et des alertes
- Soumettre des métriques personnalisées à partir de n'importe quelle application ou composant d'infrastructure
- Automatiser les flux de travail de gestion des incidents
- S'intégrer aux pipelines CI/CD pour une surveillance continue
- Créer des outils et des solutions personnalisés autour de vos données de surveillance
Premiers pas avec l'authentification de l'API Datadog
Avant de faire des appels d'API, vous devrez configurer correctement l'authentification pour garantir un accès sécurisé à vos ressources Datadog.
Obtention des clés API et d'application Datadog
Pour commencer à utiliser l'API Datadog, vous aurez besoin de deux types de clés :
- Clé API : celle-ci identifie votre compte Datadog et est requise pour toutes les requêtes d'API.
- Accédez à votre compte Datadog : Paramètres de l'organisation > Clés API
- Cliquez sur « Nouvelle clé » pour créer une nouvelle clé API
- Donnez-lui un nom significatif qui indique son objectif et son utilisation
- Stockez la clé en toute sécurité car elle donne accès à votre compte Datadog
- Clé d'application : requise pour de nombreux points de terminaison de gestion, celle-ci fournit une authentification supplémentaire et spécifie les autorisations d'accès.
- Accédez à Paramètres de l'organisation > Clés d'application
- Cliquez sur « Nouvelle clé » pour générer une clé d'application
- Nommez-la de manière appropriée en fonction de son utilisation prévue
- En option, limitez son accès à des applications Datadog spécifiques
Configuration des en-têtes d'authentification de l'API Datadog
Lors de l'envoi de requêtes d'API, vous devrez inclure ces clés en tant qu'en-têtes :
- Incluez votre clé API dans l'en-tête en utilisant
DD-API-KEY: your_api_key_here
- Pour les points de terminaison nécessitant une authentification supplémentaire, incluez
DD-APPLICATION-KEY: your_application_key_here
Voici un exemple de requête authentifiée de base :
curl -X GET "<https://api.datadoghq.com/api/v1/dashboard>" \\\\
-H "Content-Type: application/json" \\\\
-H "DD-API-KEY: your_api_key_here" \\\\
-H "DD-APPLICATION-KEY: your_app_key_here"
Gestion de la sécurité des clés API Datadog
Compte tenu de l'accès important que ces clés fournissent, il est crucial de suivre les meilleures pratiques de sécurité :
- Faites pivoter les clés régulièrement, en particulier les clés API
- Définissez les autorisations appropriées pour les clés d'application
- Ne codez jamais en dur les clés dans le code source de votre application
- Utilisez des variables d'environnement ou des coffres-forts sécurisés pour stocker les clés
- Auditez périodiquement l'utilisation des clés API
- Révoquez immédiatement les clés inutilisées ou potentiellement compromises
Concepts de base de l'API Datadog
Comprendre les concepts fondamentaux de l'API Datadog vous aidera à naviguer plus efficacement dans ses vastes capacités.
Structure des points de terminaison de l'API Datadog
L'API Datadog est logiquement organisée en domaines fonctionnels qui reflètent les capacités de la plateforme :
- API Metrics : pour soumettre et interroger les données de métriques, ce qui vous permet d'envoyer des métriques personnalisées ou de récupérer des valeurs de métriques historiques. Ces points de terminaison sont essentiels à la surveillance des performances des applications et de l'infrastructure.
- API Events : utilisée pour publier et récupérer des événements à partir du flux d'événements Datadog. Les événements peuvent représenter des déploiements, des alertes ou tout événement important dans votre environnement.
- API Monitors : permet la création et la gestion programmatiques d'alertes de surveillance, y compris la configuration des paramètres de notification et la planification des temps d'arrêt.
- API Dashboards : pour la création, la modification et la récupération de tableaux de bord de visualisation, permettant la création automatisée de tableaux de bord basés sur des modèles ou les besoins de l'application.
- API Logs : fournit des points de terminaison pour envoyer des journaux directement à Datadog, configurer des pipelines de traitement des journaux et gérer les archives de journaux.
- API Synthetics : pour gérer les tests synthétiques, récupérer les résultats des tests et planifier les exécutions de tests.
- API Users & Organizations : permet la gestion des membres de l'équipe, des autorisations et des paramètres de l'organisation.
- API Service Level Objectives (SLO) : pour la création et le suivi des SLO afin de mesurer la fiabilité du service.
Effectuer votre premier appel d'API Datadog
Commençons par un cas d'utilisation courant : la soumission d'une métrique personnalisée. Cet exemple montre comment envoyer une métrique de jauge simple avec des balises :
import requests
import time
import json
api_key = "your_api_key_here"
current_time = int(time.time())
payload = {
"series": [
{
"metric": "custom.application.performance",
"points": [[current_time, 100]],
"type": "gauge",
"tags": ["environment:production", "application:web", "region:us-east"]
}
]
}
headers = {
"Content-Type": "application/json",
"DD-API-KEY": api_key
}
response = requests.post("<https://api.datadoghq.com/api/v1/series>",
headers=headers,
data=json.dumps(payload))
print(f"Response Status Code: {response.status_code}")
print(f"Response Body: {response.json()}")
Cet extrait de code :
- Crée une charge utile avec une métrique personnalisée nommée « custom.application.performance »
- Définit l'horodatage actuel et une valeur de 100
- Ajoute des balises pour une meilleure organisation et un meilleur filtrage
- Envoie les données au point de terminaison des métriques de Datadog
- Imprime la réponse de l'API
Comprendre le format de réponse de l'API Datadog
Les réponses de l'API Datadog suivent généralement un format JSON cohérent :
{
"status": "ok",
"errors": [],
"data": {
"id": "abc-123-xyz",
"name": "Example Resource",
"created_at": "2023-06-01T12:00:00.000Z",
"modified_at": "2023-06-02T15:30:00.000Z",
...
}
}
Les champs clés incluent :
status
: indique la réussite ou l'échec de la requêteerrors
: contient des messages d'erreur si la requête a échouédata
: les données de ressource réelles renvoyées par l'API
Cas d'utilisation et exemples courants de l'API Datadog
Explorons les applications pratiques de l'API Datadog à travers des exemples détaillés couvrant les principales fonctionnalités.
Récupération des informations du tableau de bord de l'API Datadog
Les tableaux de bord sont au cœur des capacités de visualisation de Datadog. Voici comment récupérer les détails d'un tableau de bord spécifique :
curl -X GET "<https://api.datadoghq.com/api/v1/dashboard/dashboard_id>" \\\\
-H "Content-Type: application/json" \\\\
-H "DD-API-KEY: your_api_key_here" \\\\
-H "DD-APPLICATION-KEY: your_app_key_here"
Pour créer un nouveau tableau de bord par programme :
import requests
import json
api_key = "your_api_key_here"
app_key = "your_app_key_here"
dashboard_payload = {
"title": "API Generated Dashboard",
"description": "Created via the Datadog API",
"widgets": [
{
"definition": {
"type": "timeseries",
"requests": [
{
"q": "avg:system.cpu.user{*} by {host}",
"display_type": "line"
}
],
"title": "CPU Usage by Host"
}
}
],
"layout_type": "ordered"
}
headers = {
"Content-Type": "application/json",
"DD-API-KEY": api_key,
"DD-APPLICATION-KEY": app_key
}
response = requests.post("<https://api.datadoghq.com/api/v1/dashboard>",
headers=headers,
data=json.dumps(dashboard_payload))
print(f"Dashboard created with ID: {response.json().get('id')}")
Création d'un moniteur avec l'API Datadog
Les moniteurs sont essentiels pour les alertes proactives. Voici comment créer un moniteur qui alerte lorsque l'utilisation du processeur dépasse un seuil :
import requests
import json
api_key = "your_api_key_here"
app_key = "your_app_key_here"
monitor_payload = {
"name": "High CPU Usage Alert",
"type": "metric alert",
"query": "avg(last_5m):avg:system.cpu.user{*} > 80",
"message": "CPU usage is above 80% for the last 5 minutes. @slack-alerts-channel @email.address@example.com",
"tags": ["app:web", "env:production", "team:infrastructure"],
"priority": 3,
"options": {
"notify_no_data": True,
"no_data_timeframe": 10,
"new_host_delay": 300,
"evaluation_delay": 60,
"thresholds": {
"critical": 80,
"warning": 70
},
"include_tags": True,
"notify_audit": False,
"require_full_window": False
}
}
headers = {
"Content-Type": "application/json",
"DD-API-KEY": api_key,
"DD-APPLICATION-KEY": app_key
}
response = requests.post("<https://api.datadoghq.com/api/v1/monitor>",
headers=headers,
data=json.dumps(monitor_payload))
print(f"Response Status: {response.status_code}")
print(f"Monitor created: {response.json()}")
Cet exemple :
- Crée un moniteur d'alerte de métrique
- Définit des seuils d'avertissement (70 %) et critiques (80 %)
- Inclut les paramètres de notification avec des mentions pour Slack et e-mail
- Ajoute des options de configuration détaillées comme le délai d'évaluation et le délai du nouvel hôte
Intégration avec AWS à l'aide de l'API Datadog
La connexion de Datadog avec les services cloud étend ses capacités de surveillance. Voici comment créer une intégration AWS :
curl -X POST "<https://api.datadoghq.com/api/v1/integration/aws>" \\\\
-H "Content-Type: application/json" \\\\
-H "DD-API-KEY: your_api_key_here" \\\\
-H "DD-APPLICATION-KEY: your_app_key_here" \\\\
-d '{
"account_id": "your_aws_account_id",
"role_name": "DatadogAWSIntegrationRole",
"access_key_id": "your_access_key",
"secret_access_key": "your_secret_key",
"filter_tags": ["env:production", "service:critical"],
"host_tags": ["account:main", "region:us-east-1"],
"account_specific_namespace_rules": {
"auto_scaling": true,
"opsworks": false,
"elasticache": true
},
"excluded_regions": ["us-west-2", "ca-central-1"]
}'
Cette configuration d'intégration :
- Se connecte à votre compte AWS à l'aide d'un rôle ou de clés d'accès
- Configure le filtrage pour se concentrer sur des ressources spécifiques
- Applique automatiquement des balises aux hôtes surveillés
- Active des espaces de noms de service AWS spécifiques
- Exclut les régions que vous ne souhaitez pas surveiller
Envoi de journaux via l'API Datadog
Les journaux fournissent des informations contextuelles critiques pour le dépannage. Voici comment envoyer des journaux directement à Datadog :
import requests
import json
import datetime
api_key = "your_api_key_here"
logs_payload = [{
"ddsource": "python",
"ddtags": "env:production,service:payment-processor,version:1.2.3",
"hostname": "payment-service-01",
"message": "Payment transaction completed successfully for order #12345",
"service": "payment-service",
"status": "info",
"timestamp": datetime.datetime.now().isoformat(),
"attributes": {
"transaction_id": "tx_789012345",
"amount": 99.95,
"currency": "USD",
"customer_id": "cust_123456",
"payment_method": "credit_card"
}
}]
headers = {
"Content-Type": "application/json",
"DD-API-KEY": api_key
}
response = requests.post("<https://http-intake.logs.datadoghq.com/v1/input>",
headers=headers,
data=json.dumps(logs_payload))
print(f"Log submission response: {response.status_code}")
Cet exemple :
- Envoie un journal structuré avec des métadonnées riches
- Inclut des informations sur la source, le service et l'environnement
- Ajoute des attributs personnalisés pour le contexte métier spécifique
- Utilise des balises pour un meilleur filtrage et une meilleure corrélation
Utilisation des limites de débit de l'API Datadog
Datadog applique des limites de débit pour garantir la stabilité de la plateforme et une utilisation équitable entre les clients. Comprendre et respecter ces limites est crucial pour une intégration d'API fiable.
Comprendre la limitation du débit de l'API Datadog
Différents points de terminaison ont des limites de débit différentes en fonction de leur intensité de ressources et de leurs modèles d'utilisation typiques :
- Les opérations de lecture ont généralement des limites plus élevées que les opérations d'écriture
- Certains points de terminaison peuvent avoir des limites par organisation tandis que d'autres ont des limites par clé
- Les clés API partagées entre plusieurs applications peuvent atteindre les limites plus rapidement
Surveillance des en-têtes de limite de débit de l'API Datadog
Lors de l'envoi de requêtes d'API, vérifiez ces en-têtes de réponse pour comprendre l'état actuel de votre limite de débit :
X-RateLimit-Limit
: le nombre maximal de requêtes autorisées dans la fenêtre de limite de débitX-RateLimit-Remaining
: le nombre de requêtes restantes dans la fenêtre de limite de débit actuelleX-RateLimit-Reset
: le temps en secondes jusqu'à ce que la limite de débit soit réinitialiséeX-RateLimit-Period
: la durée de la fenêtre de limite de débit en secondes
Implémentation de la gestion des limites de débit dans les appels d'API Datadog
Voici une implémentation robuste pour la gestion des limites de débit avec un repli exponentiel :
import requests
import time
import random
def make_api_request_with_backoff(url, headers, payload=None, max_retries=5):
retries = 0
while retries < max_retries:
response = requests.post(url, headers=headers, json=payload) if payload else requests.get(url, headers=headers)
if response.status_code == 429: # Too Many Requests
# Extract rate limit information
limit = response.headers.get('X-RateLimit-Limit', 'Unknown')
remaining = response.headers.get('X-RateLimit-Remaining', 'Unknown')
reset = int(response.headers.get('X-RateLimit-Reset', 60))
print(f"Rate limit hit: {remaining}/{limit} requests remaining. Reset in {reset} seconds.")
# Calculate backoff time with jitter
backoff_time = min(2 ** retries + random.uniform(0, 1), reset)
print(f"Backing off for {backoff_time:.2f} seconds")
time.sleep(backoff_time)
retries += 1
else:
return response
raise Exception(f"Failed after {max_retries} retries due to rate limiting")
Utilisation des bibliothèques clientes de l'API Datadog
Pour plus de commodité, Datadog propose des bibliothèques clientes officielles dans plusieurs langues, simplifiant l'authentification et le formatage des requêtes.
Client API Datadog Python
Le client Python officiel fournit une interface claire et idiomatique vers l'API Datadog :
pip install datadog-api-client
Voici un exemple de soumission de métriques à l'aide du client :
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.metrics_api import MetricsApi
from datadog_api_client.v1.model.metrics_payload import MetricsPayload
from datadog_api_client.v1.model.metrics_series import MetricsSeries
from datadog_api_client.v1.model.point import Point
import time
configuration = Configuration()
configuration.api_key["apiKeyAuth"] = "your_api_key_here"
configuration.api_key["appKeyAuth"] = "your_app_key_here"
with ApiClient(configuration) as api_client:
api_instance = MetricsApi(api_client)
body = MetricsPayload(
series=[
MetricsSeries(
metric="application.request.duration",
points=[
Point([int(time.time()), 250.0])
],
type="gauge",
host="web-server-01",
tags=["endpoint:login", "environment:staging"]
)
]
)
response = api_instance.submit_metrics(body=body)
print(f"Metrics submission successful: {response}")
Client API Datadog Ruby
Pour les applications Ruby, la bibliothèque cliente officielle rationalise les interactions avec l'API :
gem install datadog_api_client -v 2.31.1
Exemple d'utilisation pour la création d'un moniteur :
require 'datadog_api_client'
DatadogAPIClient.configure do |config|
config.api_key = 'your_api_key_here'
config.application_key = 'your_app_key_here'
end
api_instance = DatadogAPIClient::V1::MonitorsAPI.new
body = {
'name' => 'API test monitor',
'type' => 'metric alert',
'query' => 'avg(last_5m):avg:system.cpu.user{*} > 75',
'message' => 'CPU usage is high',
'tags' => ['test:api', 'monitor:automated'],
'options' => {
'thresholds' => {
'critical' => 75,
'warning' => 65
}
}
}
begin
result = api_instance.create_monitor(body)
puts "Monitor created successfully with ID: #{result['id']}"
rescue DatadogAPIClient::APIError => e
puts "Error creating monitor: #{e}"
end
Meilleures pratiques pour l'utilisation de l'API Datadog
Le respect de ces directives vous aidera à créer des intégrations plus fiables, sécurisées et efficaces avec l'API Datadog.
Sécurisation de vos clés API Datadog
La sécurité de vos clés API est primordiale :
- Stockez les clés dans des variables d'environnement ou des coffres-forts sécurisés, jamais dans les référentiels de code
- Mettez en œuvre des politiques de rotation des clés et actualisez régulièrement les clés API
- Utilisez différentes clés API pour différentes applications ou objectifs
- Appliquez le principe du moindre privilège en limitant les autorisations des clés d'application
- Utilisez la liste d'autorisation IP dans la mesure du possible pour limiter l'accès aux adresses IP connues
Utilisation efficace des balises dans les appels d'API Datadog
Les balises sont un mécanisme puissant pour organiser et filtrer vos données Datadog :
- Concevez une taxonomie de balises cohérente avant de commencer les implémentations d'API
- Incluez des balises d'environnement, de service et de version dans toutes les métriques et tous les journaux
- Utilisez des balises hiérarchiques (par exemple,
region:us-east
,availability-zone:us-east-1a
) - Rendez les balises cohérentes dans toutes vos télémétries (métriques, journaux, traces)
- Évitez les balises à cardinalité élevée dans les métriques (par exemple, les ID d'utilisateur uniques)
Implémentation de la gestion des erreurs pour les requêtes d'API Datadog
Une gestion robuste des erreurs garantit que vos intégrations restent fiables :
- Vérifiez les codes d'état HTTP et gérez les différents types d'erreurs de manière appropriée
- Analysez les corps de réponse d'erreur pour obtenir des informations détaillées sur les erreurs
- Implémentez une logique de nouvelle tentative avec un repli exponentiel pour les erreurs transitoires
- Enregistrez les appels d'API ayant échoué avec suffisamment de contexte pour le débogage
- Définissez des délais d'attente raisonnables pour éviter les requêtes bloquées
def send_to_datadog(endpoint, payload, headers):
try:
response = requests.post(endpoint,
json=payload,
headers=headers,
timeout=10)
response.raise_for_status()
return response.json()
except requests.exceptions.Timeout:
print("Request timed out - Datadog API may be experiencing delays")
except requests.exceptions.HTTPError as e:
if e.response.status_code == 400:
print(f"Bad request: {e.response.json().get('errors', [])}")
elif e.response.status_code == 403:
print("Authentication error - check your API and application keys")
elif e.response.status_code == 429:
print("Rate limit reached - implement backoff and retry")
else:
print(f"HTTP error: {e.response.status_code}")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
return None
Tests dans des environnements sandbox avec l'API Datadog
Avant de mettre en œuvre en production :
- Créez une organisation de développement/préproduction dédiée dans Datadog
- Utilisez des clés API distinctes pour les tests et la production
- Créez des moniteurs de test avec des notifications adressées uniquement à l'équipe de développement
- Simulez des tests de charge pour comprendre les impacts des limites de débit
- Documentez les modèles d'utilisation de l'API pour référence future
Surveillance de l'utilisation de l'API Datadog
Suivez votre utilisation de l'API pour détecter les problèmes rapidement :
- Créez des tableaux de bord pour visualiser les volumes d'appels d'API et les taux d'erreur
- Configurez des moniteurs pour les erreurs d'API excessives ou l'approche des limites de débit
- Implémentez la journalisation pour toutes les opérations d'API avec les détails appropriés
- Auditez périodiquement l'utilisation des clés API via les journaux d'audit de Datadog
- Suivez l'impact des coûts des métriques personnalisées soumises via l'API
Conclusion : maîtriser l'API Datadog
L'API Datadog offre de puissantes capacités pour étendre et personnaliser votre plateforme de surveillance et d'analyse. En comprenant le processus d'authentification, les concepts de base et les meilleures pratiques décrites dans ce guide, vous serez bien équipé pour intégrer Datadog dans vos applications et automatiser efficacement vos flux de travail.
Que vous envoyiez des métriques personnalisées, créiez des moniteurs ou construisiez des tableaux de bord complexes, l'API offre la flexibilité nécessaire pour adapter Datadog à vos besoins spécifiques. Au fur et à mesure que votre utilisation évolue, envisagez de mettre en œuvre des modèles plus avancés comme :
- Génération de tableaux de bord basée sur des modèles pour les nouveaux services
- Maintenance et réglage automatisés des moniteurs
- Intégrations personnalisées avec des outils et des systèmes internes
- Rapports planifiés et flux de travail d'extraction de données
- Surveillance synthétique pour les processus métier critiques
Les capacités programmatiques fournies par l'API Datadog vous permettent de créer un écosystème de surveillance qui s'adapte à votre infrastructure et s'adapte aux exigences uniques de votre organisation.
N'oubliez pas de consulter régulièrement la documentation officielle de l'API Datadog, car de nouveaux points de terminaison et fonctionnalités sont fréquemment ajoutés pour étendre les capacités de la plateforme. Grâce aux connaissances acquises grâce à ce guide, vous êtes prêt à créer des solutions de surveillance sophistiquées et automatisées qui tirent parti de toute la puissance de la plateforme d'observabilité de Datadog.
```