Ad Widget

Collapse

Zabbix 1.8.10 + postgres 9.1, проблемы с макросами в web проверках - CLRF

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • sn00p
    Junior Member
    • Feb 2012
    • 9

    #1

    Zabbix 1.8.10 + postgres 9.1, проблемы с макросами в web проверках - CLRF

    Добрый день!
    Мы отказались от mysql в пользу postgresql с сохранением данных. Все работает, кроме наших сложных web проверок. С curl все в порядке.

    Мы используем переменные, например
    Code:
    {firmID}=1
    {filialID}=1
    {city}=Barnaul
    {version}=1
    {key}=1
    Раньше в mysql все хранилось как
    Code:
    {firmID}=1\r\n{filialID}=1\r\n{city}=Barnaul\r\n{version}=1\r\n{key}=1
    и видимо корректно парсилось.

    Сейчас postgres хранит все как
    Code:
    {firmID}=1\015\012{filialID}=1\015\012{city}=Barnaul\015\012\{version}=1\015\012{key}=1
    и видимо парсится некорректно ))

    Пробовали:
    - добавить E, как пишут в мануале postgres
    httptest.inc.php (241)
    Code:
    macros=E'.zbx_dbstr($macros).', '.
    - пробовали менять опции postgres
    Code:
    backslash_quote = safe_encoding
    standard_conforming_strings = on
    - \\r\\n тоже не работает.

    Веб проверка показывает Ошибка: Page did not match. Такое ощущение, что парсер некорректно работает с макросами из-за этого перевода строки.

    Может кто сталкивался?
    Last edited by sn00p; 27-02-2012, 08:31.
  • sn00p
    Junior Member
    • Feb 2012
    • 9

    #2
    zabbix 1.9.9 тоже самое

    Comment

    • zalex_ua
      Senior Member
      Zabbix Certified Trainer
      Zabbix Certified SpecialistZabbix Certified Professional
      • Oct 2009
      • 1286

      #3
      поробуйте браузеры из под линукса
      И посмотрите сюда: https://support.zabbix.com/browse/ZBX-3940

      Comment

      • sn00p
        Junior Member
        • Feb 2012
        • 9

        #4
        К сожалению, не наш случай )))
        Параметры идут строкой
        {1}=value\r\n{2}=value\r\n{3}=value
        В mysql они хранятся именно так.

        С постгресом не получается. Даже когда добиваешься именно такого формата хранения, а не
        - {1}=value\\r\\n{2}=value\\r\\n{3}=value
        - {1}=value\015\012{2}=value\015\012{3}=value
        - E({1}=value\r\n{2}=value\r\n{3}=value)

        веб проверки не работают, видимо строка все же не может распарситься корректно.

        Comment

        • sn00p
          Junior Member
          • Feb 2012
          • 9

          #5
          [solved]

          В общем разбираться особо не стали. dirty hack такой.

          zabbix/src/zabbix_server/httppoller/httpmacro.c (84)

          Было так:
          Code:
          replacement++;                                                                                                                                                     
          if(NULL != (c2 = strchr(replacement,'[B]\r[/B]')))                                                                                                                         
          {
          Стало так:
          Code:
          replacement++;                                                                                                                                                     
          if(NULL != (c2 = strchr(replacement,'[B]:[/B]')))                                                                                                                         
          {
          И во всех макросах разделитель между парами {key} сделали ":"
          {key}=value:{key1}=value:{key2}=value

          Работает, всем спасибо!

          Comment

          Working...