Ad Widget

Collapse

Выполнить кастомный срипт на агенте и обработать результат

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • linux.org
    Junior Member
    • Sep 2018
    • 2

    #1

    Выполнить кастомный срипт на агенте и обработать результат

    Доброго времени суток, есть sh скрипт который возвращает данные в виде:
    server1:OK
    server2:OK
    как я могу в zabbix обработать результат скрипта ,и если будет:
    server1:OK
    server2:NEOK
    То zabbix отправил на почту server2 NEOK. Это вообще возможно? документация в заббикс мне вообще не помогает , сам zabbix настроен, на сервере где должен выполнятся скрипт настроен и рабочий забикс агент,как скрипт через zabbix запустить знаю,не могу понять как обработать результат и отправить нужные данные. У кого есть идеи? может кто то уже делал похожее?
    Last edited by linux.org; 17-09-2018, 16:38.
  • eldarko
    Junior Member
    • Sep 2018
    • 5

    #2
    Привет.

    Я бы завел UserParameter (https://www.zabbix.com/documentation...userparameters).

    Скрипт твой лучше пусть возвращает 0 (OK) или 1 (NEOK).

    Дальше делаешь целочисленный item по этому UserParametrу.

    Дальше делаешь триггер, который срабатывает, если last() значение 1 (т.е. NEOK).

    Comment


    • linux.org
      linux.org commented
      Editing a comment
      "server1:OK
      server2:OK"

      в том то и дело что нужно понимать на каком из серверов возник NEOK, то есть в любом случае придется что бы скрипт возвращал еще и имся сервера,я же прав?
  • Saslawski
    Member
    • Jul 2014
    • 49

    #3
    Самый простой вариант, отправлять ответы на сервер через zabbix_sender. Если в Zabbix есть сервера server1 и server2 - использовать в скрипте
    zabbix_sender -z zabbixhost -s "server1" -p 10051 -k status_custom_sh -o "OK" zabbix_sender -z zabbixhost -s "server2" -p 10051 -k status_custom_sh -o "NOTOK" Создать на Хостах server1 и 2 Итемы типа Zabbix trapper с названием status_custom_sh и Тригер на выражение NOTOK.

    Comment

    • eldarko
      Junior Member
      • Sep 2018
      • 5

      #4
      Давайте разберемся с составом узлов.
      Есть сервер с заббиксом.
      Есть нода (железка, виртуалка и т.п.) server1, на которой работает агент.
      И нода server2, на которой агент. Так?

      Если так, то где возникло NEOK будет понятно из сообщения триггера. Там есть переменная, говорящая о том, на каком узле произошла ошибка.

      Comment

      • linux.org
        Junior Member
        • Sep 2018
        • 2

        #5
        и так, я создал узел сети, назвал его по имени хоста, дальше создал "Элемент данных(item)" там поставил:
        Тип информации текст
        Ключ testSys
        Тип zabbix agent
        Поставил галочку активирован
        имя SystemCheck

        Дальше создал тригер
        Имя SystemCheck
        выражение {мой хостнейм:testSys.str(ERROR)}=1
        поставил галку активирован,выбрал "чрезвычайная"

        дальше на сервере которой мониторим,создал файл /etc/zabbix/zabbix_agentd.conf.d/testSys.conf
        в него записал это:
        UserParameter=testSys,/etc/zabbix/scripts/testSys.py
        testSys.py скрипт при запуске ждет 12 секунд и возвращает json, в содержимом которого есть слово error, по идее как я понял должна была "орать" моя проверка,но что то никак.что я делаю не так?

        Comment

        • eldarko
          Junior Member
          • Sep 2018
          • 5

          #6
          Внешне все настроено правильно.

          Попробуйте просмотреть логи агента и сервера на предмет:

          1. Ошибок получения этого айтема
          2. Срабатывания триггера

          при необходимости включите дебажные логи. Сервер, например, пишет все получаемые айтемы.

          И проверьте работоспособность UserParameter testSys через утилиту zabbix_get.

          Comment


          • linux.org
            linux.org commented
            Editing a comment
            Выполнил на хосте где сам заббикс сервер
            zabbix_get -s айпихоста-p 10050 -k "testSys"
            ZBX_NOTSUPPORTED

            Выполнил на хосте с агентом
            zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf.d/testSys.conf -t testSys
            testSys [m|ZBX_NOTSUPPORTED]

            с чем это может быть связано?
        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #7
          Originally posted by linux.org
          что я делаю не так?
          Во-первых, похоже, что после редактирования конфиг-файла Zabbix-агента Вы его не перезапустили для перечитывания своей конфигурации.
          Во-вторых, тайм-аут на ответ агента, действующий по умолчанию, довольно короткий - 3-4 секунды. Если Ваш скрипт работает 12 секунд, то тайм-аут надо выставить хотя бы секунд 15 (максимально допустимое значение - 30). Выставляется также в конфиге агента, который, как было сказано, надо после этого перезапустить.
          В-третьих, если после этого zabbix_get со стороны сервера будет возвращать результат, а сервер всё равно будет показывать "Not supported", то нужно будет увеличить тайм-аут также и для сервера (который для этого тоже придётся перезапустить). Альтернатива - делать проверки в активном режиме (выставляя для элемента данных тип "Zabbix agent (active)"), либо, как предлагалось выше, засылать результат из скрипта с помощью утилиты zabbix_sender.

          Comment

          Working...