Ad Widget

Collapse

Как использовать авторизацию токеном для item типа HTTP agent?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • zerocold
    Junior Member
    • Dec 2017
    • 15

    #1

    Как использовать авторизацию токеном для item типа HTTP agent?

    Web API системы требует обязательную авторизацию по токену.
    Необходимо создать item для получения json и парсинга значения. Через командую строку это делать получается в два этапа - авторизация а потом GET запрос с токеном.
    Как это реализовать в Zabbix? Шагов как в веб мониторинге нет, поэтому я хочу скриптом генерировать токен, создать глобальный макрос и обновлять значение скриптом через Zabbix API. НО авторизация через токен не работает..

    Примеры запросов:

    curl -i -k -H "Accept:application/*+xml;version=29.0" -u 'user@domenassword' -X POST https://supersystem.ru/api/

    На выхлопе получаю токен. Дальше запрос с использованием это токена.

    curl -i -k -H "Accept:application/*+json;version=32.0" -H "x-vcloud-authorization:ТОКЕН" -X GET https://supersystem.ru/api/vdc/ ieg934y03Y0GWE0239FOFOJSDS

    При создании item типа HTTP agent я пытался добавлять это все в Header, авторзация None. Это не работает.

    При использовании логина и пароля - никаких данных в item также не приходит.
    Last edited by zerocold; 07-05-2020, 19:23.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    А почему банально не сделать скрипт возвращающий желаемый json с последовательным вызовом curl и передачей токена от одного вызова к другому?
    и забиксом вызывать скрипт, получать json и парсить его.
    Откуда желание использовать именно http агент ?
    Вы правильно заметили - http агент делает один «запрос» У вас же задачка двухходовая. Так и реализовывайте ее подходящими средствами....
    Last edited by Hamardaban; 07-05-2020, 20:08.

    Comment

    • zerocold
      Junior Member
      • Dec 2017
      • 15

      #3
      Originally posted by Hamardaban
      А почему банально не сделать скрипт возвращающий желаемый json с последовательным вызовом curl и передачей токена от одного вызова к другому?
      и забиксом вызывать скрипт, получать json и парсить его.
      Откуда желание использовать именно http агент ?
      Вы правильно заметили - http агент делает один «запрос» У вас же задачка двухходовая. Так и реализовывайте ее подходящими средствами....
      Не ищу легких путей...) + неопытность. Забыл про внешние проверки. А использование HTTP Agent казалось логичным решением - так уже делал в другом случае и работало, но здесь не сработало т.к. в данном случае это ограничение конкретного api. Но куда деваться, уже пишу скрипт. Скрипт скину позже когда закончу.

      Спасибо.

      Comment

      • zerocold
        Junior Member
        • Dec 2017
        • 15

        #4
        Скрипт для vCloud (пример)
        https://vdc-repo.vmware.com/vmwb-rep...s/GET-Vdc.html

        Code:
        #! /bin/bash
        token=$(curl -s -i -k -H "Accept:application/*+json;version=32.0" -u '[I]USER[/I]@[I]domen[/I]:[I]1Password[/I]' -X POST https://[I]yous.site[/I]/api/ | grep x-vcloud-authorization | awk $'{print $2}')
        curl -s -k -H "Accept:application/*+json;version=32.0" -H "x-vcloud-authorization:${token}" -X GET https://[I]yous.site[/I]/api/$1/$2
        Использование в командной строке (пример):
        Code:
        ./vcloudapi.sh vdc 3d3аd5ddb-bdsd1-4320-b740-f2311ed60a45e0 | jq -r '.computeCapacity.cpu.used'
        Использование в элементе данных https://www.zabbix.com/documentation...types/external
        ключ
        vcloudapi.sh[vdc, 3d3аd5ddb-bdsd1-4320-b740-f2311ed60a45e0]

        + пердобработка JSONPath
        $.computeCapacity.cpu.used
        Last edited by zerocold; 08-05-2020, 07:41.

        Comment

        Working...