Ad Widget

Collapse

HTTP Agent, LLD, авторизация (Trassir)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • M.Hamster
    Junior Member
    • May 2021
    • 2

    #1

    HTTP Agent, LLD, авторизация (Trassir)

    Всем привет!

    Не нашел в библиотеке подходящего для меня шаблона под Trassir.
    Поэтому пришлось писать custom LLD правило.
    Споткнулся вот на чём: Трассир отдаёт список каналов (то, что меня интересует для мониторинга) в виде json авторизованному пользователю. Авторизация происходит через логин/пароль.
    Выдержка из документации Trassir:
    Пример запроса с указанием логина\пароля произвольного пользователя:
    https://192.168.1.200:8080/login?use...word=987654321
    ... ответ будет иметь ... вид:
    { "success" : 1, "sid" : "e03qD0eg" }
    Я авторизовался "ручным запросом" и сохранил sid в виде пользовательского макроса {$TRASSIR_SID} на нужном мне хосте.
    Далее просто запрашиваю через http-агента что-то типа:
    https://192.168.1.200:8080/channels?sid={$TRASSIR_SID}
    и оно отдаёт мне json с нужными наборами данных. Всё работает. Я прописал шаблоны итемов/триггеров и теперь все "дискаверится" и "триггерится", но я не понял как тут можно нормально работать с такого плана авторизацией без костылей? Т.е. хочется сохранить в макросах логин/пароль и сделать так, чтобы sid автоматом генерился и подставлялся для использования при LLD и для апдейта итемов.

    Есть best practices на этот счёт?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    К сожалению, это проблема, которая постепенно решается, но очень уж постепенно.

    Дело в том, что для данной задачи нужно писать многошаговый сценарий, когда на первом шаге выполняется аутентификация (передаются логин/пароль в обмен на некий SID или токен, который используется в последующих запросах), на следующем шаге - непосредственно получение данных, а в идеале - ещё и logout в конце.
    Однако, HTTP-агент (пока?) не поддерживает многошаговые сценарии. Их поддерживают веб-проверки (web-checks), но там другая проблема: нельзя вернуть результат запроса (можно проанализировать только на предмет работает/не работает, плюс некоторые встроенные метрики вроде кода ответа или времени отклика).

    Начиная с версии 5.2, появился новый тип проверок: элемент данных типа "скрипт". Реально это кусок кода на JavaScript, с помощью которого можно реализовать всё, что для данной задачи нужно; но:
    • как сказано выше, доступно только с версии 5.2 (т.е. если вы, как и мы, сидите на LTS-версиях, то надо решать только с помощью внешних скриптов);
    • до сих пор документация об этом не переведена на русский язык.

    Comment

    • M.Hamster
      Junior Member
      • May 2021
      • 2

      #3
      Originally posted by Kos
      Начиная с версии 5.2, появился новый тип проверок: элемент данных типа "скрипт". Реально это кусок кода на JavaScript, с помощью которого можно реализовать всё, что для данной задачи нужно; но:
      • как сказано выше, доступно только с версии 5.2 (т.е. если вы, как и мы, сидите на LTS-версиях, то надо решать только с помощью внешних скриптов);
      • до сих пор документация об этом не переведена на русский язык.
      Ясно-понятно. Как раз недавно переехали на 5.2. Документация на английском даже лучше ). Посмотрю при случае на тип "скрипт". Перепишу и, может быть, оформлю шаблоном, если время будет. Пока не горит - sid портится только при перезагрузке и аптаймы большие. Так что вопрос не срочный, но хочется, конечно, сделать "красиво".

      Спасибо!

      Comment

      Working...