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

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 :

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

white

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