Служба журналов останавливает приём: раздел заполнен
Службы хранения журналов пишут в собственный журнал предзаписи и останавливают приём при нехватке места. Опасность в сочетании: собственные журналы этой службы тоже перестают писаться, и разбор приходится вести по системному журналу.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Раздел под данные заполнен
Приём прекращается, чтобы не потерять уже принятое. Служба продолжает работать и отвечать отказами на запись.
-
Каталог данных оказался во временной файловой системе
Каталог по умолчанию может попасть в раздел, очищаемый при загрузке. Данные исчезают, а место при работе кончается быстро.
-
Срок хранения не ограничен
Без ограничения объём растёт неограниченно и упирается в размер раздела через несколько недель работы.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Место на разделе с данными.
df -h /var/lib/lokiСообщения службы о нехватке места.
journalctl -u loki -n 30 --no-pager | grep -iE "no space|wal|flush"Где служба держит данные.
systemctl show loki -p StateDirectory -p WorkingDirectoryРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Приём прекращается, чтобы не потерять уже принятое. Служба продолжает работать и отвечать отказами на запись.
- Как проверить
-
Посмотрите место и каталог данных.
df -h /var/lib/loki 2>/dev/null sudo du -sh /var/lib/loki/* 2>/dev/null | sort -h | tail -5
- Как исправить
- Освободите место и настройте срок хранения данных. Без ограничения срока раздел заполнится снова.
- Почему происходит
- Каталог по умолчанию может попасть в раздел, очищаемый при загрузке. Данные исчезают, а место при работе кончается быстро.
- Как проверить
-
Посмотрите, где лежат данные и какая там файловая система.
systemctl show loki -p WorkingDirectory -p StateDirectory 2>/dev/null findmnt -T /var/lib/loki -o TARGET,FSTYPE,SIZE 2>/dev/null
- Как исправить
-
Перенесите каталог данных на постоянный раздел достаточного размера и объявите его через
StateDirectory=.
- Почему происходит
- Без ограничения объём растёт неограниченно и упирается в размер раздела через несколько недель работы.
- Как проверить
-
Посмотрите настройки хранения.
grep -iE "retention|max_look_back|period" /etc/loki/config.yml 2>/dev/null | head
- Как исправить
- Задайте срок хранения по объёму задачи. Хранить журналы дольше, чем ими пользуются, нет смысла.
Пример вывода
Раздел под журнал предзаписи заполнен. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
loki[6700]: level=error caller=flush.go:146 org_id=fake msg="failed to flush" err="write /var/lib/loki/wal/00000042: no space left on device"
loki[6700]: level=warn msg="ingester stopping to accept pushes"
$ df -h /var/lib/loki
/dev/vdb1 20G 20G 0 100% /var/lib/loki
Связанные ошибки
- No space left on device в журнале службы Нет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
- Журнал занимает слишком много места Журнал разросся: где задаются пределы, как обрезать и почему обрезка иногда не помогает.
- PostgreSQL: нет места под журнал предзаписи База останавливается из-за заполненного каталога журнала предзаписи: неработающая архивация, слот репликации, недостаточный раздел.
- Журналы контейнеров заполнили диск Место кончилось из-за журналов контейнеров: ограничение размера не задано, ротации нет.
- File corrupted or uncleanly shut down, renaming and replacing Журнал повреждён после жёсткой перезагрузки: что означает сообщение и когда нужно вмешательство.
- I/O error, dev sda, sector N: ошибка носителя Ядро сообщает об ошибке чтения или записи на устройстве. Что делать со службой и данными.
- Mount process exited, code=exited, status=32: не найдено устройство Монтирование не проходит: устройство или UUID не найдены, неверная файловая система, недоступен сетевой ресурс. Код 32 от команды mount.
- You are in emergency mode: система не загрузилась Загрузка остановилась в аварийном режиме. Что проверять: fstab, файловые системы, цель по умолчанию. Как войти и починить.
Источники
- Документация Loki: хранение
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено заполнением раздела под данные службы.