Ad Widget

Collapse

Как получить текущий баланс из API yandex direct?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #16
    Originally posted by Evgene-mmk
    Замечал что JSON парсеры по разному понимают запросы.
    Ну, у Ивана Сергеевича пока проблема другая: у него Zabbix-овский JSON-парсер ругается на то, что значение начинается не с открывающей скобки (фигурной либо квадратной), а со строки: "% Total ... % Received ...". Я бы на его месте тоже бы ругнулся, но менее интеллигентно
    У меня получилось вот так
    Да, примерно так и должно получиться. Ключевой - первый шаг, дальше можно соптимизировать: вместе остальных трёх шагов использовать один, с типом "Trim" и параметром
    Code:
    ["]
    Тогда с начала и конца за один приём уберутся все кавычки и квадратные скобки, останется только число.

    Comment

    • IvanSergeevich
      Junior Member
      • Feb 2021
      • 10

      #17
      Спасибо!
      Originally posted by Kos
      Ну, у Ивана Сергеевича пока проблема другая: у него Zabbix-овский JSON-парсер ругается на то, что значение начинается не с открывающей скобки (фигурной либо квадратной), а со строки: "% Total ... % Received ...". Я бы на его месте тоже бы ругнулся, но менее интеллигентно
      Не понятно -s в конце запроса поставил по идее (и в начало пробовал) % Total ... % Received больше не должно попадать в запрос. При выполнении в чистом виде ./yandex_direct_API.sh % Total и % Received не выводится.

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

      Click image for larger version  Name:	Ошибка.jpg Views:	0 Size:	11.7 KB ID:	418576

      Может тут, что ни так? Пока на файл yandex_direct_API.sh установлены права 777
      Last edited by IvanSergeevich; 11-02-2021, 11:25.

      Comment

      • IvanSergeevich
        Junior Member
        • Feb 2021
        • 10

        #18
        СПАСИБО ВАМ ОГРОМНОЕ КОЛЛЕГИ!!!!
        Проблема решилась очень просто, я подумал, "а не перезапустить ли мне службы!" После перезапуска все заработало! Как я понимаю забикс закешировал запрос и упорно слал его!
        Еще раз ОГРОМНОЕ СПАСИБО без Вашей помощи я гораздо дольше разбирался в чем дело!

        Comment

        • D.Frolov
          Member
          • Apr 2020
          • 95

          #19
          Столкнулся с точно такой же проблемой

          Внутри Zabbix такая ошибка
          Preprocessing failed for: sh: 1: /usr/lib/zabbix/externalscripts/Alert-Balance-Yandex-Direct.sh: not found
          1. Failed: cannot extract value from json by path "$.data.Accounts..Amount": invalid object format, expected opening character '{' or '[' at: 'sh: 1: /usr/lib/zabbix/externalscripts/Alert-Balance-Yandex-Direct.sh: not found'
          (см. скрин)Click image for larger version

Name:	ErrorJsonZabbix.png
Views:	39
Size:	21.6 KB
ID:	493337

          2. Вот что выдает скрипт bash в вывод
          {"data":{"Accounts":[{"EmailNotification":{"MoneyWarningValue":20,"Emai l":"[email protected]","PausedByDayBudget":"Yes"}, "SmsNotification":{"SmsTimeFrom":"09:00","MoneyInS ms":"No","MoneyOutSms":"No","SmsTimeTo":"21:00","P ausedByDayBudgetSms":"Yes"},"AccountID":111111,"Lo gin":"mylogin","AccountDayBudget":null,"Amount":"0 ","AgencyName":null,"Currency":"RUB","AmountAvaila bleForTransfer":"8033.33"}],"ActionsResult":[]}}
          3. Если зайти в элемент данных, предобработка и не получать строку 2 с хоста, а в тест ввести ее CTRL+C CTRL+V, то значение в строке 2 разбирается, нет проблем, но при получении именно Zabbix, ошибка 1 (см. скрин)
          Click image for larger version

Name:	JsonZabbix.png
Views:	40
Size:	22.0 KB
ID:	493336

          4. Человек написал, что перезапустил службы...я сделал systemctl restart zabbix-server, но ничего не поменялось.

          Comment

          • Alex_UUU
            Senior Member
            • Dec 2018
            • 541

            #20
            Коллеги, да, в заббиксе парсилка json несколько урезанная. но для базовых функций, с учетом преобработки - прекрасно работает.
            На окне элементов данных есть кнопочка тест (для пассивных и многих других). Нажмите, получите то, что возвращает ваш скрипт.
            Плюс шаг, на котором ошибка.
            Вывод копируете в буфер обмена, идете в предобработку и начинаетет тестировать и проверять, что не так.
            Итогда приходил к выводу, что легче регекспом резануть.
            У вас же линух, скормите вывод jq проверьте синтаксис и прочее.

            Comment

            Working...