Ad Widget

Collapse

Отправка последнего значения элеменов д&

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • zolotykh
    Junior Member
    • Nov 2016
    • 6

    #1

    Отправка последнего значения элеменов д&

    Доброго времени суток! Я новичок в Zabbix, и возникла необходимость отправлять последние значения двух элементов данных с помощью sh скрипта. В скрипт должны передаваться именно 2 числовых параметра из соответствующего элемента данных (например, send.sh 10 12). Числовые значения в элементах данных (для удобства назовем их ЭД1 и ЭД2) поступают по SNMP. Возник вопрос, как отправлять последние значения (на момент отправки) ЭД1 и ЭД2 в определенное число месяца и время (например, 25 числа в 10.00), при этом значения должны быть переданы на вход sh скрипта. Возможно ли такое реализовать?
  • derifgig
    Junior Member
    • Nov 2016
    • 12

    #2
    Возможно передать 1 значение на сервер для 1-го ключа.
    Но в скрипте у Вас можно N значений для N ключей.

    Пример:
    #!/bin/sh
    ZABBIX_SENDER=/usr/local/bin/zabbix_sender
    ZABBIX_CONF=/usr/local/etc/zabbix22/zabbix_agentd.conf

    send2zabbix() {
    KEY=$1
    VALUE=$2
    $ZABBIX_SENDER -c $ZABBIX_CONF -k $KEY -o $VALUE
    }

    send2zabbix exim.received $1
    send2zabbix exim.receivedbytes $2
    send2zabbix exim.rejected $3
    send2zabbix exim.errors $4

    Comment

    • zolotykh
      Junior Member
      • Nov 2016
      • 6

      #3
      Но, насколько я понял, это отправка на другой заббикс сервер, а у меня уже есть свой sh, который на сайт отправляет значения GET-методом. Не понятно, как этот скрипт подключить к самому Заббиксу, и чтобы при этом он отрабатывал в определенное время, извлекая из базы последнее значение.

      Comment

      • derifgig
        Junior Member
        • Nov 2016
        • 12

        #4
        потерял ход мыслей...

        1.есть клиент забикса (не важно он на сервере забикса или нет).
        2.он должен в какой-то момент време отправить значения на забикс сервер.
        3. значений надо отправить n

        верно?

        Comment

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

          #5
          Я понял автора темы с точностью до наоборот: нужно, чтобы в определённый момент запускался бы скрипт, который каким-то образом получит от Zabbix-сервера последние (на этот момент) значения для двух разных элементов данных и что-то с ними сделает (отправит куда-то дальше). И вопрос состоит в том, как эти значения скрипту предоставить.

          Если я понял правильно, то пусть автор это подтвердит (а заодно укажет хотя бы версию своего Zabbix-сервера) - постараемся накидать какие-то варианты.

          Comment

          • derifgig
            Junior Member
            • Nov 2016
            • 12

            #6
            Автора!!! Автора!!! если ему это нужно

            Comment

            • zolotykh
              Junior Member
              • Nov 2016
              • 6

              #7
              Originally posted by kos

              Если я понял правильно, то пусть автор это подтвердит (а заодно укажет хотя бы версию своего zabbix-сервера) - постараемся накидать какие-то варианты.
              Да, Вы все правильно поняли, именно это и нужно. Версия Заббикса 3.2.1.

              Comment

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

                #8
                Originally posted by zolotykh
                Да, Вы все правильно поняли, именно это и нужно. Версия Заббикса 3.2.1.
                Тогда первый вариант - это пускать Ваш скрипт совершенно независимо от Zabbix-а (например, по cron-у), а из скрипта лазить к серверу Zabbix за нужными значениями через Zabbix API. Но я сам опыта работы с этими API не имею, дальше не подскажу (хотя знаю, что народ ими активно пользуется).

                Другой вариант - сделать так, чтобы Ваш скрипт запускался самим Zabbix-сервером как результат срабатывания триггера. Тут основная идея такая:
                • делаем фиктивный элемент данных, который опрашивается сервером в нужное Вам время. Он нужен только чтобы задать расписание работы скрипта;
                • на этот фиктивный элемент данных навешиваем такой же фиктивный триггер, который будет срабатывать всегда при получении нового значения фиктивного элемента данных. Чтобы он не висел всегда, мозоля глаза, можно его гасить по тайм-ауту (например, используя функцию nodata() для этого элемента данных);
                • в тот же триггер добавляем фиктивное упоминание нужных Вам элементов данных, ради которых всё затевалось. Это упоминание должно быть сформулировано так, чтобы не влиять на остальную работу триггера (т.е. использовать функции с условиями, которые выполняются всегда, например: count(#1)>0);
                • заключительный аккорд: создаём действие (Action), которое при срабатывании данного триггера будет запускать Ваш скрипт. И в этом действии при вызове скрипта можно будет ссылаться на последние элементы данных, используя макросы {ITEM.VALUE<1-9>} (в том порядке, как они идут в триггере).

                Т.е. триггер будет иметь вид вроде такого:
                Code:
                {Host:dummy_item.nodata(30)}=0 and
                {Host:needed_item1.count(#1)}>0 and
                {Host:needed_item2.count(#1)}>0
                В таком случае триггер будет срабатывать при получении любого нового значения в элемент данных dummy_item и гаситься через полминуты после этого. А в действии на этот триггер последние значения элементов данных needed_item1 и needed_item2 будут доступны как {ITEM.VALUE2} и {ITEM.VALUE3}.

                Comment

                • derifgig
                  Junior Member
                  • Nov 2016
                  • 12

                  #9
                  + за Вариант: Cron + Zabbix API

                  Comment

                  • glebs.ivanovskis
                    Senior Member
                    • Jul 2015
                    • 237

                    #10
                    Поскольку речь идёт про скрипт, а там поддерживаются макросы вида {host:item.func()}, то не обязательно в триггере упоминать те два айтема, значения которых надо отправлять. Даже проверку времени можно делать в самом триггере с помощью функций timeofday(), dayofweek(), dayofmonth(). А в команде будет просто:
                    Code:
                    script.sh "{host1:item1.last()}" "{host2:item2.last()}"
                    В остальном я полностью поддерживаю Kos'а.

                    Comment

                    • zolotykh
                      Junior Member
                      • Nov 2016
                      • 6

                      #11
                      Originally posted by kos
                      Тогда первый вариант - это пускать Ваш скрипт совершенно независимо от zabbix-а (например, по cron-у), а из скрипта лазить к серверу zabbix за нужными значениями через zabbix api.
                      Спасибо, разобрался с api, это то, что было нужно.

                      Comment

                      Working...