В том случае, если сервер 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
Как видим, в системе отсутствует русская локаль, на которую ругается в логе Icinga Web ('ru_RU').
Чтобы добавить в систему соответствующую локаль, вызовем реконфигурацию пакета locales.
# dpkg-reconfigure locales
Откроется список локалей, которые должны быть сгенерированы в результате реконфигурации. Убедимся в том, что в списке отмечена используемая на данный момент локаль (в нашем случае это en_US.UTF-8):
Просмотрим весь список и найдём в нём недостающую русскую локаль, например, ru_RU.UTF-8, затем нажмём Ok
Конфигуратор предупредит нас о том, что из нескольких генерируемых локалей нужно будет выбрать основную локаль, которая будет использоваться в системе по умолчанию.
Сделаем выбор исходя из своих предпочтений и нажмём Ok.
В результате будут сгенерированы выбранные наборы локализаций.
Сразу после этого вышеописанные ошибки в логе icingaweb2.log должны исчезнуть.
Проверено на сервере с Debian GNU/Linux 8.10 (Jessie) с Icinga Web 2.5.3.
Добавить комментарий