pup (CLI Datadog)
Pup CLI pour les opérations API Datadog. Supporte l'authentification OAuth2 et par clé API.
Référence rapide
| Tâche | Commande |
|---|---|
| Rechercher les logs d'erreur | pup logs search --query "status:error" --from 1h |
| Lister les monitors | pup monitors list |
| Planifier un downtime de monitor | pup downtime create --file downtime.json |
| Trouver les traces lentes récentes pour un service (dernière 1h) | pup traces search --query "service:<service-name> @duration:>500ms" --from 1h |
| Lister les incidents | pup incidents list --limit 50 |
| Importer un payload d'incident | pup incidents import --file incident.json |
| Requêter des métriques | pup metrics query --query "avg:system.cpu.user{*}" |
| Lister les hosts | pup infrastructure hosts list --count 50 |
| Vérifier les SLOs | pup slos list |
| Équipes on-call | pup on-call teams list |
| Trier les signaux de sécurité critiques ouverts (dernière 1h) | pup security signals list --query "status:open severity:critical" --from 1h --limit 100 |
| Vérifier l'authentification | pup auth status |
| Expiration du token (temps restant) | pup auth status |
| Rafraîchir le token | pup auth refresh |
Prérequis
Installez pup en suivant les instructions de configuration.
Résolution des entrées requises
Pour les commandes qui nécessitent des valeurs de scope spécifiques (<env>, <service-name>, <team-id>, IDs de ressources), utilisez cet ordre :
- Vérifiez le contexte en premier (historique de conversation, sortie de commande antérieure, variables sauvegardées).
- Si manquant, lancez d'abord une commande de découverte (list/search) pour obtenir des valeurs valides.
- Si toujours manquant ou ambigu, demandez à l'utilisateur de confirmer la valeur exacte.
- Ensuite, lancez la commande cible.
- Ne lancez jamais de commandes avec des placeholders non résolus comme
<env>ou<monitor-id>.
Auth
pup auth login # Flux OAuth2 navigateur (recommandé)
pup auth status # Vérifier la validité du token
pup auth refresh # Rafraîchir le token expiré (sans navigateur)
pup auth logout # Effacer les identifiants
⚠️ Les tokens expirent (~1 heure). Si une commande échoue avec 401/403 en cours de conversation :
pup auth refresh # Essayez d'abord le rafraîchissement
pup auth login # Si le rafraîchissement échoue, réauthentification complète
Si Chrome ouvre le mauvais profil/fenêtre, utilisez l'URL OAuth à usage unique affichée par pup auth login
(If the browser doesn't open, visit: ...) et ouvrez ce lien manuellement dans la session de compte correcte.
Sans navigateur/CI (pas de navigateur)
# Utilisez des variables d'environnement ou :
export DD_API_KEY=your-api-key
export DD_APP_KEY=your-app-key
export DD_SITE=datadoghq.com # ou datadoghq.eu, etc.
Référence des commandes
Monitors
pup monitors list --limit 10
pup monitors list --tags "env:<env>"
pup monitors get <monitor-id>
pup monitors search --query "<monitor-name>"
pup monitors create --file monitor.json
pup monitors update <monitor-id> --file monitor.json
pup monitors delete <monitor-id>
# Pas de commandes pup monitors mute/unmute ; utilisez des payloads downtime à la place.
pup downtime create --file downtime.json
Logs
pup logs search --query "status:error" --from 1h
pup logs search --query "service:<service-name>" --from 1h --limit 100
pup logs search --query "@http.status_code:5*" --from 24h
pup logs search --query "env:<env> level:error" --from 1h
pup logs aggregate --query "service:<service-name>" --compute count --from 1h
Métriques
pup metrics query --query "avg:system.cpu.user{*}" --from 1h --to now
pup metrics query --query "sum:trace.express.request.hits{service:<service-name>}" --from 1h --to now
pup metrics list --filter "system.*"
APM / Traces
# Confirmez d'abord le tag env avec l'utilisateur (ne supposez pas production/prod/prd).
pup apm services list --env <env> --from 1h --to now
pup traces search --query "service:<service-name>" --from 1h
pup traces search --query "service:<service-name> @duration:>500ms" --from 1h
pup traces search --query "service:<service-name> status:error" --from 1h
Incidents
pup incidents list --limit 50
pup incidents get <incident-id>
pup incidents import --file incident.json
Dashboards
pup dashboards list
pup dashboards get <dashboard-id>
pup dashboards create --file dashboard.json
pup dashboards update <dashboard-id> --file dashboard.json
pup dashboards delete <dashboard-id>
SLOs
pup slos list
pup slos get <slo-id>
pup slos status <slo-id> --from 30d --to now
pup slos create --file slo.json
Synthetics
pup synthetics tests list
pup synthetics tests get <test-id>
pup synthetics tests search --text "login"
pup synthetics locations list
On-Call
pup on-call teams list
# Choisissez un vrai team id à partir de la sortie de `pup on-call teams list`.
pup on-call teams get <team-id>
pup on-call teams memberships list <team-id>
Hosts / Infrastructure
pup infrastructure hosts list --count 50
pup infrastructure hosts list --filter "env:<env>"
pup infrastructure hosts get <host-name>
Événements
pup events list --from 24h
pup events list --tags "source:deploy"
pup events search --query "deploy" --from 24h --limit 50
pup events get <event-id>
Downtimes
pup downtime list
pup downtime create --file downtime.json
pup downtime cancel <downtime-id>
Utilisateurs / Équipes
pup users list
pup users get <user-id>
Sécurité
pup security signals list --query "*" --from 1h --limit 100
pup security signals list --query "status:open severity:critical" --from 1h --limit 100
# Lookback plus large pour le tri historique
pup security signals list --query "severity:critical" --from 24h --limit 100
Service Catalog
pup service-catalog list
pup service-catalog get <service-name>
Notebooks
pup notebooks list
pup notebooks get <notebook-id>
Workflows
pup workflows get <workflow-id>
pup workflows run <workflow-id> --payload '{"key":"value"}'
pup workflows instances list <workflow-id>
Observability Pipelines
pup obs-pipelines list --limit 50
pup obs-pipelines get <pipeline-id>
pup obs-pipelines create --file pipeline.json
pup obs-pipelines update <pipeline-id> --file pipeline.json
pup obs-pipelines delete <pipeline-id>
pup obs-pipelines validate --file pipeline.json
LLM Observability
pup llm-obs projects list
pup llm-obs projects create --file project.json
pup llm-obs experiments list
pup llm-obs experiments list --filter-project-id <project-id>
pup llm-obs experiments list --filter-dataset-id <dataset-id>
pup llm-obs experiments create --file experiment.json
pup llm-obs experiments update <experiment-id> --file experiment.json
pup llm-obs experiments delete --file delete-request.json
pup llm-obs datasets list --project-id <project-id>
pup llm-obs datasets create --project-id <project-id> --file dataset.json
pup llm-obs spans search --ml-app <ml-app-name> --from 1h --limit 20
Reference Tables
pup reference-tables list --limit 50
pup reference-tables get <table-id>
pup reference-tables create --file table.json
pup reference-tables batch-query --file query.json
Cost Cloud Configs
# Configs AWS CUR
pup cost aws-config list
pup cost aws-config get <account-id>
pup cost aws-config create --file config.json
pup cost aws-config delete <account-id>
# Configs Azure UC
pup cost azure-config list
pup cost azure-config get <account-id>
pup cost azure-config create --file config.json
pup cost azure-config delete <account-id>
# Configs GCP usage cost
pup cost gcp-config list
pup cost gcp-config get <account-id>
pup cost gcp-config create --file config.json
pup cost gcp-config delete <account-id>
Découverte des sous-commandes
pup --help # Lister toutes les commandes
pup <command> --help # Aide spécifique à la commande
Gestion des erreurs
| Erreur | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Token expiré | pup auth refresh |
| 403 Forbidden | Scope manquant | Vérifiez les permissions de la clé d'app |
| 404 Not Found | Mauvais ID/ressource | Vérifiez que la ressource existe |
| Rate limited | Trop de requêtes | Ajoutez des délais entre les appels |
Installation
Voir Setup Pup pour les instructions d'installation.
Vérifier l'installation
which pup
pup --version
Sites
| Site | valeur DD_SITE |
|---|---|
| US1 (défaut) | datadoghq.com |
| US3 | us3.datadoghq.com |
| US5 | us5.datadoghq.com |
| EU1 | datadoghq.eu |
| AP1 | ap1.datadoghq.com |
| AP2 | ap2.datadoghq.com |
| US1-FED | ddog-gov.com |