dd-pup

Par datadog-labs · agent-skills

CLI Datadog (Rust). Auth OAuth2 avec rafraîchissement de token.

npx skills add https://github.com/datadog-labs/agent-skills --skill dd-pup

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 :

  1. Vérifiez le contexte en premier (historique de conversation, sortie de commande antérieure, variables sauvegardées).
  2. Si manquant, lancez d'abord une commande de découverte (list/search) pour obtenir des valeurs valides.
  3. Si toujours manquant ou ambigu, demandez à l'utilisateur de confirmer la valeur exacte.
  4. Ensuite, lancez la commande cible.
  5. 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

Skills similaires