Ad Widget

Collapse

В элементе данных со скриптом можно получить доступ к другому элементу данных?

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • kostushko
    Junior Member
    • Jul 2018
    • 16

    #1

    В элементе данных со скриптом можно получить доступ к другому элементу данных?

    Здравствуйте

    Есть апи, который выдает ключ авторизации на 1 час, а данные хотелось бы снимать намного чаще. Поэтому есть смысл получать ключ авторизации в отдельном элементе данных, который будет обновляться раз в час, а необходимые данные с ключом авторизации запрашивать уже чаще отдельным элементом данных. Можно как-то пробросить в java script значение другого элемента данных?
  • Answer selected by kostushko at 23-12-2022, 12:21.
    Semiadmin
    Senior Member
    • Oct 2014
    • 1625

    В 6.* можно и без API. Сделать 2-й айтем вычсляемым и получать им последнее значение первого. А все веб-запросы - через js-препроцессинг 2-го айтема.

    Comment

    • Kos
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • Aug 2015
      • 3404

      #2
      Нет, если речь идёт, скажем, о препроцессинге, то без извращений (в виде обращений по API к истории) сделать нельзя.
      Но можно сделать по-другому (кажется, где-то на blog.zabbix.com была даже статья на эту тему):
      • одним элементом данных (с интервалом раз в час) проверять валидность ключа авторизации (видимо, какого-то тикета);
      • в случае невалидности - в качестве реакции на срабатывание триггера сделать Action, который скриптом будет запрашивать новый тикет и через Zabbix API сохранять его в качестве значения макроса (на уровне хоста или глобального);
      • остальные элементы данных просто пользуются этим макросом.

      Comment

      • kostushko
        Junior Member
        • Jul 2018
        • 16

        #3
        Спасибо, идею понял, попробую

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #4
          В 6.* можно и без API. Сделать 2-й айтем вычсляемым и получать им последнее значение первого. А все веб-запросы - через js-препроцессинг 2-го айтема.

          Comment

          • Kos
            Senior Member
            Zabbix Certified SpecialistZabbix Certified Professional
            • Aug 2015
            • 3404

            #5
            Originally posted by Kos
            кажется, где-то на blog.zabbix.com была даже статья на эту тему
            Вот, нашёл эту статью (ссылка).
            Правда, нужно учесть, что она писалась для версий Zabbix 5.0/5.2 и с тех пор немного устарела:
            • методы работы с HTTP-запросами в JavaScript были переименованы (см. последний комментарий);
            • в самом Zabbix появились постоянные токены, которые не надо постоянно продлевать, т.е. само прямое предназначение этой статьи потеряло смысл; но её можно использовать как пример того, как в принципе можно делать подобные вещи.

            Comment

            • kostushko
              Junior Member
              • Jul 2018
              • 16

              #6

              Originally posted by Semiadmin
              В 6.* можно и без API. Сделать 2-й айтем вычсляемым и получать им последнее значение первого. А все веб-запросы - через js-препроцессинг 2-го айтема.
              В моем случае так не получится, там в api надо слать запрос с определенным заголовком, получить этот заголовок можно средствами zabbix а вот подставить в поле запроса уже не получается, макросы значений в полях запроса не раскрываются.

              Comment


              • Semiadmin
                Semiadmin commented
                Editing a comment
                Не очень понял, в чем проблема. Первый айтем сохранит токен или что там еще как текстовое значение. Второй (вычисляемый) прочитает его и в js-препроцессинге этот токен будет браться из переменной value. И можно подставлять в запрос как угодно. Вот в версиях до 6.0 такое, скорее всего, не выйдет, т.к. вычисляемый сломается, получив текст.

              • kostushko
                kostushko commented
                Editing a comment
                Да, действительно получилось, не сразу понял логику. Думал препроцессинг на js урезанный поддерживает только что-то вроде арифметики, но не запросы как при использовании скрипта - ошибался.
            • kostushko
              Junior Member
              • Jul 2018
              • 16

              #7
              Originally posted by Kos
              Вот, нашёл эту статью (ссылка).
              Правда, нужно учесть, что она писалась для версий Zabbix 5.0/5.2 и с тех пор немного устарела:
              • методы работы с HTTP-запросами в JavaScript были переименованы (см. последний комментарий);
              • в самом Zabbix появились постоянные токены, которые не надо постоянно продлевать, т.е. само прямое предназначение этой статьи потеряло смысл; но её можно использовать как пример того, как в принципе можно делать подобные вещи.
              Спасибо, статью прочел, вроде понял, через api меняется содержимое пользовательского макроса, в этот макрос записывается ключ.

              Comment

              Working...