---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ytsaurus.tech/docs/en/flow/devops/vanilla/diagnostics/logs.md
  - https://ytsaurus.tech/docs/ru/flow/devops/vanilla/diagnostics/logs.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ytsaurus.tech/docs/ru/llms.txt

<!-- source: ru/_includes/flow/devops/vanilla/diagnostics/logs.md -->
# Логи Vanilla-операции YTsaurus Flow

## Логи {#logs}

Процессы Flow живут в джобах vanilla-операции, поэтому их логи пишутся в песочницу джобы: подробная история процесса — в файле `logs/flow.log` и, с обрезкой по размеру, в `stderr` джобы. По умолчанию раннер настраивает логирование так:

* файл `logs/flow.log` сжимается zstd — и активный сегмент, и ротированные. Активный сегмент ротируется по достижении `256 MiB` на диске, то есть уже в сжатом виде (`max_segment_size`); все сегменты вместе занимают не более `4 GiB` (`max_total_size_to_keep`), самые старые сверх лимита удаляются. История поэтому длинная, но не бесконечная: у долго работающего пайплайна её начало вытесняется. Уровень `info` и выше; шумные инфраструктурные категории (`Bus`, `Concurrency`, `RpcClient` и другие) исключены, чтобы бюджет уходил на историю пайплайна;
* тот же поток уровня `info` (плюс `error` исключённых категорий) пишется и в `stderr` джобы — он доступен со страницы операции в UI YTsaurus. YTsaurus хранит из него не больше `max_stderr_size` (по умолчанию `5 MiB`): начало и конец потока, то есть запуск процесса и последние события перед завершением; середина у долго работающей джобы вытесняется.

Посмотреть `logs/flow.log` живой джобы можно через [job shell](https://ytsaurus.tech/docs/ru/user-guide/problems/jobshell-and-slowjobs.md); `<job_id>` берётся со страницы vanilla-операции (задачи `controller` и `worker`):

```bash
yt --proxy <cluster> run-job-shell <job_id>
```

Файл сжат, поэтому `tail` и `grep` по нему напрямую не работают — читать его нужно через zstd-декомпрессор. Это обычный поток zstd-фреймов, который понимает любой стандартный декомпрессор:

```bash
# внутри джобы: хвост активного сегмента
zstd -dc logs/flow.log | tail -n 100
```

Так виден только активный сегмент, а в нём — не больше `256 MiB` истории. Остальное лежит в ротированных сегментах рядом, в том же каталоге `logs/`: при каждой ротации активный `flow.log` становится `flow.log.1`, прежний `flow.log.1` — `flow.log.2` и так далее, а под именем `flow.log` открывается новый пустой файл. Поэтому `flow.log` — всегда самый свежий сегмент, а чем больше номер, тем сегмент старее. Номера дополняются нулями до общей ширины (`flow.log.01`, `flow.log.02`, … когда сегментов больше девяти), так что порядок имён совпадает с числовым — и обратный порядок имён даёт сегменты от самого старого к активному:

```bash
# внутри джобы: вся сохранённая история, от старых записей к новым
ls -r -1 logs/flow.log* | xargs zstd -dc
```

Утилиты `zstd` в джобе может не оказаться: набор утилит определяется образом задачи. Если её нет, добавьте слой с ней через `layers` или `system_layer_path` задачи — см. [Дополнительные параметры](https://ytsaurus.tech/docs/ru/flow/devops/vanilla/initial-deploy.md#advanced-config).

Уровень и состав логирования переопределяются через `node_config`-патч в блоке `vanilla`, секция `logging` — см. [TLogManagerConfig](https://ytsaurus.tech/docs/ru/flow/generated_docs/all_yson_structs.md#NYT_NLogging_TLogManagerConfig).

## Логи завершившихся джоб {#finished-jobs}

Песочница джобы удаляется вместе с джобой, поэтому от завершившейся джобы остаётся только её `stderr` — он есть у упавших и штатно завершившихся джоб; у джобы, убитой при отмене операции, `stderr` может не сохраниться. Раннер по умолчанию задаёт в спецификации операции `max_stderr_count = 150` (максимум планировщика), поэтому планировщик хранит `stderr` первых 150 завершившихся джоб операции, а не только первых десяти; значение переопределяется полем `max_stderr_count` блока `vanilla`. Возьмите `<operation_id>` со страницы Vanilla-операции, а `<job_id>` — из её задачи controller или worker; затем прочитайте сохранённый лог командой:

```bash
yt --proxy <cluster> get-job-stderr --operation <operation_id> --job-id <job_id>
```
<!-- endsource: ru/_includes/flow/devops/vanilla/diagnostics/logs.md -->

## См. также

- [Первичный деплой](https://ytsaurus.tech/docs/ru/flow/devops/vanilla/initial-deploy.md)
