Home » ELK Stack » Ошибка в elasticsearch — FORBIDDEN/12/index read-only / allow delete (api)

Ошибка в elasticsearch — FORBIDDEN/12/index read-only / allow delete (api)

Поймал несколько раз ошибку в работе связки logstash + elasticsearch. Выражается в том, что данные не поступают в определенный индекс. Самое просторе решение — удалить индекс и создать заново. Данные начнут поступать. Если вас не устраивает решение с удалением индекса, то читайте дальше.

Полностью ошибка в логе logstash выглядит следующим образом:

[INFO ][logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"})

Получил я ее несколько раз, когда оставалось очень мало свободного места на диске с данными elasticsearch. При достижении примерно 5% свободного места, данные переставали поступать в elasticsearch и появлялась эта ошибка. Исправить ее можно следующим образом. Во первых, перенести данные на более емкий диск или почистить его. Потом идем в Kibana -> Dev Tools и выполняем команду:

PUT weblogs-2018.09.10/_settings
{
  "index": {
  "blocks": {
  "read_only_allow_delete": "false"
}
}
}

Решение ошибки в elasticsearch - FORBIDDEN/12/index read-only / allow delete (api)

weblogs-2018.09.10 — имя индекса, куда не шли данные. После выполнения команды перезапустил logstash на сервере и данные пошли в текущий индекс.

Скорее всего для записи будут недоступны и системные индексы. Проверьте, какие у вас используются. Точно должен быть .kibana. Если используете мониторинг, то для него тоже свои системные индексы создаются. Они тоже могут быть заблокированы для записи.

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Помогла статья? Есть возможность отблагодарить автора

2 комментария

  1. Добрый день!

    Можно выполнить команду для всех индексов:

    PUT _all/_settings
    {
      "index": {
        "blocks": {
          "read_only_allow_delete": "false"
        }
      }
    }

    Вместо false можно использовать null.
    В документации к Elasticsearch расписано более подробно и есть второй вариант решения данной проблемы:
    https://www.elastic.co/guide/en/elasticsearch/reference/6.4/disk-allocator.html

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.