Административные команды CLI (yt admin)
- Общий интерфейс
- Сменить лидера мастер-селла (switch-leader)
- Получить описание кластера или динамической таблицы (describe)
- Выгрузить логи компонентов кластера (logs)
- Выгрузка и локальная визуализация метрик Prometheus (metrics)
- Удалить нераспознанные опции из конфига мастера (remove-master-unrecognized-options)
- Запуск утилит как standalone-скриптов
Группа команд yt admin объединяет административные и диагностические утилиты для работы с кластером YTsaurus. Команды доступны через стандартный CLI-клиент yt (пакет ytsaurus-client).
Некоторым командам нужны дополнительные зависимости (kubernetes>=31.0.0 для logs k8s, docker>=7.1.0 для metrics replay). Они устанавливаются вместе с extra-набором admin:
Внимание
Большая часть команд yt admin (describe, logs, metrics) является экспериментальной, их интерфейс может измениться в будущих версиях. При запуске такой команды выводится предупреждение. Чтобы его отключить, установите переменную окружения:
export YT_SUPPRESS_ADMIN_EXPERIMENTAL_WARNING=1
Общий интерфейс
yt admin <admin_command> [<sub_command>] [options]
Список доступных подкоманд:
| Команда | Назначение |
|---|---|
switch-leader |
Сменить лидера мастер-селла |
describe |
Получить описание кластера или динамической таблицы (атрибуты, конфиги, состояние) |
logs |
Выгрузить логи компонентов кластера через Kubernetes API |
metrics |
Выгрузка и локальная визуализация метрик Prometheus |
remove-master-unrecognized-options |
Удалить нераспознанные опции из динамического конфига мастера |
Получить справку по любой команде можно через --help:
yt admin --help
yt admin describe --help
yt admin describe cluster --help
Сменить лидера мастер-селла (switch-leader)
Переключает лидера указанного мастер-селла на заданный адрес.
yt admin switch-leader --cell-id <cell-id> --new-leader-address <address>
| Параметр | Описание |
|---|---|
--cell-id |
Идентификатор мастер-селла |
--new-leader-address |
Адрес мастера, который должен стать новым лидером |
Пример
yt admin switch-leader \
--cell-id 65726e65-ad6b7562-10259-79747361 \
--new-leader-address ms-1.masters.ytsaurus-dev.svc.cluster.local:9010
Получить описание кластера или динамической таблицы (describe)
Собирает описание кластера или отдельных динамических таблиц (атрибуты, конфигурации, текущее состояние) и сохраняет его в файл.
Результат сохраняется в файл с временной меткой в имени, например describe/cluster_2026-06-03T12-00-00Z.yson.
Общие опции вывода для обеих подкоманд:
| Параметр | По умолчанию | Описание |
|---|---|---|
--format {yson,json,yaml} |
yson |
Формат выходного файла |
-o, --output <dir> |
describe |
Каталог для сохранения результата |
Описание кластера (cluster)
Собирает общую информацию о компонентах кластера и их конфигурации.
yt admin describe cluster [--nodes] [--bundles] [--dynamic-configs] [--static-configs] [-o dir] [--format ...]
| Параметр | Описание |
|---|---|
--nodes |
Информация о нодах кластера (//sys/cluster_nodes) |
--bundles |
Информация о бандлах динамических таблиц (//sys/tablet_cell_bundles) |
--dynamic-configs |
Динамические конфигурации мастера, планировщика, контроллер-агентов, нод и прокси |
--static-configs |
Статические конфигурации нод (по одному на каждый flavor) |
Если не указан ни один из флагов --nodes, --bundles, --dynamic-configs, --static-configs, собирается вся информация сразу.
Примеры
Собрать информацию о кластере в YSON:
yt admin describe cluster
Собрать только информацию о нодах и бандлах в JSON в каталог debug:
yt admin describe cluster --nodes --bundles --format json -o debug
Описание динамических таблиц (table)
Собирает подробный набор атрибутов для одной или нескольких динамических таблиц, включая "тяжёлые" атрибуты (tablets, статистики по чанкам и сжатию). В качестве аргументов передаются один или несколько путей до динамических таблиц.
yt admin describe table <path> [<path> ...] [-o dir] [--format ...]
Пример
yt admin describe table //home/project/table1 //home/project/table2 --format yaml -o tables-dump
Выгрузить логи компонентов кластера (logs)
Выгружает логи компонентов кластера YTsaurus, развёрнутого в Kubernetes. Доступен единственный backend — k8s, работающий через Kubernetes API.
yt admin logs k8s [options] <cluster_name> <component_name> [<group_name>]
Утилита извлекает имена подов и пути к директориям из спецификации кластера, после чего находит нужные логи в контейнере ytserver. Далее она делает одно из двух:
- скачивает файлы логов целиком;
- выполняет
grepна стороне сервера и сохраняет только те строки, которые совпали с запросом.
Требования
- Доступ к Kubernetes-кластеру (
kubeconfigили in-cluster конфигурация). - RBAC-права на
getдля CRytsaurusиexecдля подов в нужном namespace. - Установленный python-пакет
kubernetes(входит вytsaurus-client[admin]).
Позиционные аргументы
| Аргумент | По умолчанию | Описание |
|---|---|---|
cluster_name |
— | Имя кластера YTsaurus (имя CR, см. kubectl get ytsaurus) |
component_name |
— | Тип компонента (см. таблицу ниже) |
group_name |
default |
Имя группы инстансов компонента |
Опции
| Параметр | По умолчанию | Описание |
|---|---|---|
-n, --namespace <ns> |
default |
Пространство имен Kubernetes, в котором расположен кластер |
-p, --pods <pod> |
— | Конкретный под (можно указывать несколько раз) |
--exec-slot-index <N> |
— | Индекс слота для логов job-proxy (только для exec_nodes) |
--from-ts <ISO8601> |
— | Логи, изменённые после указанного времени, вида 2026-06-15T14:00:00Z |
--to-ts <ISO8601> |
— | Логи, созданные до указанного времени, вида 2026-06-15T14:00:00Z |
-w, --writer <name> |
— | Фильтр по имени writer'а из конфига (можно несколько раз). Ниже показан способ получения списка writer'ов |
--writer-force <regex> |
— | Принудительный regex для фильтрации имён файлов логов |
-o, --output <dir> |
logs |
Каталог для сохранения логов |
--grep <regex> |
— | Серверный grep по содержимому (с авто-распаковкой .zstd/.gz) |
-y, --yes |
— | Пропустить начальный запрос подтверждения выгрузки. Не отключает запрос о перезаписи уже существующих локальных файлов |
Поддерживаемые компоненты
| Ключ компонента | Короткое имя | Поле CR | Поле группы |
|---|---|---|---|
discovery |
ds |
discovery | — |
primary_masters |
ms |
primaryMasters | — |
master_caches |
msc |
masterCaches | — |
http_proxies |
hp |
httpProxies | role |
rpc_proxies |
rp |
rpcProxies | role |
data_nodes |
dnd |
dataNodes | name |
exec_nodes |
end |
execNodes | name |
tablet_nodes |
tnd |
tabletNodes | name |
queue_agents |
qa |
queueAgents | — |
tcp_proxies |
tp |
tcpProxies | role |
kafka_proxies |
kp |
kafkaProxies | role |
schedulers |
sch |
schedulers | — |
controller_agents |
ca |
controllerAgents | — |
query_trackers |
qt |
queryTrackers | — |
yql_agents |
yqla |
yqlAgents | — |
cypress_proxies |
cyp |
cypressProxies | — |
bundle_controllers |
bc |
bundleController | — |
Имена подов строятся как <короткое_имя>-<группа>-<индекс> (часть -<группа>- опускается для группы default). Примеры: ms-0, rp-internal-0.
Примеры
Логи мастеров за интервал времени с двумя writer'ами:
yt admin logs k8s ytbench primary_masters \
-w access -w debug \
--from-ts 2026-02-07T14:38:01Z --to-ts 2026-02-07T14:48:01Z \
-o case-1
Только конкретные поды:
yt admin logs k8s ytbench primary_masters -w debug \
--from-ts 2026-02-07T14:38:01Z --to-ts 2026-02-07T14:48:01Z \
-p ms-3 -p ms-4 -o case-1
Логи слота job-proxy на exec-ноде:
yt admin logs k8s ytbench exec_nodes -w debug \
--from-ts 2026-02-07T14:38:01Z --to-ts 2026-02-07T14:48:01Z \
--exec-slot-index 17 -p end-6 -o case-2
Серверный grep по содержимому:
yt admin logs k8s ytbench primary_masters -w debug --grep "Transaction aborted" -o case-3
Получить список доступных writer'ов компонента можно из его конфигурации в CR. Например, для primary_masters:
kubectl -n ytsaurus-dev get ytsaurus -o json | jq -r '
.items[0].spec.primaryMasters |
(.loggers[]? | select(.writerType == "file") | .name),
(.structuredLoggers[]? | .name)
'
Структура вывода
<output_dir>/
<pod_name>/
<log_file>
Для слотов exec-нод:
<output_dir>/
<pod_name>/
slot/
<slot_id>/
<log_file>
Примечание
Утилита использует идентификацию файлов по inode, чтобы корректно выгружать логи даже при их ротации между этапом листинга и выгрузкой. При использовании --grep сжатые файлы (.zstd, .gz) автоматически распаковываются, расширение архива убирается из имени выходного файла.
Выгрузка и локальная визуализация метрик Prometheus (metrics)
Инструменты для работы с метриками: проверка спецификации выгрузки, выгрузка метрик из Prometheus в архив и воспроизведение архива локально через Prometheus + Grafana, которые разворачиваются локально в Docker.
yt admin metrics <validate|dump|replay> [options]
Формат spec.yaml
Спецификация описывает, какие метрики выгружать. Структура файла:
defaults.step— шаг дискретизации по умолчанию (можно переопределить опцией--step).targets— список таргетов, каждый со своимtype:type: metric— задаёт PromQL-запрос в полеquery; из запроса извлекаются селекторы.type: dashboard— путь до JSON-файла дашборда Grafana в полеpath(относительноspec.yaml); из всех панелей дашборда извлекаютсяexpr. Значения переменных дашборда берутся из егоtemplatingи могут быть переопределены словарёмparams.
Пример spec.yaml:
defaults:
step: 30s
targets:
- type: metric
query: yt_resource_tracker_total_cpu{service="master"}
- type: dashboard
path: master-accounts.json
params:
cluster: clusrer-name
account: sys
left_medium: default
right_medium: ssd_blobs
В params указываются значения переменных дашборда. Если переменная не задана, берётся её значение по умолчанию из дашборда. Сам файл дашборда (поле path) можно получить из образа monitoring или собрать самостоятельно.
Селекторы из нескольких таргетов объединяются и дедуплицируются; посмотреть итоговый список можно командой metrics validate.
Дашборд для таргета type: dashboard
В поле path таргета type: dashboard указывается JSON-файл дашборда Grafana. Готовые собранные дашборды YTsaurus хранятся в репозитории — yt/admin/dashboards/yt_dashboards/tests_os/canondata. Оттуда нужный файл можно скачать напрямую и указать путь до него в path, например для дашборда master-accounts:
curl -O https://raw.githubusercontent.com/ytsaurus/ytsaurus/refs/heads/main/yt/admin/dashboards/yt_dashboards/tests_os/canondata/test_dashboards.test_master_accounts/master-accounts.json
Проверка спецификации метрик (validate)
Проверяет спецификацию метрик (spec.yaml) и печатает список уникальных селекторов.
yt admin metrics validate --spec spec.yaml [--target '<json>' ...]
| Параметр | Описание |
|---|---|
--spec <path> |
Путь до spec.yaml (обязательный) |
--target <json> |
Дополнительный inline-таргет в JSON, например '{"type":"metric","query":"yt_x"}' |
Выгрузка метрик в архив (dump)
Выгружает метрики из Prometheus за заданный интервал в zip-архив.
yt admin metrics dump --spec spec.yaml \
--from-ts <ISO8601> --to-ts <ISO8601> \
--prometheus-url <url> [--step <step>] [--output metrics.zip] [--max-series N] [--force]
| Параметр | По умолчанию | Описание |
|---|---|---|
--spec <path> |
— | Путь до spec.yaml (обязательный) |
--from-ts <ISO8601> |
— | Начало интервала (обязательный) |
--to-ts <ISO8601> |
— | Конец интервала (обязательный) |
--prometheus-url <url> |
— | Базовый URL Prometheus (обязательный) |
--step <step> |
из spec | Шаг дискретизации |
--target <json> |
— | Дополнительный inline-таргет |
--output <path> |
metrics.zip |
Путь до выходного архива |
--max-series <N> |
100000 |
Если суммарное число временных рядов для выгрузки превышает это значение, запрашивается подтверждение |
--force |
— | Пропустить подтверждение при превышении --max-series |
Примечание
Если заданы переменные окружения PROMETHEUS_USER и PROMETHEUS_PASSWORD, для запросов к Prometheus используется Basic Auth с этими значениями. Иначе запросы выполняются без аутентификации.
Локальное воспроизведение метрик (replay)
Импортирует метрики из ранее выгруженного архива во временную директорию и поднимает поверх неё локальные контейнеры Prometheus и Grafana для их просмотра.
yt admin metrics replay <archive.zip> [--prometheus-port N] [--grafana-port N]
| Параметр | По умолчанию | Описание |
|---|---|---|
archive |
— | Путь до архива метрик (.zip) |
--prometheus-port <N> |
свободный порт | Порт для Prometheus |
--grafana-port <N> |
свободный порт | Порт для Grafana |
Требования
- Доступ к docker-демону (контейнеры Prometheus и Grafana запускаются через него).
- Установленный python-пакет
docker(входит вytsaurus-client[admin]).
Пример сценария
# 1. Проверить спецификацию
yt admin metrics validate --spec spec.yaml
# 2. Выгрузить метрики за интервал (по умолчанию в metrics.zip)
yt admin metrics dump --spec spec.yaml \
--from-ts 2026-06-03T10:00:00Z --to-ts 2026-06-03T11:00:00Z \
--prometheus-url https://prometheus.example.com
# 3. Воспроизвести локально
yt admin metrics replay metrics.zip
Удалить нераспознанные опции из конфига мастера (remove-master-unrecognized-options)
Удаляет нераспознанные опции из динамического конфига мастера (//sys/@config).
Команда читает //sys/@master_alerts, находит алерт Found unrecognized options in dynamic cluster config и удаляет из //sys/@config все перечисленные в нём опции. После удаления вложенных опций пустые промежуточные узлы ({}) также удаляются. Если такого алерта нет, команда ничего не делает.
Чаще всего это требуется после обновления кластера: в новой версии YTsaurus часть полей конфига может выйти из употребления, и тогда они остаются в //sys/@config как нераспознанные.
yt admin remove-master-unrecognized-options [--dry] [--do-not-print-config]
| Параметр | По умолчанию | Описание |
|---|---|---|
--dry |
False |
Только вывести нераспознанные опции, не удаляя их |
--do-not-print-config |
False |
Не печатать //sys/@config перед удалением (по умолчанию конфиг печатается) |
Пример
# Посмотреть, какие опции будут удалены, ничего не меняя
yt admin remove-master-unrecognized-options --dry
# Удалить нераспознанные опции
yt admin remove-master-unrecognized-options
Запуск утилит как standalone-скриптов
Часть утилит дополнительно собрана как самостоятельные программы в каталоге yt/yt/scripts/. Они переиспользуют те же модули yt.admin.*, что и yt admin, и могут быть вызваны без установки полного CLI — например, в окружениях, где удобнее запускать модуль напрямую.
| Скрипт | Эквивалент yt admin |
Что делает |
|---|---|---|
fetch_cluster_info |
describe cluster / describe table |
Описание кластера и динамических таблиц |
fetch_cluster_logs |
logs k8s |
Выгрузка логов из Kubernetes |
fetch_cluster_metrics |
metrics validate/dump/replay |
Работа с метриками |
remove_master_unrecognized_options |
remove-master-unrecognized-options |
Удаление нераспознанных опций из динамического конфига мастера |