← Все статьи

Graylog: после переполнения диска не пишутся новые логи — решение

Автор: Юрий Нефёдов, системный инженер · 09.04.2021 · обновлено 24.10.2026

Ситуация: диск с базой Graylog переполнился, место освободили, но Graylog так и не начал писать новые сообщения. В поиске видны только старые записи. Ротация индекса тоже не помогает.

Шаг 1. Снять блокировку записи

Когда диск заполняется почти полностью, Elasticsearch (и OpenSearch) переводит индексы в режим «только чтение». В старых версиях после освобождения места эта блокировка сама не снимается. Снимите её для всех индексов:

curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

Если сообщения пошли, дальше ничего делать не нужно.

Шаг 2. Удалить повреждённый индекс

Если не помогло, скорее всего, при переполнении повредился текущий индекс, и в него ничего не пишется. Выведите список индексов:

curl http://localhost:9200/_cat/indices?v

Повреждённый обычно последний по номеру. Удалите его, подставив имя вместо graylog_index_number. Сообщения в этом индексе будут потеряны:

curl -XDELETE http://localhost:9200/graylog_index_number

Шаг 3. Убрать упоминание индекса в MongoDB

В базе MongoDB Graylog осталась информация об удалённом индексе, и поиск может выдавать ошибку, что не находит его. Удалите сохранённые диапазоны индексов (в новых версиях вместо mongo используется mongosh):

mongo --port 27017
use graylog;
db.index_ranges.drop()

Затем в веб-интерфейсе Graylog откройте System → Indices, выберите набор индексов и запустите пересчёт диапазонов (Recalculate index ranges).

Нужна помощь с настройкой?

Если задача сложнее, чем в статье, напишите мне. Первая консультация бесплатная.