Ad Widget

Collapse

передача json текста в траппер элемент данных

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 187

    #1

    передача json текста в траппер элемент данных

    Измеряю параметры канала между двумя узлами с помощью iperf. На выходе получаю текст {"udp":{"socket":4,"start":0,"end":10,"seconds":10 ,"bytes":1253376,"bits_per_second":1002700.800000, "jitter_ms":8.644000,"lost_packets":1,"packets":15 2,"lost_percent":0.657895,"out_of_order":0}}
    Помещаю текст в переменную и отсылаю его через батник в траппер элемент данных: zabbix_sender -z <адрес сервера> -s <Имя узла> -k <имя элемента данных> -o %json%
    В элемент приходит текст без кавычек: {udp:{socket:4,start:0,end:10,seconds:10,bytes:125 3376,bits_per_second:1002700.800000,jitter_ms:9.49 8000,lost_packets:12,packets:152,lost_percent:7.89 4737,out_of_order:0}}
    Дальше с помощью предобработки JSON пытаюсь разослать параметра в зависимые элементы данных: $.udp.jitter_ms ....
    Предобработка не работает, поскольку нет кавычек. Как заставить zabbix_sender не удалять кавычки из текста?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3406

    #2
    Скорее всего, zabbix_sender тут ни при чём, а кавычки удаляются интерпретатором, который выполняет Ваш скрипт. Судя по слову "батник", речь идёт о платформе Windows? Если перед строкой с командой "zabbix_sender" для отладки добавить эту же строку, но дописав перед ней в начале строки "echo " - будет ли выводиться корректный JSON?

    Comment

    • Victor Sklyarov
      Senior Member
      • Apr 2016
      • 187

      #3
      И перед и после выводится корректная строка с кавычками. Даже если сделать -o "%json%" всё равно все кавычки удаляются. Кусок скрипта:
      c:\zabbix\bin\win32\zabbix_sender -z х,х,х,х -s %1 -k ping.main -o "!LIST!" >>c:\zabbix\ping.txt
      echo !LIST!>>c:\zabbix\ping.txt
      А это из ping.txt:
      info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000049"
      sent: 1; skipped: 0; total: 1
      {"tcpping":{"loss": 0.00, "ping":{ "Mini":23.475, "Maxi": 127.310, "Average": 42.281} ,"jitter":{ "Mini":3.197, "Maxi": 94.783, "Average": 25.173}}}

      Comment

      • Victor Sklyarov
        Senior Member
        • Apr 2016
        • 187

        #4
        Помогает только экранировка кавычек: {"tcpping":{"loss": 0.00, "ping":{ "Mini":23.744, "Maxi": 74.961, "Average": 31.384} ,"jitter":{ "Mini":0.414, "Maxi": 49.843, "Average": 13.281}}} и передача параметра в кавычках -o "!LIST!". Без кавычек сендер выдаёт ошибки:
        zabbix_seder [2484]: invalid parameter "0.00,"
        ......

        Но это ведь неправильно, не должен sender как то парсить передаваемый параметр.

        Comment

        • Victor Sklyarov
          Senior Member
          • Apr 2016
          • 187

          #5
          Вот так работает {"tcpping":{"loss": 0.00, "ping":{ "Mini":23.744, "Maxi": 74.961, "Average": 31.384} ,"jitter":{ "Mini":0.414, "Maxi": 49.843, "Average": 13.281}}}

          Comment

          Working...