---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/devops/observability/minidumps.md
  - https://ydb.tech/docs/ru/devops/observability/minidumps.md
  - href: ru/devops/observability/minidumps.md
    type: text/markdown
    title: Markdown version
  - href: ../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/devops/observability/minidumps.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Минидампы (встроенный Google Breakpad)

Узлы `ydbd` в YDB могут собирать **минидампы** при аварийном завершении процесса с помощью встроенного [Google Breakpad](https://chromium.googlesource.com/breakpad/breakpad/). Минидамп — это компактный снимок состояния процесса (стек, регистры, список загруженных модулей) в момент падения по необработанному сигналу (`SIGSEGV`, `SIGABRT`, `SIGFPE` и другим).

В отличие от системного [core dump](https://ru.wikipedia.org/wiki/Дамп_памяти), минидамп:

- занимает существенно меньше места;
- собирается собственным обработчиком сигналов и не зависит от настроек `ulimit` и `core_pattern` на хосте;
- может автоматически передаваться внешнему скрипту для пост-обработки (загрузки, символизации, оповещения).

{% note info %}

Сбор минидампов работает только на Linux. На других платформах (например, macOS) `ydbd` запускается, но встроенный Breakpad в сборку не входит и минидампы не собираются.

{% endnote %}

## Включение сбора минидампов {#enable}

По умолчанию сбор минидампов выключен. Чтобы включить его, нужно указать директорию, в которую будут записываться дампы. Это можно сделать двумя способами: переменными окружения и опциями командной строки `ydbd server`. Опции командной строки имеют приоритет над переменными окружения.

Если директория не задана ни одним из способов, встроенный Breakpad не активируется и не устанавливает обработчики сигналов.

{% note info %}

Указанная директория должна существовать до запуска процесса; YDB не создаёт её автоматически. Если директория отсутствует в момент падения, минидамп не будет записан.

{% endnote %}

### Переменные окружения {#env}

| Переменная | Назначение |
|------------|------------|
| `BREAKPAD_MINIDUMPS_PATH` | директория для записи минидампов; задание этой переменной включает сбор минидампов при старте процесса |
| `BREAKPAD_MINIDUMPS_SCRIPT` | путь к скрипту [пост-обработки](#script) минидампа |

### Опции командной строки {#cli}

Опции добавляются к команде `ydbd server`:

| Опция | Назначение |
|-------|------------|
| `--breakpad-minidumps-path PATH` | директория для записи минидампов |
| `--breakpad-minidumps-script SCRIPT` | путь к скрипту [пост-обработки](#script) минидампа |

Пример запуска:

```bash
ydbd server \
    --breakpad-minidumps-path /var/log/ydb/minidumps \
    --breakpad-minidumps-script /usr/local/bin/process-minidump.sh \
    ...
```

## Скрипт пост-обработки {#script}

Если задан скрипт пост-обработки, он запускается сразу после записи минидампа. Скрипт вызывается со следующими аргументами:

| Аргумент | Значение |
|----------|----------|
| `$1` | `true` или `false` — был ли минидамп успешно записан |
| `$2` | путь к файлу минидампа (пустая строка, если запись не удалась) |

Скрипту не передаётся окружение процесса `ydbd`, поэтому все необходимые ему параметры должны быть зашиты в самом скрипте или вычисляться из аргументов.

{% note warning %}

Скрипт запускается из обработчика сигнала упавшего процесса через `fork`/`exec`. Обработчик сигнала блокируется до завершения скрипта, поэтому скрипт должен завершаться быстро. Тяжёлую обработку (загрузку дампа, символизацию, оповещения) следует выносить в фоновые процессы, которые скрипт запускает перед выходом.

{% endnote %}

Пример скрипта, который только перемещает дамп в архивную директорию:

```bash
#!/bin/sh
# $1 — succeeded (true|false), $2 — путь к минидампу
if [ "$1" = "true" ]; then
    mv "$2" /var/log/ydb/minidumps/archive/
fi
```

## Анализ минидампов {#analyze}

Минидамп не содержит символов: для получения читаемого стека нужны символы того же сборочного артефакта `ydbd`. Для разбора используются штатные инструменты Google Breakpad (`minidump_stackwalk` и `.sym`-файлы), полученные из символов соответствующей сборки.

## См. также {#see-also}

- [Логирование в YDB](https://ydb.tech/docs/ru/devops/observability/logging.md)
- [Настройка мониторинга кластера YDB](https://ydb.tech/docs/ru/devops/observability/monitoring.md)
- [Google Breakpad](https://chromium.googlesource.com/breakpad/breakpad/)
