Aller au contenu principal

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.

edtctl_1
attention

Cette CLI ne remplace pas dtctl, elle l'étend. Cela signifie qu'elle utilise dtctl comme dépendance afin d'ajouter davantage de fonctionnalités. C'est pourquoi le e de edtctl signifie extended (étendu).

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.3.17"
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.3.17"
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.3.17"
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.3.17"
$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.3.17"
$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 :

dynatrace_pt_token_1

Puis :

dynatrace_pt_token_2

Puis :

dynatrace_pt_token_3

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 IA externe (utilisable directement depuis Aristochat), 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: dynatrace_high_cpu
summary: High CPU detected
description: CPU max over last 5 minutes is above 90%.
severity: critical
jq: .cpu_max_5m
labels:
- name: group
value: my-team
- name: host
jq: .dt.entity.host
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
  • jq extrait la valeur du champ que vous souhaitez afficher dans le message d'alerte à partir des enregistrements Dynatrace.
  • labels sont ajoutés à l'alerte et peuvent être utilisés pour les filtrer (ils peuvent être extraits des enregistrements Dynatrace avec labels.jq ou fixés avec labels.value).

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 / :

white

Déploiement sur Kubernetes

Vous pouvez déployer edtctl en tant qu'alertmanager, serveur MCP et web-agent, aux côtés d'Aristochat, en utilisant soit ce helmchart, soit la commande suivante :

edtctl bootstrap

Drapeaux disponibles :

  • -r ou --release : nom de la release pour le déploiement (par défaut : edtctl)
  • -n ou --namespace : namespace à utiliser pour le déploiement (par défaut : edtctl)
  • -k ou --keep-dir : conserver le répertoire helm local
  • -d ou --recreate-ns : recréer le namespace
  • -o ou --openshift : utiliser la CLI openshift au lieu de kubectl
  • -p ou --value : valeurs pour surcharger les configurations (peut être répété)
  • --directory : changer l'emplacement du dossier (utile si vous voulez utiliser vos propres templates helm)
  • --kind-cluster : spécifier le cluster kind à utiliser (il sera recréé même s'il existe déjà)

Exemple :

edtctl bootstrap -r my-release -n production --value key=value --value values-override.yaml

Note : cela générera également des secrets et une configmap pour les fournisseurs IA en utilisant votre propre configuration locale edtctl.

Ouvrir des tunnels

edtctl bootstrap pfw

[^1] : Il est disponible ici avec une licence MIT