12 февраля, 2012

Проблемы с кодировкой в Zabbix

Мониторинг дело полезное, настало время заняться вплотную IIS, до этого дальше проверки наличия w3wp.exe в списке процессов дело не шло. Полный список счетчиков, доступных в системе, можно посмотреть с помощью утилиты typeperf с ключем -qx. Ключем -o лучше не пользоваться, перенаправление вывода - лучший способ записать список в файл.

Названия некоторых счетчиков заботливо переведены на русский, уроды... Сначала способность zabbix переварить кириллицу вызывала сомнения, но nc их развеял.

# echo 'perf_counter[\W3SVC_W3WP(_Total)\Всего потоков]' | nc alpha.example.com 10050
ZBXD    20.000000

Однако, при попытке использовать ключи с латиницей в web-интерфейсе, русские буквы заменялись вопросами.

Опущу скучный процесс копания в коде. Во-первых кодировка БД очередной раз оказалась latin1. Если БД большая, как оказалось вв моём случае, то для решения проблемы достаточно конвертировать таблицу items. Вторая проблема - баг ZBX-4044, исправленный в версии 1.8.7. Если нет желания ставить новую версию - можно убрать строчку «DBexecute('SET CHARACTER SET utf8');» в файле include/db.inc.php

Дело в том, что SET NAMES utf8 устанавливает значение переменных character_set_client, character_set_connection, character_set_results в «utf8», а collation_connection в «utf8_general_ci». SET CHARACTER SET utf8 делает почти то же самое, но character_set_connection и collation_connection сбрасываются к значению по умолчанию, а это, для не настроенного MySQL, в «latin1» и «utf8_general_ci», соответственно.

Комментариев нет:

Отправить комментарий