Extended Dynatrace CLI
Nous fournissons une CLI OpenSource[^1] appelée edtctl pour étandre la CLI officielle dtctl de Dynatrace.
Cette CLI permet entre autres d'exposer un serveur MCP pour dtctl ou créer des agents IA facilement par dessus.
Prerequis
Vous devez installer dtctl d'abord. Vous pouvez trouver le guide d'installation ici
Vous avez aussi besoin d'un token plateforme si vous voulez utiliser edtctl dans un conteneur docker (voir la section configuration pour cette partie).
Installation
Choisissez le mode d'installation qui convient à votre système d'exploitation et suivez les instructions.
Homebrew
Première installation :
brew tap edtctl/edtctl https://gitlab.cwcloud.tech/oss/dynatrace/homebrew-edtctl.git
brew trust --formula edtctl/edtctl/edtctl
brew install edtctl
Mise à jour :
brew update
brew upgrade edtctl
Curl
Linux
Linux x86 (64 bits)
version="1.2.2"
curl -L "https://gitlab.cwcloud.tech/oss/dynatrace/edtctl/-/releases/v${version}/downloads/dynatrace/edtctl_${version}_linux_amd64.tar.gz" -o "edtctl_cli.tar.gz"
mkdir edtctl_cli && tar -xf edtctl_cli.tar.gz -C edtctl_cli
sudo ./edtctl_cli/install.sh
Attention à vérifier si la version est disponible dans les versions car nous ne gardons que les 5 dernières versions.
Linux arm (64 bits)
version="1.2.2"
curl -L "https://gitlab.cwcloud.tech/oss/dynatrace/edtctl/-/releases/v${version}/downloads/dynatrace/edtctl_${version}_linux_arm64.tar.gz" -o "edtctl_cli.tar.gz"
mkdir edtctl_cli && tar -xf edtctl_cli.tar.gz -C edtctl_cli
sudo ./edtctl_cli/install.sh
Attention à vérifier si la version est disponible dans les versions car nous ne gardons que les 5 dernières versions.
MacOS
MacOS x86/arm (64 bits)
version="1.2.2"
curl -L "https://gitlab.cwcloud.tech/oss/dynatrace/edtctl/-/releases/v${version}/downloads/dynatrace/edtctl_${version}_darwin_all.tar.gz" -o "edtctl_cli.tar.gz"
mkdir edtctl_cli && tar -xf edtctl_cli.tar.gz -C edtctl_cli
sudo ./edtctl_cli/install.sh
Attention à vérifier si la version est disponible dans les versions car nous ne gardons que les 5 dernières versions.
Windows
Téléchargement direct
Vous pouvez télécharger directement à partir d'ici. Choisissez la bonne architecture (amd64 ou arm64), téléchargez, décompressez et vous trouverez un fichier exe là.
Windows x86 (64 bits) avec Powershell
$version = "1.2.2"
$user = "YOUR_USER"
cd "C:\Users\${user}"
Invoke-WebRequest -Uri "https://gitlab.cwcloud.tech/oss/dynatrace/edtctl/-/releases/v${version}/downloads/dynatrace/edtctl_${version}_windows_amd64.zip" -OutFile "edtctl_cli.zip"
Expand-Archive -Path "edtctl_cli.zip" -DestinationPath "edtctl_cli" -Force
Set-Location "edtctl_cli"
.\edtctl.exe
Attention à vérifier si la version est disponible dans les versions car nous ne gardons que les 5 dernières versions.
Windows arm (64 bits) avec Powershell
$version = "1.2.2"
$user = "YOUR_USER"
cd "C:\Users\${user}"
Invoke-WebRequest -Uri "https://gitlab.cwcloud.tech/oss/dynatrace/edtctl/-/releases/v${version}/downloads/dynatrace/edtctl_${version}_windows_arm64.zip" -OutFile "edtctl_cli.zip"
Expand-Archive -Path "edtctl_cli.zip" -DestinationPath "edtctl_cli" -Force
Set-Location "edtctl_cli"
.\edtctl.exe
Configuration
edtctl configure
edtctl configure set tenant_url https://YOUR_TENANT.apps.dynatrace.com
edtctl configure set tenant_token YOUR_PLATFORM_TOKEN
Notes :
1/ il est également possible d'utiliser des variables d'environnement EDTCTL_{VAR_NAME} au lieu de ce fichier de configuration.
2/ pour generer un platform token, allez sur l'interface de votre tenant :

Puis :

Puis :

AI MCP & Agents
Créer un serveur MCP
edtctl ai mcp
edtctl ai mcp -l 127.0.0.1 -p 8080 -e /mcp
Note : si vous devez vous authentifier avec dtctl la première fois, vous pouvez utiliser le flag --auth :
edtctl ai mcp --auth
Créer un agent appelant le serveur mcp
edtctl ai agent -p "List the indexes"
edtctl ai agent -p "Last log in json format" -s "http://127.0.0.1:8080/mcp" --provider anthropic
Note : les fournisseurs disponibles sont anthropic, openai, deepseek ou openrouter, pour l'instant vous pouvez configurer vos clés comme ceci :
edtctl configure set openai_api_key "your_key"
edtctl configure set anthropic_api_key "your_key"
edtctl configure set openrouter_api_key "your_key"
edtctl configure set deepseek_api_key "your_key"
edtctl configure set gemini_api_key "your_key"
edtctl configure set mistral_api_key "your_key"
Vous pouvez également utiliser des variables d'environnement à la place :
export EDTCTL_OPENAI_API_KEY="your_key"
export EDTCTL_ANTHROPIC_API_KEY="your_key"
export EDTCTL_OPENROUTER_API_KEY="your_key"
export EDTCTL_DEEPSEEK_API_KEY="your_key"
export EDTCTL_GEMINI_API_KEY="your_key"
export EDTCTL_MISTRAL_API_KEY="your_key"
Note : vous pouvez également utiliser le mode interactif pour créer votre agent avec le drapeau -i ou --interactive :
edtctl ai agent -i
Créer un agent web
Vous pouvez également utiliser un mode serveur web pour interroger votre agent avec des requêtes HTTP POST au lieu de l'interface en ligne de commande :
edtctl ai web-agent -a 0.0.0.0 -p 8081
Le chemin / peut être configuré comme un adaptateur AI externe et le chemin /gitlab comme un webhook gitlab si vous définissez les configurations suivantes :
edtctl configure set gitlab_base_url "https://gitlab.cwcloud.tech"
edtctl configure set gitlab_token "your_gitlab_token"
edtctl configure set gitlab_webhook_secret "your webhook secret"
Ou avec ces variables d'environnement :
export EDTCTL_GITLAB_BASE_URL="https://gitlab.cwcloud.tech"
export EDTCTL_GITLAB_TOKEN="your_gitlab_token"
export EDTCTL_GITLAB_WEBHOOK_SECRET="your webhook secret"
Lister tous les outils MCP disponibles
edtctl ai agent -p "list_mcp_dynamic_tools"
Note : un serveur MCP edtctl doit être en cours d'exécution pour que cette commande fonctionne
Alertes avec alertmanager
edtctl alertmanager -f alerts.yml
edtctl alertmanager -a 127.0.0.1 -p 8083 -f alerts.yml
edtctl alertmanager -a 127.0.0.1 -p 8083 -f alerts.yml --interval 1m
Notes :
1/ un fichier alerts.yml doit être créé et contenir les alertes que vous voulez créer. Voici un exemple :
---
alerts:
- name: high_cpu
summary: High CPU detected
description: CPU max over last 5 minutes is above 90%.
severity: critical
group: my-org
dql: |
timeseries cpu_usage = avg(dt.host.cpu.usage),
by: dt.entity.host,
interval: 1m,
from: -5m
| fieldsAdd cpu_current = arrayLast(cpu_usage)
| fieldsAdd cpu_max_5m = arrayMax(cpu_usage)
| filter cpu_max_5m > 90
| fields dt.entity.host, cpu_current, cpu_max_5m, timeframe
2/ vous devez aussi configurer une URL cible alertmanager comme ceci :
edtctl configure set alertmanager_url http://127.0.0.1:9093/api/v2/alerts
Ou avec cette variable d'environnement :
export EDTCTL_ALERTMANAGER_URL="http://127.0.0.1:9093/api/v2/alerts"
3/ L'intervalle est de 1 minute par défaut, vous pouvez utiliser le flag --interval {time}{unit} pour le modifier. L'unité peut être s pour secondes, m pour minutes, h pour heures.
4/ Un serveur web est lancé par cette commande (par défaut il est accessible sur http://127.0.0.1:8083).
Les alertes en cours sont disponibles sur l'endpoint /alerts.
Vous pouvez aussi afficher un tableau de bord web avec l'endpoint / :
[^1] : Il est disponible ici avec une licence MIT

