Исправление ошибок Icinga Web 2 : IcingaException Translator.php : Cannot set locale 'ru_RU' for category 'LC_ALL'

Icinga Web 2 IcingaException В том случае, если сервер Icinga c Icinga Web 2 развёрнут на Debian Linux с ограниченным набором локалей, где в качестве системной установлена англоязычная локаль, например, en_US.UTF-8, и при этом к веб-сайту Icinga Web подключаются пользователи, имеющие в своём браузере отличные языковые параметры, например, с системы, где в качестве основного языка установлен русский, то можно столкнуться с ситуацией наполнения лога icingaweb2.log множеством однотипных ошибок.

# tail -f /var/log/icingaweb2/icingaweb2.log

...
2018-08-20T16:43:41+03:00 - ERROR - Icinga\Exception\IcingaException in /usr/share/php/Icinga/Util/Translator.php:181 with message: Cannot set locale 'ru_RU' for category 'LC_ALL'
2018-08-20T16:43:47+03:00 - ERROR - Icinga\Exception\IcingaException in /usr/share/php/Icinga/Util/Translator.php:181 with message: Cannot set locale 'ru_RU' for category 'LC_ALL'
2018-08-20T16:43:49+03:00 - ERROR - Icinga\Exception\IcingaException in /usr/share/php/Icinga/Util/Translator.php:181 with message: Cannot set locale 'ru_RU' for category 'LC_ALL'
...

Если я правильно трактую ситуацию, управляющий код Icinga Web 2 для работы с таким клиентом пытается использовать локаль, которая не доступна на сервере.

Судя по [dev.icinga.com #11820] Check whether chosen locale is available  #2432 и [dev.icinga.com #10101] Translator throws exception if locale is missing #1986, ошибка такого характера встречалась и ранее у других администраторов Icinga и была исправлена разработчиками в одном из предыдущих релизов, однако, практика показывает, что её возникновение возможно и сейчас.

Далее кратко о том, как можно избавиться от подобных ошибок в логе.

Посмотрим информацию об имеющихся наборах локализации на сервере Icinga

# locale --all-locales

Debian locale all locales

Как видим, в системе отсутствует русская локаль, на которую ругается в логе Icinga Web ('ru_RU').

Чтобы добавить в систему соответствующую локаль, вызовем реконфигурацию пакета locales.

# dpkg-reconfigure locales

image

Откроется список локалей, которые должны быть сгенерированы в результате реконфигурации. Убедимся в том, что в списке отмечена используемая на данный момент локаль (в нашем случае это en_US.UTF-8):

image

Просмотрим весь список и найдём в нём недостающую русскую локаль, например, ru_RU.UTF-8, затем нажмём Ok

image

Конфигуратор предупредит нас о том, что из нескольких генерируемых локалей нужно будет выбрать основную локаль, которая будет использоваться в системе по умолчанию.

image

Сделаем выбор исходя из своих предпочтений и нажмём Ok.

image

В результате будут сгенерированы выбранные наборы локализаций.

Debian Linux dpkg reconfigure locales generation

Сразу после этого вышеописанные ошибки в логе icingaweb2.log должны исчезнуть.

Проверено на сервере с Debian GNU/Linux 8.10 (Jessie) с Icinga Web 2.5.3.

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