English version · Español · Português · 日本語 · 한국어 · 中文. Если версии расходятся, ориентируйтесь на английскую.
На сервере с Langfuse или SigNoz кончается место, хотя трейсов у вас немного.
В большинстве известных случаев место съедает сам ClickHouse®: его собственные
таблицы-логи, например system.trace_log и system.text_log, размер которых
по умолчанию ничем не ограничен. У ClickStack та же проблема.
Ниже — как убедиться в этом одним запросом только на чтение, освободить место прямо сейчас и не дать логам разрастись снова, обойдя известные ловушки. Дополнительные инструменты не нужны.
Проверено на стандартных образах clickhouse/clickhouse-server 24.8, 25.12 и
26.9 (команды для SigNoz — на 25.5 и 25.12), с сервисом ClickHouse и конфигом
из compose-файлов Langfuse и SigNoz.
- Проверьте. Выполните один запрос на чтение к
system.parts. Если таблицыsystem.*_logбольше ваших данных, проблема в собственных логах ClickHouse. - Освободите место сейчас. Сделайте
TRUNCATEбольших логов. Для таблицы больше 50 ГБ добавьтеSETTINGS max_table_size_to_drop = 0. - Не дайте логам вырасти снова. Добавьте в
config.dфайл с TTL для каждого лога (дляopentelemetry_span_logTTL пишется внутри<engine>) и перезапустите ClickHouse. - Приберитесь. Удалите копии
*_log_0,*_log_1, которые остаются после перезапуска. - Диск всё ещё полный? Проверьте логи контейнеров Docker, удалённые строки и застрявшие куски. Если у вас Langfuse, сначала обновите его и только потом переводите ClickHouse на 26.8+.
Сохраните этот запрос в файл size.sql. Он показывает самые большие таблицы
по размеру на диске:
SELECT database, table,
formatReadableSize(sum(bytes_on_disk)) AS size,
sum(rows) AS rows,
count() AS parts
FROM system.parts
WHERE active
GROUP BY database, table
ORDER BY sum(bytes_on_disk) DESC
LIMIT 15;Langfuse (docker compose). Выполните команду в папке с docker-compose.yml
от Langfuse. Этот compose-файл уже задаёт CLICKHOUSE_USER и CLICKHOUSE_PASSWORD
внутри контейнера:
docker compose exec -T clickhouse sh -c \
'clickhouse-client --user "$CLICKHOUSE_USER" --password "$CLICKHOUSE_PASSWORD" --readonly=1 --format PrettyCompact' < size.sqlSigNoz (Docker). Контейнер называется signoz-clickhouse, если вы
установили SigNoz через compose-файлы из его репозитория (до v0.129.0), и
signoz-telemetrystore-clickhouse-0-0, если через Foundry — установщик SigNoz
для Docker начиная с v0.130.0 (проверьте через docker ps). В обоих случаях у
пользователя default нет пароля. В командах ниже указан signoz-clickhouse;
с Foundry подставьте вместо него второе имя:
docker exec -i signoz-clickhouse clickhouse-client --readonly=1 --format PrettyCompact < size.sql--readonly=1 переводит сессию в режим только для чтения: ClickHouse отклонит
любые изменения.
Как читать результат. Сравните строки базы system со своими данными
(default у Langfuse, signoz_* у SigNoz). Если наверху system.trace_log
или system.text_log, переходите к разделу 2.
Откройте клиент с правом записи:
# Langfuse
docker compose exec clickhouse sh -c 'clickhouse-client --user "$CLICKHOUSE_USER" --password "$CLICKHOUSE_PASSWORD"'
# SigNoz (Foundry: signoz-telemetrystore-clickhouse-0-0)
docker exec -it signoz-clickhouse clickhouse-clientОчистите большие логи:
TRUNCATE TABLE system.trace_log;
TRUNCATE TABLE system.text_log;
TRUNCATE TABLE system.metric_log;
TRUNCATE TABLE system.query_log;Так удаляется только собственная диагностика ClickHouse, а не ваши трейсы. Перезапуск не нужен.
Langfuse читает system.query_log, чтобы следить за некоторыми своими
запросами (#13123).
Поэтому очищать его можно, а отключать не надо.
ClickHouse не удаляет и не очищает таблицу больше max_table_size_to_drop
(по умолчанию 50 000 000 000 байт, около 46,6 ГиБ). Лимит действует и на
TRUNCATE: для таблицы больше лимита запрос падает с
Code: 359 ... (TABLE_SIZE_EXCEEDS_MAX_DROP_SIZE_LIMIT).
Большие логи в него действительно упираются: text_log в
обсуждении Langfuse #15024
занимал 59,20 ГиБ. Обойти лимит можно двумя способами.
Способ А. Снять лимит для одного запроса:
-- ClickHouse 23.12+: снять лимит только для этого запроса
TRUNCATE TABLE system.text_log SETTINGS max_table_size_to_drop = 0;Способ Б. Создать одноразовый файл-флаг, а потом выполнить обычный
TRUNCATE:
docker compose exec clickhouse sh -c 'touch /var/lib/clickhouse/flags/force_drop_table && chmod 666 /var/lib/clickhouse/flags/force_drop_table'(Для SigNoz: docker exec signoz-clickhouse sh -c '...' с той же командой.)
ClickHouse удаляет флаг после первого DROP или TRUNCATE, которому он
понадобился, поэтому перед следующей большой таблицей создайте его снова.
Место вернулось, но логи сразу начинают расти снова. Как это остановить — в разделе 4, а почему так происходит — в разделе 3.
ClickHouse пишет собственную диагностику в таблицы базы system:
query_log, trace_log, text_log, metric_log и другие. В
документации
так прямо и сказано: «By default, table growth is unlimited» — по умолчанию
рост таблиц не ограничен.
Свежие стандартные конфиги
задают TTL только нескольким небольшим логам (с 25.2 processors_profile_log
хранится 30 дней), а большим — нет. Быстро растут они из-за двух настроек по
умолчанию:
- профилировщик запросов включён и пишет в
trace_logсэмплы стеков выполняющихся запросов; text_logхранит лог сервера на уровнеtrace.
Публичные примеры:
- Langfuse #13123:
system.trace_logзанимал 66,86 ГиБ, а перечисленные там таблицы Langfuse (traces,observations,scores) — около 51 МиБ вместе. Мейнтейнеры решили не менять настройки ClickHouse по умолчанию и вместо этого добавили страницу в FAQ. - SigNoz #12050: больше 80 ГБ системных логов (включая копию
trace_log_0) при менее чем 500 МБ телеметрии. Очистка таблицsystem.*освободила около 80 ГБ. Новый установщик SigNoz Foundry задаёт TTL, а в старых установках через docker compose TTL не задан. - Helm-чарт ClickStack, PR #275: том на 10 Gi заполнился на 100% за 10 дней: 5,2 ГБ серверных логов уровня trace и 3,7 ГБ в
system.text_logпротив ~70 МБ телеметрии. PR приняли в сентябре 2026 года, он добавляет TTL на 7 дней.
С TTL ClickHouse сам удаляет старые строки логов. Задавайте его после
TRUNCATE из раздела 2, и вот почему.
Когда вы добавляете TTL и перезапускаете сервер, ClickHouse не уменьшает
старую таблицу. Он переименовывает её в trace_log_0 со всеми строками и
создаёт новую, уже с TTL. Если сначала сделать TRUNCATE, эти копии будут
крошечными, и шаг 4 их удалит.
SQL ниже выполняйте в том же клиенте с правом записи, что и в разделе 2.
SELECT name,
formatReadableSize(total_bytes) AS size,
extract(engine_full, 'TTL [^S]*') AS ttl
FROM system.tables
WHERE database = 'system' AND engine LIKE '%MergeTree' AND match(name, '_log(_[0-9]+)?$')
ORDER BY total_bytes DESC;Пустой ttl значит, что лог хранится вечно. Имена вроде trace_log_0 — это
старые копии, их удалит шаг 4.
Сохраните это как clickhouse-ttl.xml рядом с docker-compose.yml:
<clickhouse>
<!-- Хранить собственные логи ClickHouse 7 дней. Перечислите только логи, которые есть на вашем сервере. -->
<query_log><ttl>event_date + INTERVAL 7 DAY DELETE</ttl></query_log>
<trace_log><ttl>event_date + INTERVAL 7 DAY DELETE</ttl></trace_log>
<text_log><ttl>event_date + INTERVAL 7 DAY DELETE</ttl></text_log>
<metric_log><ttl>event_date + INTERVAL 7 DAY DELETE</ttl></metric_log>
<asynchronous_metric_log><ttl>event_date + INTERVAL 7 DAY DELETE</ttl></asynchronous_metric_log>
<part_log><ttl>event_date + INTERVAL 7 DAY DELETE</ttl></part_log>
<!-- В стандартном конфиге этот лог задан через <engine>, поэтому отдельный <ttl>
не даст серверу запуститься (ClickHouse#88366). TTL пишется внутри. -->
<opentelemetry_span_log>
<engine>ENGINE = MergeTree PARTITION BY toYYYYMM(finish_date) ORDER BY (finish_date, finish_time_us) TTL finish_date + INTERVAL 7 DAY DELETE</engine>
</opentelemetry_span_log>
</clickhouse>Смонтируйте файл в сервис clickhouse (уже существующие строки в volumes
оставьте):
clickhouse:
volumes:
- ./clickhouse-ttl.xml:/etc/clickhouse-server/config.d/clickhouse-ttl.xml:roНа этом шаге три ловушки:
- У
opentelemetry_span_logTTL задаётся внутри<engine>. Стандартный конфиг задаёт этот лог через<engine>, а по документации это конфликтует с<ttl>. Тогда сервер завершается с ошибкойIf 'engine' is specified for system table, TTL parameters should be specified directly inside 'engine'(ClickHouse #88366). СкопируйтеPARTITION BYиORDER BYизSELECT engine_full FROM system.tables WHERE database = 'system' AND name = 'opentelemetry_span_log'(в конфиге SigNoz сортировка ещё и поtrace_id). Или отключите этот лог:<opentelemetry_span_log remove="1"/>(документация Langfuse по масштабированию).removeне удаляет существующую таблицу, так что удалите её сами. - Перечисляйте только те логи, которые есть на вашем сервере. Именно секция в конфиге включает лог (в стандартном
config.xmlсекцияsession_logзакомментирована, поэтому он выключен). Собственныйconfig.xmlSigNoz не включаетtext_log, так что для SigNoz уберите строкуtext_logизclickhouse-ttl.xml. И добавьте тудаprocessors_profile_log: вconfig.xmlSigNoz у него нет TTL. - Настройки профилей — в users.d, а не в config.d. Если вы заодно отключаете профилировщик запросов (
query_profiler_real_time_period_nsиquery_profiler_cpu_time_period_ns= 0, как в документации Langfuse по масштабированию), положите этот блок<profiles>вusers.d/. Вconfig.d/он молча игнорируется (trigger.dev #4343).
TTL из config.d начинает действовать только после перезапуска сервера
(Altinity KB).
Перечитать конфиг недостаточно. С compose:
docker compose up -d clickhouse # пересоздаёт контейнер с новым файлом
docker compose ps clickhouseЕсли ClickHouse постоянно перезапускается, причина — в его логе ошибок внутри
контейнера. docker compose logs может её не показать:
docker cp "$(docker compose ps -aq clickhouse)":/var/log/clickhouse-server/clickhouse-server.err.log .
tail -n 20 clickhouse-server.err.logПосле перезапуска у каждого изменённого лога появляется копия вроде
trace_log_0 (при следующих изменениях — _1, _2). В копии остаются все
старые строки, и TTL у неё нет (заметка об обновлении в ClickStack PR #275,
Sentry snuba #7311).
Этот запрос сам составит команды DROP. Прочитайте их, потом вставьте в
клиент:
SELECT 'DROP TABLE system.' || name || ' SYNC SETTINGS max_table_size_to_drop = 0;'
FROM system.tables
WHERE database = 'system' AND match(name, '_log_[0-9]+$');ClickHouse в эти таблицы больше не пишет. DROP нельзя отменить.
SYNC освобождает место сразу. Без него база system (Atomic) держит данные
на диске ещё 8 минут
(database_atomic_delay_before_drop_table_sec = 480 с).
SYNC ставится перед SETTINGS; если поставить его после, запрос падает с
Code 62 (SYNTAX_ERROR).
Снова выполните запрос из шага 1. У каждого большого лога должен быть TTL, а
имён с _N не должно остаться.
Устаревшие строки ClickHouse удаляет при слияниях, по умолчанию не чаще раза в
4 часа (merge_with_ttl_timeout),
так что размер уменьшится в ближайшие часы.
Проверку может сделать и скрипт:
diskvet выполняет проверку из шага 1
в режиме только для чтения и печатает команды TRUNCATE, файл с TTL и список
DROP для ваших таблиц, с файлом-флагом для таблиц больше лимита на удаление
(см. раздел 7).
Сравните df -h с общим размером всех кусков
(SELECT formatReadableSize(sum(bytes_on_disk)) FROM system.parts). Если на
диске занято намного больше, значит, место занимает что-то помимо таблиц
ClickHouse.
У json-file, драйвера логов Docker по умолчанию, нет ограничения размера
(max-size по умолчанию -1, см. документацию Docker).
В Langfuse #16339 лог
контейнера ClickHouse дорос до 89,1 ГиБ и заполнил корневой диск на 244 ГиБ.
Найдите самые большие:
sudo sh -c 'du -h /var/lib/docker/containers/*/*-json.log | sort -h | tail -5'
docker ps -a --no-trunc --format '{{.ID}} {{.Names}}' # имя папки — это ID контейнераЧтобы это исправить, добавьте блок logging: в каждый сервис в
docker-compose.yml. В #16339 мейнтейнеры Langfuse советовали сделать это для
всех контейнеров, а не только для ClickHouse. В compose-файле
SigNoz уже стоит 50m × 3.
logging:
driver: json-file
options:
max-size: "50m"
max-file: "3"Потом выполните docker compose up -d --force-recreate: настройки логов
действуют только для заново созданных контейнеров. При пересоздании старый
файл лога тоже удаляется — в #16339 это освободило 81 ГиБ.
Два замечания:
- Если демон Docker использует другой драйвер логов, настройте ограничение логов в нём, а этот блок не добавляйте:
driver: json-fileпереопределит ваш драйвер. - В README Langfuse (PR #16363) описан способ для всего демона: задать
max-sizeиmax-fileпо умолчанию в настройках демона, затем перезапустить Docker и пересоздать контейнеры. Там же советуют не обрезать и не ротировать эти файлы сторонними инструментами.
ClickHouse пишет и обычные файлы логов в /var/log/clickhouse-server (в
compose-файле Langfuse это отдельный том). По умолчанию уровень — trace,
ротация при 1000M, хранится до 10 старых файлов
(документация logger).
В ClickStack PR #275 используются значения ниже. Сохраните их как ещё один
файл в config.d, подключите так же, как файл с TTL, и перезапустите
ClickHouse (раздел 4, шаг 3):
<clickhouse>
<logger><level>information</level><size>100M</size><count>10</count></logger>
</clickhouse>Если в Langfuse включено ограничение срока хранения данных (data retention),
старые строки удаляются через облегчённый (lightweight) DELETE.
ClickHouse такие строки только помечает, а место возвращается при слиянии
куска.
Фоновые слияния пропускают куски больше
max_bytes_to_merge_at_max_space_in_pool
(150 ГиБ), а куски в старых месячных партициях сливаются редко. В
обсуждении Langfuse #13969
майская партиция на ~802 ГиБ примерно на 85% состояла из удалённых строк.
Найдите партиции с удалёнными строками:
SELECT database, table, partition_id, count() AS parts,
formatReadableSize(sum(bytes_on_disk)) AS size
FROM system.parts
WHERE active AND has_lightweight_delete
GROUP BY database, table, partition_id
ORDER BY sum(bytes_on_disk) DESC;Потом примените маску удаления, по одной партиции за раз (APPLY DELETED MASK):
ALTER TABLE default.observations APPLY DELETED MASK IN PARTITION ID '202605';Осторожно: это тяжёлая мутация. Она переписывает затронутые куски, поэтому
ей нужно свободное место под новые копии, и она нагружает диск. Запускайте её
в часы низкой нагрузки и следите через
SELECT * FROM system.mutations WHERE NOT is_done. В #13969 она освободила
~360 ГиБ на каждой реплике примерно за 17 минут.
Если запрос показывает id вида patch-f18f7271629a324b0d26b6ad0b83a6c2-202605,
значит, DELETE выполнялся с lightweight_delete_mode = 'lightweight_update'.
Тогда маска лежит в этих маленьких patch-кусках, а у больших кусков, к которым
она относится, остаётся has_lightweight_delete = 0, и запрос их не показывает.
С полным id patch- команда проходит без ошибки и ничего не удаляет. Возьмите
обычный id, всё, что идёт после patch-<hash>- (здесь 202605, а при ключе
партиционирования в виде кортежа 202605-1), и выполните команду дважды: первый
запуск только записывает маску в куски, второй удаляет строки. Можно вставить
обе команды сразу:
ALTER TABLE default.observations APPLY DELETED MASK IN PARTITION ID '202605';
ALTER TABLE default.observations APPLY DELETED MASK IN PARTITION ID '202605';После этого patch-куски могут ещё несколько минут оставаться в выводе запроса.
Начиная с v3.179.0 в воркере Langfuse есть очистка по маске удаления, по
умолчанию выключенная: LANGFUSE_CLICKHOUSE_DELETED_MASK_CLEANER_ENABLED=true
(PR #14035). Но она берёт
только партиции patch- и пропускает текущий месяц
(helpers.ts),
а DELETE записывает такие партиции, только если задано
CLICKHOUSE_LIGHTWEIGHT_DELETE_MODE=lightweight_update и у таблицы есть
столбцы _block_number и _block_offset
(требования).
Со значением по умолчанию alter_update
(env.ts),
а также на таблицах v3, где этих столбцов нет, она ничего не находит:
выполните APPLY DELETED MASK сами.
SELECT database, table, count() AS parts,
formatReadableSize(sum(bytes_on_disk)) AS size,
min(remove_time) AS oldest, max(refcount) AS max_refcount
FROM system.parts
WHERE NOT active
GROUP BY database, table
ORDER BY sum(bytes_on_disk) DESC;Неактивные куски остаются после слияний. ClickHouse удаляет их по истечении
old_parts_lifetime
(480 с), когда их больше не использует ни один запрос (refcount = 1).
Если они копятся (в обсуждении Langfuse #15024 их набралось на 112,55 ГиБ), а
oldest — несколько часов назад, поищите долгие запросы в system.processes
и остановите их через KILL QUERY WHERE query_id = '...'.
Отсоединённые (detached) куски лежат на диске, пока вы их не удалите:
SELECT database, table, reason, count() AS parts,
formatReadableSize(sum(bytes_on_disk)) AS size
FROM system.detached_parts
GROUP BY database, table, reason;Сначала посмотрите на reason. Удаляйте кусок командой
ALTER TABLE <db>.<table> DROP DETACHED PART '<name>' SETTINGS allow_drop_detached = 1,
а не удалением папок.
-
Langfuse и ClickHouse 26.8 или новее: сначала обновите Langfuse. В ClickHouse 26.8 значение по умолчанию у настройки
input_format_read_datetime_number_as_raw_valueсменилось с 1 на 0. Старые версии Langfuse отправляют значенияDateTime64числами в миллисекундах, и на 26.8+ они сохраняются как9999-12-31 23:59:59(Langfuse #16858: от 0,59% до 21,43% записей, в зависимости от проекта). Исправление — PR #16892 (бэкпорт в v3 — PR #16957), оно вышло в Langfuse v4.28.0 и v3.225.7. Langfuse делит данные на партиции по месяцам, поэтому такие строки попадают в партицию999912. Проверьте версию и поищите их:SELECT version(); SELECT database, table, partition_id, count() AS parts FROM system.parts WHERE active AND startsWith(partition_id, '9999') GROUP BY database, table, partition_id;
-
После любого обновления снова выполните запрос из шага 1 раздела 4. Когда релиз меняет схему лога, ClickHouse переименовывает текущую таблицу и создаёт новую, так что появляются новые копии
_N. Удалите их, как в шаге 4.
diskvet — открытый (Apache-2.0) скрипт только для чтения: он выполняет большинство проверок выше и печатает отчёт с командами для исправления. Файлы логов Docker он не видит, но показывает, сколько места на диске занято не кусками ClickHouse. Отчёт он пишет по-английски.
На машине с docker-compose.yml от Langfuse (прочитайте checks.sql перед
запуском):
curl -fsSLO https://github.com/Protemir/diskvet/releases/latest/download/diskvet.sh
curl -fsSLO https://github.com/Protemir/diskvet/releases/latest/download/checks.sql
sh diskvet.sh report --docker auto > report.mdДля SigNoz выполните ту же команду: --docker auto находит его ClickHouse по
образу (clickhouse/clickhouse-server) или по сервису clickhouse в папке со
старым docker-compose.yaml от SigNoz. Если на машине есть другие контейнеры
ClickHouse, передайте имя из docker ps:
--docker signoz-telemetrystore-clickhouse-0-0 (Foundry) или
--docker signoz-clickhouse (старые compose-файлы).
ClickHouse в Kubernetes тоже можно проверить — через kubectl exec в его под:
sh diskvet.sh report --k8s auto > report.md--k8s NAMESPACE/POD выбирает конкретный под. Пароль не покидает под, а
diskvet нужны только get и list для подов и pods/exec. Какой под создаёт
каждый Helm-чарт и куда вносить исправления, написано в
рецепте для Kubernetes (по-английски).
Скрипт читает только метаданные из таблиц system.* (system.tables,
system.parts, system.disks, system.detached_parts, system.mutations,
system.part_log и ещё нескольких), с readonly=2 и ограничениями ресурсов.
Он никогда не читает ни строки ваших таблиц, ни system.query_log, ни тексты
запросов и ничего никуда не отправляет. Автоматически ничего не выполняется:
каждое исправление вы читаете и запускаете сами.
В планах версия, которая проверяет сервер каждый час и присылает письмо до того, как диск заполнится. Если она вам пригодится, напишите об этом в Early access: она появится, если её попросит достаточно людей, и будет бесплатной.
Документация и исходный код ClickHouse:
- Обзор системных таблиц (неограниченный рост,
<engine>против<ttl>, переименование при смене схемы): https://clickhouse.com/docs/reference/system-tables/overview config.xmlпо умолчанию (логи без TTL, engine уopentelemetry_span_log,text_logи logger на уровнеtrace, закомментированныйsession_log): https://github.com/ClickHouse/ClickHouse/blob/master/programs/server/config.xmlmax_table_size_to_drop, серверная настройка иforce_drop_table: https://clickhouse.com/docs/reference/settings/server-settings/settings/max-table#max_table_size_to_dropmax_table_size_to_drop, настройка запроса: https://clickhouse.com/docs/reference/settings/session-settings/max#max_table_size_to_drop- Переопределение на уровне запроса с 23.12: ClickHouse/ClickHouse#57452
- Флаг удаляется после использования (
checkCanBeDropped): https://github.com/ClickHouse/ClickHouse/blob/master/src/Interpreters/Context.cpp - TRUNCATE: https://clickhouse.com/docs/reference/statements/truncate
- DROP TABLE ... SYNC,
database_atomic_delay_before_drop_table_sec(480 с): https://clickhouse.com/docs/reference/statements/drop, https://clickhouse.com/docs/reference/settings/server-settings/settings/other#database_atomic_delay_before_drop_table_sec - Ошибка TTL у
opentelemetry_span_log: ClickHouse/ClickHouse#88366 - Настройки MergeTree:
merge_with_ttl_timeout(14400 с) https://clickhouse.com/docs/reference/settings/merge-tree-settings/merge-with#merge_with_ttl_timeout,old_parts_lifetime(480 с) https://clickhouse.com/docs/reference/settings/merge-tree-settings/other#old_parts_lifetime,max_bytes_to_merge_at_max_space_in_pool(150 ГиБ) https://clickhouse.com/docs/reference/settings/merge-tree-settings/max-bytes#max_bytes_to_merge_at_max_space_in_pool - Ротация логов сервера (
logger:level,size,count): https://clickhouse.com/docs/reference/settings/server-settings/settings/other#logger - Облегчённый DELETE: https://clickhouse.com/docs/reference/statements/delete
- DELETE в режиме
lightweight_updateпишет кускиpatch-, только если у таблицы есть столбцы_block_numberи_block_offset: https://clickhouse.com/docs/reference/statements/update#lightweight-update-requirements (проверено на 25.12 и 26.9: с одним_block_numberон откатывается к мутации) - APPLY DELETED MASK: https://clickhouse.com/docs/reference/statements/alter/apply-deleted-mask
- system.parts: https://clickhouse.com/docs/reference/system-tables/parts
- system.detached_parts: https://clickhouse.com/docs/reference/system-tables/detached_parts
- DROP DETACHED PART: https://clickhouse.com/docs/reference/statements/alter/partition
allow_drop_detached: https://clickhouse.com/docs/reference/settings/session-settings/allow#allow_drop_detached- system.mutations: https://clickhouse.com/docs/reference/system-tables/mutations
- KILL QUERY: https://clickhouse.com/docs/reference/statements/kill
- Altinity KB, «System tables ate my disk» (нужен перезапуск): https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-system-tables-eat-my-disk/
Docker:
- Драйвер логов json-file (
max-sizeпо умолчанию -1; у существующих контейнеров остаются старые настройки): https://docs.docker.com/engine/logging/drivers/json-file/
Langfuse:
- FAQ, как уменьшить размер ClickHouse на диске: https://langfuse.com/faq/all/reduce-clickhouse-disk-size
- Документация по масштабированию, системные таблицы-логи ClickHouse: https://langfuse.com/self-hosting/configuration/scaling
- #13123, системные таблицы растут без ограничений: langfuse/langfuse#13123
- #16339, лог Docker без ограничений: langfuse/langfuse#16339
- PR #16363, ротация логов Docker в README (настройки демона, без сторонней обрезки): langfuse/langfuse#16363
- Обсуждение #13969, строки после облегчённого удаления: https://github.com/orgs/langfuse/discussions/13969
- Обсуждение #15024, неактивные куски и text_log на 59 ГиБ: https://github.com/orgs/langfuse/discussions/15024
- PR #14035, очистка по маске удаления (вышла в v3.179.0), её запрос и режим удаления по умолчанию: langfuse/langfuse#14035, https://github.com/langfuse/langfuse/releases/tag/v3.179.0, https://github.com/langfuse/langfuse/blob/v3.225.11/worker/src/features/deleted-mask-cleaner/helpers.ts#L40-L56, https://github.com/langfuse/langfuse/blob/v3.225.11/packages/shared/src/env.ts#L135-L137
- #16858, DateTime64 на ClickHouse 26.8+: langfuse/langfuse#16858
- PR #16892 и бэкпорт в v3, PR #16957: langfuse/langfuse#16892, langfuse/langfuse#16957
- Релизы с исправлением: https://github.com/langfuse/langfuse/releases/tag/v4.28.0, https://github.com/langfuse/langfuse/releases/tag/v3.225.7
SigNoz, ClickStack и другие:
- SigNoz #12050, 80+ ГБ системных логов: SigNoz/signoz#12050
config.xmlиusers.xmlClickHouse в SigNoz v0.129.0: https://github.com/SigNoz/signoz/blob/v0.129.0/deploy/common/clickhouse/config.xml, https://github.com/SigNoz/signoz/blob/v0.129.0/deploy/common/clickhouse/users.xmldocker-compose.yamlв SigNoz v0.129.0 (контейнерsignoz-clickhouse,max-size: 50m,max-file: "3"): https://github.com/SigNoz/signoz/blob/v0.129.0/deploy/docker/docker-compose.yaml- Установка SigNoz в Docker, Foundry начиная с v0.130.0 (
docker psпоказываетsignoz-telemetrystore-clickhouse-0-0): https://signoz.io/docs/install/docker/, https://github.com/SigNoz/signoz/blob/v0.144.0/deploy/README.md - Foundry v0.3.0: сервис и контейнер
<name>-telemetrystore-clickhouse-<shard>-<replica>, образ по умолчаниюclickhouse/clickhouse-server:25.12.5, пользовательdefaultсpassword: "": https://github.com/SigNoz/foundry/blob/v0.3.0/internal/casting/dockercomposecasting/templates/compose.yaml.gotmpl#L60-L61, https://github.com/SigNoz/foundry/blob/v0.3.0/api/v1alpha1/installation/telemetrystore.go#L43, https://github.com/SigNoz/foundry/blob/v0.3.0/docs/examples/docker/compose/pours/deployment/telemetrystore/clickhouse/config-0-0.yaml#L80-L87 - Helm-чарт ClickStack, PR #275: ClickHouse/ClickStack-helm-charts#275
- Sentry snuba #7311, копии
*_log_Nбез TTL: getsentry/snuba#7311 - trigger.dev #4343, настройки профилей в config.d игнорируются: triggerdotdev/trigger.dev#4343
ClickHouse — зарегистрированный товарный знак ClickHouse, Inc. diskvet не связан с ClickHouse, Inc. Langfuse, SigNoz и ClickStack — товарные знаки их владельцев.