Попробуйте это, мне помогло. Статья проверена.
Ad Widget
Collapse
и снова кирилица на карте
Collapse
X
-
У меня в другом месте знаки вопросов, не в меню, а в тексте который передает агент.
Заббикс выполняет скрипт хоста: sqlcmd -S имя-БД -i C:\database\sqlscript.sql (скрипт: select * from errorlogdb.dbo.error_types; ) и выдает данные таблицы (для проверки есть и латинские и русские буквы).
Настройки mbstring в файле php.ini (перепробовал разные варианты):
Directive - Local Value - Master Value
mbstring.detect_order - auto - auto
mbstring.encoding_translation -Off - Off
mbstring.func_overload - 2 - 2
mbstring.http_input - auto - auto
mbstring.http_output - UTF-8 - UTF-8
mbstring.http_output_conv_mimetypes - ^(text/|application/xhtml\+xml) - ^(text/|application/xhtml\+xml)
mbstring.internal_encoding - UTF-8 - UTF-8
mbstring.language - neutral - neutral
mbstring.strict_detection - Off - Off
mbstring.substitute_character - no value - no value
Вывод команды zabbix_get:
[root@mj ~]# zabbix_get -s 10.32.1.84 -p 10050 -k sqlcmd
type_id description
----------- --------------------------------------------------
1 Cannot connect DB, ▒▒▒▒▒▒
3 ▒▒▒▒▒▒▒筮 ▒▒▒▒▒
4 ▒▒▒▒▒▒▒⭠▒ ▒訡▒▒
(▒▒ࠡ▒⠭▒ ▒▒ப: 3)
Как я понимаю, при запросе zabbix_get информация не пишется в базу и не читается из нее, а сразу выводится на экран?
Настройки my.cnf (возможно много лишнего, перепробовал все с разных источников, уже запутался):
[client]
default-character-set=utf8
[mysqld]
#utf8
default-character-set=utf8
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake
# collation-server=utf8_bin
# init_connect="SET NAMES utf8 collate utf8_bin"
init_connect='SET collation_connection = utf8_general_ci'
init_connect="SET NAMES utf8"
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]default-character-set=utf8
Кодировка в БД mysql:
mysql> SHOW CREATE database zabbix;
+----------+----------------------------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------------------------+
| zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |
+----------+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show variables like "%collat%";
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_bin |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like 'init%';
+---------------+----------------+
| Variable_name | Value |
+---------------+----------------+
| init_connect | SET NAMES utf8 |
| init_file | |
| init_slave | |
+---------------+----------------+
3 rows in set (0.00 sec)
КАКИЕ еще параметры можно изменить?
Comment
-
-
Может ли быть такое, что Забикс агент преобразовывает формат??? Потому что sqlcmd передает в ЮТФ-8, базы на стороне сервера Заббикса тоже в ЮТФ-8, кто то еще коверкует формат, остается проверить забикс агент.Comment
-
Отвечу сам себе: Агент передает в ЮТФ-8 (т.е. не конвертирует ничего). Просто добавил UserParameter так чтобы он сохранял результаты в txt файл, открыл файл и там формат UTF-8.
Значит Забикс сервер где то конвертирует формат?Comment
-
Тоже самое что и на скриншете веб-интерфейса забикса, который я выкладывал - знаки вопросов. Тоже самое и в таблице history_log.
Code:mysql> show create table history_text; +--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | history_text | CREATE TABLE `history_text` ( `id` bigint(20) unsigned NOT NULL, `itemid` bigint(20) unsigned NOT NULL, `clock` int(11) NOT NULL DEFAULT '0', `value` text NOT NULL, `ns` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `history_text_2` (`itemid`,`id`), KEY `history_text_1` (`itemid`,`clock`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +--------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Code:mysql> select * from history_text where id LIKE 8913; +------+--------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+ | id | itemid | clock | value | ns | +------+--------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+ | 8913 | 24456 | 1393237146 | type_id description ----------- -------------------------------------------------- 1 ??????' ??????' 3 ???????筮 ????? 4 ???????⭠? ?訡?? (??ࠡ?⠭? ??ப: 3) | 883552426 | +------+--------+------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+ 1 row in set (0.04 sec)Last edited by A.Soloviev; 25-02-2014, 08:58.Comment
-
-
Не спамьте, успокойтесь. За этими "вопросиками" совершенно не понятно что содержится в строке, вам браузер и консоль "вопросиками" заменяют символы.
Как вариант, сделайте выборку из базы (zabbix) в файл и затем попробуйте через iconv перекодировать.
Zabbix ничего нигде не перекодирует, его работа с кодировками начинается и заканчивается на <meta charset=utf8> в заголовках сгенерированных html веб-интерфейса, поэтому корректная работа с кодировками гарантируется только в случае utf8 и поэтому база должна быть создана с --default-charset=utf8, в противном случае mysql начнет конвертить charset.
Посмотрите сюда еще https://dev.mysql.com/doc/refman/5.6...-database.htmlComment
-
Выдернул из базы в файл - в файле теже вопросики, и без разницы какую кодировку я выберу. В консоли у меня также установлено отображение по ЮТФ-8, в браузере стоит тоже ЮТФ-8 и default-charset=utf8.Не спамьте, успокойтесь. За этими "вопросиками" совершенно не понятно что содержится в строке, вам браузер и консоль "вопросиками" заменяют символы.
Как вариант, сделайте выборку из базы (zabbix) в файл и затем попробуйте через iconv перекодировать.
Zabbix ничего нигде не перекодирует, его работа с кодировками начинается и заканчивается на <meta charset=utf8> в заголовках сгенерированных html веб-интерфейса, поэтому корректная работа с кодировками гарантируется только в случае utf8 и поэтому база должна быть создана с --default-charset=utf8, в противном случае mysql начнет конвертить charset.
Посмотрите сюда еще https://dev.mysql.com/doc/refman/5.6...-database.htmlComment
-
tcpdump для меня оказался малоинформативен (если желаете, выложу результат tcpdump -i eth0 -n -nn -ttt host 10.32.1.84 (адрес хоста) and not port 22 and not port 80).
Сделал проверку программой Wireshark, как видно на скриншете (хост 10.32.1.84, сервак 10.32.2.213) - текст передается уже битый, да еще почему то Zabbix-trapper:
хттп://s006.radikal.ру/i214/1402/ca/066155a4542d.jpgComment
-
Лишнее подтверждение что не надо бегать и кричать "КАРАУЛ", выискивать посты от 2010 года и постить в них "может тут мне кто то поможет", а надо просто внимательно тестировать.
С виндовым агентом я вам не помогу, может это фича у него такая. Этот элемент данных вообще какой то скрипт? Возможно запуская его "из под себя" вы видите одно, а когда его запускает agent (запущен как сервис?), то получается совсем другое. Вам как админу виндовс виднее, с региональными настройками проблемы или еще чего.
P.S. оно и должно быть траппером, все активные проверки (и агент, и прокси, и zabbix_sender) отсылают данные на
сервер через "траппер"
PP.S. измените тип итема с активного, на обычный "агент", для очистки совести (вдруг что то поломали с JSON в новых версиях zabbix)Last edited by Jimson; 25-02-2014, 15:32.Comment
-
На обычный агент пробовал изменить итем - результата нет.Этот элемент данных вообще какой то скрипт? Возможно запуская его "из под себя" вы видите одно, а когда его запускает agent (запущен как сервис?), то получается совсем другое.
PP.S. измените тип итема с активного, на обычный "агент", для очистки совести (вдруг что то поломали с JSON в новых версиях zabbix)
Да это скрипт:
UserParameter=sqlcmd,sqlcmd -S wshk0000021-don\SBd -f 65001 (Sqlcmd конвертирует в UTF-8) -i C:\database\sqlscript.sql
sqlscript.sql:
select * from errorlogdb.dbo.error_types;
GO
Агент запущен как сервис.
При добавлении | iconv -f cp866 на сервере Zabbix - текст отображается корректно:
Где то агент чудит.Code:[root@doc ~]# zabbix_get -s 10.32.1.84 -p 10050 -k "sqlcmd" | iconv -f cp866 type_id description ----------- -------------------------------------------------- 1 Cannot connect DB 3 Недостаточно памяти 4 Неизвестная ошибка (обработано строк: 3)
Часть лога Zabbix-agent (логи агент пишет в ANSI, в примере я уже перевел в UTF-8 чтобы читабельно было):
Code:9032:20140225:181423.976 In send_buffer() host:'10.32.2.213' port:10051 values:0/400 9032:20140225:181423.988 End of send_buffer():SUCCEED 9032:20140225:181423.998 In refresh_active_checks() host:'10.32.2.213' port:10051 9032:20140225:181424.007 sending [{ "request":"active checks", "host":"MyComp"}] 9032:20140225:181424.016 before read 9032:20140225:181424.026 got [{ "response":"success", "data":[ { "key":"sqlcmd", "delay":30, "lastlogsize":0, "mtime":0}]}] 9032:20140225:181424.032 In parse_list_of_checks() 9032:20140225:181424.039 In disable_all_metrics() 9032:20140225:181424.045 In add_check() key:'sqlcmd' refresh:30 lastlogsize:0 mtime:0 9032:20140225:181424.052 End of add_check() 9032:20140225:181424.060 End of refresh_active_checks():SUCCEED 3292:20140225:181424.332 Requested [net.if.in[WAN Miniport (IKEv2)]] 3292:20140225:181424.371 Sending back [0] 8476:20140225:181424.664 In collect_perfstat() 8476:20140225:181424.676 collect_perfstat() counterpath:'\Система\Длина очереди процессора' old first:0 second:0 8476:20140225:181424.686 collect_perfstat() counterpath:'\Система\Длина очереди процессора' new first:0 second:0 8476:20140225:181424.695 collect_perfstat() '\Система\Длина очереди процессора' calculated value:0.000000 8476:20140225:181424.703 collect_perfstat() counterpath:'\Процессор(3)\% загруженности процессора' old first:4225978949435 second:130378112635229941 8476:20140225:181424.711 collect_perfstat() counterpath:'\Процессор(3)\% загруженности процессора' new first:4225988933499 second:130378112646640594 8476:20140225:181424.719 collect_perfstat() '\Процессор(3)\% загруженности процессора' calculated value:12.502256 8476:20140225:181424.727 collect_perfstat() counterpath:'\Процессор(2)\% загруженности процессора' old first:4236062542073 second:130378112635229941 8476:20140225:181424.735 collect_perfstat() counterpath:'\Процессор(2)\% загруженности процессора' new first:4236072838139 second:130378112646640594 8476:20140225:181424.743 collect_perfstat() '\Процессор(2)\% загруженности процессора' calculated value:9.767951 8476:20140225:181424.750 collect_perfstat() counterpath:'\Процессор(1)\% загруженности процессора' old first:4258529494091 second:130378112635229941 8476:20140225:181424.757 collect_perfstat() counterpath:'\Процессор(1)\% загруженности процессора' new first:4258539790157 second:130378112646640594 8476:20140225:181424.765 collect_perfstat() '\Процессор(1)\% загруженности процессора' calculated value:9.767951 8476:20140225:181424.777 collect_perfstat() counterpath:'\Процессор(0)\% загруженности процессора' old first:4170223568031 second:130378112635229941 8476:20140225:181424.790 collect_perfstat() counterpath:'\Процессор(0)\% загруженности процессора' new first:4170233240093 second:130378112646640594 8476:20140225:181424.802 collect_perfstat() '\Процессор(0)\% загруженности процессора' calculated value:15.236560 8476:20140225:181424.813 collect_perfstat() counterpath:'\Процессор(_Total)\% загруженности процессора' old first:4222698638407 second:130378112635229941 8476:20140225:181424.825 collect_perfstat() counterpath:'\Процессор(_Total)\% загруженности процессора' new first:4222708700472 second:130378112646640594 8476:20140225:181424.836 collect_perfstat() '\Процессор(_Total)\% загруженности процессора' calculated value:11.818675 8476:20140225:181424.847 End of collect_perfstat() 9032:20140225:181425.080 In send_buffer() host:'10.32.2.213' port:10051 values:0/400 9032:20140225:181425.092 End of send_buffer():SUCCEED 8100:20140225:181425.379 Requested [net.if.in[WAN Miniport (L2TP)]] 8100:20140225:181425.414 Sending back [0]Code:8476:20140225:181430.785 End of collect_perfstat() 9032:20140225:181431.186 In send_buffer() host:'10.32.2.213' port:10051 values:0/400 9032:20140225:181431.198 End of send_buffer():SUCCEED 9032:20140225:181431.209 In process_active_checks('10.32.2.213',10051) 9032:20140225:181431.297 Run remote command [sqlcmd -S wshk0000021-don\SashaBd -f 65001 -i C:\database\sqlscript.sql] Result [343] [type_id descript]... 9032:20140225:181431.304 for key [sqlcmd] received value [type_id description ----------- -------------------------------------------------- 1 Cannot connect DB, ώׅ͈ќ 3 ͥĮ⢠⯧ͮ Ϡͯ⨠ 4 ͥȧ¥⢭o Ϩȡʠ (ΡࠡϢ-Π⣠Ϊ: 3)] 9032:20140225:181431.310 In process_value() key:'MyComp:sqlcmd' value:'type_id description ----------- -------------------------------------------------- 1 Cannot connect DB, ώׅ͈ќ 3 ͥĮ⢠⯧ͮ Ϡͯ⨠ 4 ͥȧ¥⢭o Ϩȡʠ (ΡࠡϢ-Π⣠Ϊ: 3)' 9032:20140225:181431.317 In send_buffer() host:'10.32.2.213' port:10051 values:0/400 9032:20140225:181431.324 End of send_buffer():SUCCEED 9032:20140225:181431.331 buffer: new element 0 9032:20140225:181431.337 End of process_value():SUCCEED 9032:20140225:181431.344 End of process_active_checks() 9032:20140225:181431.351 In get_min_nextcheck() 8100:20140225:181431.712 Requested [net.if.out[WAN Miniport (IPv6)]] 8100:20140225:181431.746 Sending back [0]Last edited by A.Soloviev; 25-02-2014, 17:14.Comment
-
Проблема думаю в связке sqlcmd+Zabbix-agent.
Мои предположения почему, описал в теме по Mssql: https://www.zabbix.com/forum/showthread.php?t=12537Comment
Comment