Ad Widget

Collapse

и снова кирилица на карте

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • YuraI
    Member
    • Jun 2012
    • 35

    #16
    Originally posted by A.Soloviev
    Версионность:

    Zabbix server v2.2.1;
    mysql Ver 14.14 Distrib 5.1.71, for redhat-linux-gnu (i386) using readline 5.1
    Apache/2.2.15 (Unix)

    У меня похожая проблема, на картах и в менюшках Web интерфейса забикса русские буквы отображаются корректно, но при просмотре истории итемов, русские буквы отображаются знаками вопроса (???).

    Все что упоминалось кажется перепробовал
    Попробуйте это, мне помогло. Статья проверена.

    Дано: знаки вопросов вместо русских букв Решение: Нужно сменить кодировку MySQL-базы из latin1 (которая стоит по умолчанию) на UTF8. Для этого останавливаем zabbix sudo /etc/init.d/zabbix-server st…

    Comment

    • A.Soloviev
      Junior Member
      • Feb 2014
      • 27

      #17
      У меня в другом месте знаки вопросов, не в меню, а в тексте который передает агент.
      Заббикс выполняет скрипт хоста: 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)

      КАКИЕ еще параметры можно изменить?

      Originally posted by YuraI
      Попробуйте это, мне помогло. Статья проверена.

      http://saradmin.ru/?p=1508

      Comment

      • A.Soloviev
        Junior Member
        • Feb 2014
        • 27

        #18
        Скриншет в аттаче
        Last edited by A.Soloviev; 25-02-2014, 08:49.

        Comment

        • A.Soloviev
          Junior Member
          • Feb 2014
          • 27

          #19
          Может ли быть такое, что Забикс агент преобразовывает формат??? Потому что sqlcmd передает в ЮТФ-8, базы на стороне сервера Заббикса тоже в ЮТФ-8, кто то еще коверкует формат, остается проверить забикс агент.

          Comment

          • A.Soloviev
            Junior Member
            • Feb 2014
            • 27

            #20
            Originally posted by A.Soloviev
            Может ли быть такое, что Забикс агент преобразовывает формат??? Потому что sqlcmd передает в ЮТФ-8, базы на стороне сервера Заббикса тоже в ЮТФ-8, кто то еще коверкует формат, остается проверить забикс агент.
            Отвечу сам себе: Агент передает в ЮТФ-8 (т.е. не конвертирует ничего). Просто добавил UserParameter так чтобы он сохранял результаты в txt файл, открыл файл и там формат UTF-8.

            Значит Забикс сервер где то конвертирует формат?

            Comment

            • Jimson
              Senior Member
              • Jan 2008
              • 1327

              #21
              Из трех постов я так и не понял что у вас попадает в базу данных zabix.
              select * from history_text where ...
              show create table history_text;

              Comment

              • A.Soloviev
                Junior Member
                • Feb 2014
                • 27

                #22
                Originally posted by Jimson
                Из трех постов я так и не понял что у вас попадает в базу данных zabix.
                select * from history_text where ...
                show create table history_text;
                Тоже самое что и на скриншете веб-интерфейса забикса, который я выкладывал - знаки вопросов. Тоже самое и в таблице 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

                • A.Soloviev
                  Junior Member
                  • Feb 2014
                  • 27

                  #23
                  Скриншет в аттаче
                  Attached Files

                  Comment

                  • Jimson
                    Senior Member
                    • Jan 2008
                    • 1327

                    #24
                    Не спамьте, успокойтесь. За этими "вопросиками" совершенно не понятно что содержится в строке, вам браузер и консоль "вопросиками" заменяют символы.
                    Как вариант, сделайте выборку из базы (zabbix) в файл и затем попробуйте через iconv перекодировать.

                    Zabbix ничего нигде не перекодирует, его работа с кодировками начинается и заканчивается на <meta charset=utf8> в заголовках сгенерированных html веб-интерфейса, поэтому корректная работа с кодировками гарантируется только в случае utf8 и поэтому база должна быть создана с --default-charset=utf8, в противном случае mysql начнет конвертить charset.

                    Посмотрите сюда еще https://dev.mysql.com/doc/refman/5.6...-database.html

                    Comment

                    • A.Soloviev
                      Junior Member
                      • Feb 2014
                      • 27

                      #25
                      Originally posted by Jimson
                      Не спамьте, успокойтесь. За этими "вопросиками" совершенно не понятно что содержится в строке, вам браузер и консоль "вопросиками" заменяют символы.
                      Как вариант, сделайте выборку из базы (zabbix) в файл и затем попробуйте через iconv перекодировать.

                      Zabbix ничего нигде не перекодирует, его работа с кодировками начинается и заканчивается на <meta charset=utf8> в заголовках сгенерированных html веб-интерфейса, поэтому корректная работа с кодировками гарантируется только в случае utf8 и поэтому база должна быть создана с --default-charset=utf8, в противном случае mysql начнет конвертить charset.

                      Посмотрите сюда еще https://dev.mysql.com/doc/refman/5.6...-database.html
                      Выдернул из базы в файл - в файле теже вопросики, и без разницы какую кодировку я выберу. В консоли у меня также установлено отображение по ЮТФ-8, в браузере стоит тоже ЮТФ-8 и default-charset=utf8.

                      Comment

                      • Jimson
                        Senior Member
                        • Jan 2008
                        • 1327

                        #26
                        Т.е. ты хочешь сказать что в базу попадает строка из символов с кодом 0x3F ? Тогда надо глянуть tcpdump-ом что шлет агент на сервер.

                        Comment

                        • A.Soloviev
                          Junior Member
                          • Feb 2014
                          • 27

                          #27
                          Originally posted by Jimson
                          Т.е. ты хочешь сказать что в базу попадает строка из символов с кодом 0x3F ? Тогда надо глянуть tcpdump-ом что шлет агент на сервер.
                          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.jpg

                          Comment

                          • Jimson
                            Senior Member
                            • Jan 2008
                            • 1327

                            #28
                            Originally posted by A.Soloviev
                            Отвечу сам себе: Агент передает в ЮТФ-8 (т.е. не конвертирует ничего). Просто добавил UserParameter так чтобы он сохранял результаты в txt файл, открыл файл и там формат UTF-8.
                            Значит Забикс сервер где то конвертирует формат?
                            Originally posted by A.Soloviev
                            текст передается уже битый, да еще почему то Zabbix-trapper:
                            Лишнее подтверждение что не надо бегать и кричать "КАРАУЛ", выискивать посты от 2010 года и постить в них "может тут мне кто то поможет", а надо просто внимательно тестировать.

                            С виндовым агентом я вам не помогу, может это фича у него такая. Этот элемент данных вообще какой то скрипт? Возможно запуская его "из под себя" вы видите одно, а когда его запускает agent (запущен как сервис?), то получается совсем другое. Вам как админу виндовс виднее, с региональными настройками проблемы или еще чего.

                            P.S. оно и должно быть траппером, все активные проверки (и агент, и прокси, и zabbix_sender) отсылают данные на
                            сервер через "траппер"

                            PP.S. измените тип итема с активного, на обычный "агент", для очистки совести (вдруг что то поломали с JSON в новых версиях zabbix)
                            Last edited by Jimson; 25-02-2014, 15:32.

                            Comment

                            • A.Soloviev
                              Junior Member
                              • Feb 2014
                              • 27

                              #29
                              Originally posted by Jimson
                              Этот элемент данных вообще какой то скрипт? Возможно запуская его "из под себя" вы видите одно, а когда его запускает 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

                              • A.Soloviev
                                Junior Member
                                • Feb 2014
                                • 27

                                #30
                                Проблема думаю в связке sqlcmd+Zabbix-agent.
                                Мои предположения почему, описал в теме по Mssql: https://www.zabbix.com/forum/showthread.php?t=12537

                                Comment

                                Working...