Ad Widget

Collapse

Lld внешним скриптом

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • AlekseyKurnosov
    Junior Member
    • Oct 2016
    • 3

    #1

    Lld внешним скриптом

    Добрый день,

    Формирую JSON внешним скриптом. При ручном запуске скрипта формулируется такая строка:

    Code:
    {"data":[{"{#USERNAME}":"name1"},{"{#USERNAME}":"name2"},{"{#USERNAME}":"name3"},{"{#USERNAME}":"na\\me4"},{"{#USERNAME}":"name5"}]}
    Проверка показывает, что формируется вывод без ошибок.

    Однако, фронтенд продолжает выдавать ошибку "Value should be a JSON object."

    Включил дебаггинг на 4. Всё что вышло отловить это:

    Code:
     14351:20161019:163322.563 In substitute_key_macros() data:'asa_vpn_usr.sh[{HOST.CONN},{$SNMP_COMMUNITY},discover]'
     14351:20161019:163322.563 In substitute_simple_macros() data:'{HOST.CONN}'
     14351:20161019:163322.563 End substitute_simple_macros() data:'1.1.1.1'
     14351:20161019:163322.563 In substitute_simple_macros() data:'{$SNMP_COMMUNITY}'
     14351:20161019:163322.563 In DCget_user_macro() macro:'{$SNMP_COMMUNITY}'
     14351:20161019:163322.563 End of DCget_user_macro()
     14351:20161019:163322.564 End substitute_simple_macros() data:'public'
     14351:20161019:163322.564 End of substitute_key_macros():SUCCEED data:'asa_vpn_usr.sh[1.1.1.1,public,discover]'
     14351:20161019:163322.564 In get_value() key:'asa_vpn_usr.sh[{HOST.CONN},{$SNMP_COMMUNITY},discover]'
     14351:20161019:163322.564 In get_value_external() key:'asa_vpn_usr.sh[{HOST.CONN},{$SNMP_COMMUNITY},discover]'
     14351:20161019:163322.564 In zbx_popen() command:'/etc/zabbix/ext_scripts//asa_vpn_usr.sh "1.1.1.1" "public" "discover"'
     14351:20161019:163322.564 End of zbx_popen():7
     32537:20161019:163322.564 zbx_popen(): executing script
     14351:20161019:163322.603 In zbx_waitpid()
     14351:20161019:163322.603 zbx_waitpid() exited, status:0
     14351:20161019:163322.603 End of zbx_waitpid():32537
     14351:20161019:163322.603 End of get_value_external():SUCCEED
     14351:20161019:163322.603 End of get_value():SUCCEED
     14351:20161019:163322.603 In activate_host() hostid:10342 itemid:40702 type:10
     14351:20161019:163322.603 End of activate_host()
     14351:20161019:163322.603 In lld_process_discovery_rule() itemid:40702
     14351:20161019:163322.603 query [txnlev:0] [select hostid,key_,state,evaltype,formula,error,lifetime from items where itemid=40702]
     14351:20161019:163322.604 In substitute_simple_macros() data:'30'
     14351:20161019:163322.604 query [txnlev:0] [select item_conditionid,macro,value from item_condition where itemid=40702]
     14351:20161019:163322.604 In lld_rows_get()
     14351:20161019:163322.604 End of lld_rows_get():FAIL
    Сталкивался ли кто-нибудь с таким же поведением?

    Возможна ли более детальная отладка?

    Есть ли какая-нибудь возможность воспользоваться забиксовским жсон парсером отдельно от всей системы, что бы проверить мой вывод?

    Версия zabbix 3.0.4

    Спасибо!
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Originally posted by AlekseyKurnosov
    Добрый день,
    Формирую JSON внешним скриптом. При ручном запуске скрипта формулируется такая строка:

    Code:
    {"data":[{"{#USERNAME}":"name1"},{"{#USERNAME}":"name2"},{"{#USERNAME}":"name3"},{"{#USERNAME}":"na\\me4"},{"{#USERNAME}":"name5"}]}
    Для проверки сделайте скрипт без дискавера, пусть просто выдает строки с макросами.
    По своему опыту могу сказать, что в Zabbix парсер капризный и требует, чтобы JSON-объект от первого символа до '\n' был целостный, без переносов, разрывов и пр.

    Comment

    • Dorlas
      Member
      • May 2016
      • 31

      #3
      Originally posted by AlekseyKurnosov
      Добрый день,

      Формирую JSON внешним скриптом. При ручном запуске скрипта формулируется такая строка:

      Code:
      {"data":[{"{#USERNAME}":"name1"},{"{#USERNAME}":"name2"},{"{#USERNAME}":"name3"},{"{#USERNAME}":"na\\me4"},{"{#USERNAME}":"name5"}]}
      День добрый!
      у вас в скрипте проверьте na\\me4, так же попробуйте добавить пробелы.
      Для примера, у меня вот так json формируется:
      Code:
      { "data" : [
          { "{#UNITS}" : "auditd.service" },
          { "{#UNITS}" : "chronyd.service" },
          { "{#UNITS}" : "crond.service" },
          { "{#UNITS}" : "dbus.service" },
          { "{#UNITS}" : "dm-event.service" },
          { "{#UNITS}" : "docker.service" },
          { "{#UNITS}" : "[email protected]" },
          { "{#UNITS}" : "gssproxy.service" },
          { "{#UNITS}" : "httpd.service" },
          { "{#UNITS}" : "irqbalance.service" },
          { "{#UNITS}" : "libvirtd.service" },
          { "{#UNITS}" : "lvm2-lvmetad.service" },
          { "{#UNITS}" : "NetworkManager.service" },
          { "{#UNITS}" : "OVCtrl.service" },
          { "{#UNITS}" : "ovpa.service" },
          { "{#UNITS}" : "pctl.service" },
          { "{#UNITS}" : "polkit.service" },
          { "{#UNITS}" : "postfix.service" },
          { "{#UNITS}" : "rhel-push-plugin.service" },
          { "{#UNITS}" : "rhnsd.service" },
          { "{#UNITS}" : "rhsmcertd.service" },
          { "{#UNITS}" : "rsyslog.service" },
          { "{#UNITS}" : "sshd.service" },
          { "{#UNITS}" : "systemd-journald.service" },
          { "{#UNITS}" : "systemd-logind.service" },
          { "{#UNITS}" : "systemd-machined.service" },
          { "{#UNITS}" : "systemd-udevd.service" },
          { "{#UNITS}" : "tuned.service" },
          { "{#UNITS}" : "vmtoolsd.service" },
          { "{#UNITS}" : "wpa_supplicant.service" },
          { "{#UNITS}" : "zabbix-agent.service" },
          { "{#UNITS}" : "zabbix-server.service" } ]}

      Comment

      • AlekseyKurnosov
        Junior Member
        • Oct 2016
        • 3

        #4
        По поводу форматирования - изначально было сделано точно с теми пробелами, отступами и переводами строки, какие приводятся в официальном руководстве. Естественно, были те же проблемы, и беглое гугление подсказало мне избавиться от любых отступов и пробелов, однако это не помогло. По поводу слэшей - сегодня, конечно, попробую, однако в выводе у меня время от времени они, неизбежно, будет встречаться. О результатах - отпишусь.

        Originally posted by Dorlas
        День добрый!
        у вас в скрипте проверьте na\\me4, так же попробуйте добавить пробелы.
        Для примера, у меня вот так json формируется:
        Если отсутствие слэшей не поможет, то попробую так.

        Originally posted by sadman
        Для проверки сделайте скрипт без дискавера, пусть просто выдает строки с макросами.
        По своему опыту могу сказать, что в Zabbix парсер капризный и требует, чтобы JSON-объект от первого символа до '\n' был целостный, без переносов, разрывов и пр.

        Comment

        • AlekseyKurnosov
          Junior Member
          • Oct 2016
          • 3

          #5
          Добрый день, ещё раз.

          Всё таки, публичное обращение за помощью как-то упорядочивает мысли. Беда оказалось в правах на чтение/запись некоторых файлов. Спасибо за оказанную помощь.

          Ps: Проверил, двойные слэши нормально обрабатываются.

          Comment

          Working...