dtctl CLI
Официальный CLI платформы Dynatrace со встроенным скиллом: рабочие процессы, дашборды, DQL-запросы и SLO из терминала
- 201 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Команды `apply` и `delete` изменяют и удаляют рабочие процессы, дашборды и настройки окружения Dynatrace.
- Уровень безопасности по умолчанию — `readwrite-all`, и права токена он не сужает.
Установка
- Работает в
Ручная установка
brew install dynatrace-oss/tap/dtctlСтавит клиент на macOS и Linux через Homebrew. Для других случаев в README есть установочный скрипт и PowerShell для Windows.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Команды `apply` и `delete` изменяют и удаляют рабочие процессы, дашборды и настройки окружения Dynatrace.
- Уровень безопасности по умолчанию — `readwrite-all`, и права токена он не сужает.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
dtctl — консольный клиент для облачной платформы Dynatrace от самой компании. Команды строятся как в `kubectl`: `dtctl get workflows`, `dtctl describe`, `dtctl apply -f workflow.yaml`, `dtctl delete`. Так платформой управляют из терминала и скриптов, а конфигурацию хранят в YAML. Клиент работает с рабочими процессами, дашбордами и блокнотами, SLO, настройками, бакетами, детекторами аномалий, расширениями и облачными подключениями AWS, Azure и GCP. Запросы на языке DQL идут командой `dtctl query "fetch logs | limit 10"`, а `dtctl exec copilot nl2dql` переводит запрос на обычном языке в DQL. Для агентов предусмотрены флаг `--agent` со структурированным выводом, каталог команд `dtctl commands` и обзор данных `dtctl inventory`. В репозитории лежит скилл `skills/dtctl`, который объясняет Claude Code, Cursor, Codex и Copilot порядок работы с клиентом. Домен Dynatrace, то есть синтаксис DQL и приемы анализа логов, лежит в отдельных скиллах репозитория Dynatrace/dynatrace-for-ai.
Для кого. SRE и DevOps-инженерам на Dynatrace, которые разбирают инциденты и ведут дашборды, рабочие процессы и SLO как код, в том числе руками агента.
Подходит, если
- После алерта агент вытаскивает из Dynatrace ошибки за последний час и показывает, какие сервисы пострадали.
- Дашборды и рабочие процессы хранятся в Git, и их выкатывают в окружения командой `dtctl apply` с подстановкой переменных.
- Состояние SLO проверяют в CI-пайплайне перед релизом.
- Вопрос сформулирован по-человечески, а DQL писать лень: `dtctl exec copilot nl2dql` дает заготовку запроса.
- Один инженер переключается между тестовым, предпродовым и боевым окружениями и не хочет случайно изменить боевое окружение.
Не подходит, если
- Используется Dynatrace Managed: для него есть отдельный инструмент `dtmgd`, а dtctl рассчитан на SaaS.
- Нужен только просмотр графиков глазами: веб-интерфейс Dynatrace удобнее.
- Токен с широкими правами пришлось бы отдать агенту без ограничений: уровень безопасности сам права токена не сужает.
- Нужны только стабильные команды: часть флагов помечена как экспериментальные.
Пример запроса к агенту
Покажи через dtctl ошибки в логах сервиса `checkout` за последний час и список открытых проблем, ничего не изменяя.Ограничения
dtctl работает только с Dynatrace SaaS и требует аккаунт и окружение, вход идет через OAuth или токен. Уровень безопасности (`readonly`, `readwrite-mine`, `readwrite-all`) действует на стороне клиента и права токена не сужает, поэтому агенту выдают токен с минимальными областями доступа. Уровень по умолчанию — `readwrite-all`. Запросы к логам, событиям и трассам тарифицируются по просканированным байтам, а плитки дашбордов оплачиваются при каждом обновлении. Часть команд и флагов имеет статус `experimental` или `development`.
Как отключить. Выйдите из окружения и уберите клиент: удалите его командой `brew uninstall dtctl` (если ставили через Homebrew) или файлом из `PATH`. Скилл удалите из каталога скиллов агента, а токены отзовите в Dynatrace.
Частые вопросы
Как установить dtctl?
На macOS и Linux выполните `brew install dynatrace-oss/tap/dtctl`. Есть и установка скриптом, и PowerShell-скрипт для Windows. Затем войдите командой `dtctl auth login --context my-env --environment "https://abc12345.apps.dynatrace.com"` и проверьте `dtctl doctor`.
Как поставить скилл dtctl в Claude Code?
Запустите `dtctl skills install --for claude` или `npx skills add Dynatrace/dtctl`. Команда `dtctl skills install` без флага сама определяет агента, а `--global` ставит скилл для всех проектов.
Как не дать агенту ничего изменить?
Задайте контексту уровень безопасности `readonly`, например `dtctl config set-context web --environment "$DT_ENVIRONMENT_URL" --token-ref t --safety-level readonly`. Дополнительно выпустите токен только с правами на чтение.
Чем отличается dtctl от `dtmgd`?
dtctl управляет Dynatrace SaaS, `dtmgd` — Dynatrace Managed. Для настройки и подключения данных есть третий инструмент, `dtwiz`.
Откуда агент знает синтаксис DQL?
Скилл `dtctl` отправляет агента к `references/DQL-reference.md`. Глубокие знания по DQL и логам дает отдельный набор: `npx skills add dynatrace/dynatrace-for-ai`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыОфициальные скиллы Dynatrace для агентов: DQL, трейсы, логи, Kubernetes, облака и безопасность в Claude Code и Cursor.
Официальный набор скиллов Datadog: мониторы, логи, APM, интеграции с облаками, RUM и наблюдаемость LLM из агента
Официальный CLI Coralogix с 19 скиллами: агент читает логи, трассы и метрики продакшена и разбирает инциденты в терминале
Официальный управляемый MCP-сервер Datadog: логи, метрики, трейсы и инциденты прямо в агенте
Deckhouse CLI (d8)
D8 - Deckhouse CLI
Консольный клиент d8 для Deckhouse Kubernetes Platform: статус кластера, модули, бэкапы, зеркалирование и диагностика
Официальный CLI JetBrains для TeamCity: запуск сборок, хвост логов, очередь и шелл на агенте из терминала.
Коротко о README
README открывается примерами команд, затем дает три способа установки, вход через OAuth и таблицу ресурсов с допустимыми операциями. Отдельные разделы описывают скилл для агентов, режим HTTP-сервера `dtctl serve http` и экспорт трассировки через OpenTelemetry.
Бейдж для README
Исходный SKILL.md
--- name: dtctl description: Investigate incidents, debug performance issues, analyze logs, and manage observability resources in Dynatrace using the dtctl CLI. Use this skill whenever the user asks about error rates, latency spikes, service health, crash-looping pods, web vitals, SLO status, open problems, root cause analysis, log patterns, trace analysis, or building dashboards — even if they don't mention Dynatrace by name. Also covers DQL queries, workflow management, notebook and dashboard creation, settings configuration, and any operations against a Dynatrace environment. --- # Dynatrace Control with dtctl Operate `dtctl`, the kubectl-style CLI for Dynatrace. Pattern: `dtctl <verb> <resource> [flags]`. ## Initialization Run once to establish context, permissions, and the command catalog: ```bash dtctl commands # compact overview: verbs, resources, subcommands (TOON default) # dtctl commands --brief # + mutating/access/scopes + flag types # dtctl commands --full # exhaustive catalog: descriptions, flag defaults, global flags dtctl config current-context # active context dtctl config describe-context $(dtctl config current-context) --plain # env URL + safety level dtctl auth status --plain # token type (OAuth vs API/platform) + safety level dtctl inventory # what data exists HERE: fetchable objects, buckets, entity census, capabilities ``` Safety levels: `readonly`, `readwrite-mine`, `readwrite-all`, `dangerously-unrestricted`. `dtctl commands` answers "what can I run?"; `dtctl inventory` answers "what is there to query?" — run it before exploratory DQL. It partitions catalog objects into fetchable vs query-only (never `fetch metrics` or `fetch smartscape.*`), and reports capabilities as present, absent (with the evidence checked — cite it instead of re-probing), or unknown (no verdict; not evidence of absence). Org-specific capability definitions: `--definitions file.yaml`. Don't use `dtctl auth whoami` to test connectivity — it needs an OAuth token with `app-engine:apps:run` and returns a spurious 403 for plain API or read-scoped tokens even when reads work. Confirm with a real `get`/`query`. ## DQL (required reading) Before writing, modifying, or running any DQL (`dtctl query`, `dtctl wait query`, query files), consult `references/DQL-reference.md` and follow it over any assumption or memory. ```bash dtctl query "fetch logs | filter status='ERROR' | limit 100" -o json --plain dtctl query -f query.dql --set host=h-123 --set timerange=2h -o json --plain # Go-template vars dtctl wait query "fetch spans | filter test_id='test-123'" --for=count=1 --timeout 5m dtctl query "timeseries avg(dt.host.cpu.usage)" -o chart --plain ```