Ad Widget

Collapse

Глюк при снятии данных в powershell в заббиксе 3.4

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ole-van-de
    Junior Member
    • Nov 2017
    • 11

    #1

    Глюк при снятии данных в powershell в заббиксе 3.4

    Добрый день. Периодически Zabbix не хочет снимать данные с хоста (windows), если они снимаются через powershell. Причем глюк как на работе так и на домашней тестовой машине (Zabbix 3.4 на ubuntu 1604 LTS). То есть простейший сценарий - снимается один единственный параметр (в скрипте powershell одна строчка write-host 10, то есть показывать значение 10). Соответственно в конфиге агента прописан один параметр, а на заббиксе создан один элемент. Стоит что то изменить, например название лемента с string.a1 на string.a2 (соотв меняю и название ключа в item и перегружаю заббикс агент) и ничего не работает, потом возвращаю обратно и тоже ничего не работает. потом вдруг начинает работать
    и ощущение что заббикс живет своей жизнью. Надеюсь в четвертой версии этот глюк побороли?

    Вот конкретно:

    Скрипт: write-host 10
    Конфиг: UserParameter=string.a1,powershell.exe C:\Scripts\test.ps1 $1
    Элемент заббикса: string.a1 (тип - целое числовое либо с плавающей точкой, когда работало то и с таким и с таким типом данных). Но вот когда изменишь название ключа, то бред.

    Несколько дней уже эксперементирую. Кстати у меня предположение, что нельзя менять что то быстро в заббиксе, типа там глобальная информация в базе данных не сразу меняется (я не про секунды в элементах, конечно).

    И опять же, где в документации как снять несколько параметров, string.a1 и string.a2 Такое ощущение что это скрывается. Я перечитал всё что мог в документации. Одни тайны!
    Хотя тут не документация виновата, а нет толковых форумов, мало информации про заббикс. Медленно реагируют на вопросы, ничего оперативно невозможно решать, так же дело обстоит на форуме STACK OVERFLOW на русском в разделе Zabbix, никто там вообще не отвечает (то ли дело раздел php либо powershell, стоит только заикнуться и тебе уже сотня помощников отвечает и днем и ночью, конечно про ночь это перебор ).
    Last edited by ole-van-de; 29-09-2018, 21:49.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Как выглядит ключ элемента данных, с которым Вы экспериментируете? string.a1 или же string.a1[...]?
    Какой тип для него определён ("Zabbix agent" или "Zabbix agent (active)")?
    Приложили бы скриншот с определением этого элемента данных - было бы нагляднее.
    Как долго ждёте после внесения изменений, прежде чем делать вывод, что "ничего не работает"?
    Что именно непонятно в документации и на что Вам тут не ответили?

    Извините, но Вашу фразу
    как снять несколько параметров, string.a1 и string.a2
    я не понял - поясните, пожалуйста, что именно Вы хотите.
    Если хотите иметь один ключ с параметром, в котором можно передавать Вашему скрипту разные значения, то это делается так:
    • в конфиге агента в строке UserParameter указываете после ключа звёздочку в квадратных скобках:
    UserParameter=string.a1[*],powershell.exe C:\Scripts\test.ps1 $1 $2 $3
    • в настройках элемента данных указываете нужные параметры в квадратных же скобках:
    string.a1["parameter one","parameter two"]
    • ждёте немного, чтобы увидеть результат. Сколько именно - зависит от того, какой выставлен интервал опроса, а также от того, собирается этот элемент данных в пассивном или в активном режиме. Но, как правило, не меньше минуты.
    • на агенте при вызове скрипта ему будут передаваться ваши параметры. Вместо "$1", указанного в строке UserParameter, будет подставляться первый параметр из квадратных скобок, вместо "$2" - второй и так далее. Остальное зависит от Вашего скрипта (как я понимаю, в данный момент он параметры игнорирует и всегда выдаёт в stdout константу "10").
    • если что-то работает не так, как ожидается, то можно на агенте включить отладку (выставить "DebugLevel=4") и смотреть по логу, что там происходит.

    Comment


    • ole-van-de
      ole-van-de commented
      Editing a comment
      Спасибо, хорошоий полный ответ. Сейчас попробую снять несколько параметров.
      -zabbix агент пассивный.
      -у меня стоит интервал опроса 5 sec, а скрипт отрабатывает за 1 сек при проверке. Я говорил не про интервал опроса, а про изменение названия ключа элемента (как в файле конфига заббикса на агенте так и в заббиксе) и ждал и минуту и больше после перезапуска агента.
  • ole-van-de
    Junior Member
    • Nov 2017
    • 11

    #3
    А что нужно происыать в shell скрипте? Сейчас у меня простое write-host 10. А как мне выудить значение переменной? Поянсняю:

    Допустим есть скрипт powershell в котором я пишу
    $a=10
    $b=12

    Сразу вопрос, нужен ли заббиксу write-host? то есть $a=10; write-host $a и так же для $b $b=10; write-host $b

    В конфиге заббикс агенте пишу (первые две строчки пропускаем):

    Server=vm-zabbix-01
    Timeout=30
    UserParameter=string.a,powershell.exe -nologo C:\scripts\test.ps1 "$a"
    UserParameter=string.b,powershell.exe -nologo C:\scripts\test.ps1 "$b"

    И конечно же здесь где то синтакс ошибка, потому что не работает.

    И один из ключей на заббиксе для $a (скриншот):
    Attached Files
    Last edited by ole-van-de; 01-10-2018, 09:53.

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #4
      Единственное, что вам может понять как все работает - DebugLevel=4. Или исходники почитать.

      Comment

      • ole-van-de
        Junior Member
        • Nov 2017
        • 11

        #5
        За - DebugLevel=4 спасибо и она мне сейчас не поможет. Про исходники - их мало либо нифига нет. Проблема втом что примеров с powershell в самой документации заббикс нет. как они работают в связке -остается только догадываться, например что надо писать write-host $a как уже сейчас выяснил. и до сих пор не могу передать несколько параметров из powershell. это пздец просто какой-то. В Microsoft документации дают сразу несколько примеров на любое действие.
        Last edited by ole-van-de; 01-10-2018, 11:22.

        Comment

        • ole-van-de
          Junior Member
          • Nov 2017
          • 11

          #6
          Вот какие вещи еще обнаружил.
          После изменнения названия ключа в конфиге заббикса, напр с name.name1 на name.name2 , а главное перезапуска службы zabbix на windows машине, нужно ждать не менее 4 минут, пока снова начнут поступать данные на заббикс. И Это, внимание не про время, которое снимает данные (у меня стоит снимать раз в 5 сек).
          Второе, название ключа в конфиге должно быть из нескольких состовляющих, то есть типа name.name1 (соотв такоей же ключ и в Элементе на заббиксе). Нельзя просто name1.
          Last edited by ole-van-de; 01-10-2018, 13:04.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #7
            Даже и не знаю, что сказать. Пользуюсь передачей данных в PoSH и обратно, затруднений не испытываю. Вот, для примера можете поразбирать: https://github.com/zbx-sadman/WSUS

            Comment

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

              #8
              Ну, не знаю. Для меня, честно говоря, странны претензии к документации Zabbix-а в том, что у них мало примеров для работы со скриптами на PowerShell-е. Потому как для Zabbix-а совершенно всё равно, на каком языке Вы пишете свою программу, которая запускается в качестве скрипта - на Си-плюс-плюсе, Баше, Перле или джаве. Главное - чтобы эта программа что-то писала в stdout. Поэтому вряд ли стОит ожидать от писателей документации по Zabbix-у учебников программирования на всевозможных языках.

              Я вот, например, имею некоторый опыт написания батников и скриптов на sh/bash и awk (мне этого пока хватало), но, к сожалению, в PowerShell-е не силён,.

              А для того, чтобы получить более-менее дельный совет, попробуйте при описании проблемы указывать следующие моменты:
              • что Вы делаете;
              • что при этом ожидаете получить;
              • что получаете реально.
              Потому как сказать: "у меня ничего не работает" - неинформативно. Моё подспудное желание ответить на это: "А у меня - работает", но понимаю, что это тоже будет неконструктивно.

              Второе, название ключа в конфиге должно быть из нескольких состовляющих, то есть типа name.name1 (соотв такоей же ключ и в Элементе на заббиксе). Нельзя просто name1.
              Смею Вас уверить, это не так. Вполне нормально работают и имена ключей из одного компонента.

              После изменнения названия ключа в конфиге заббикса, напр с name.name1 на name.name2 , а главное перезапуска службы zabbix на windows машине, нужно ждать не менее 4 минут, пока снова начнут поступать данные на заббикс.
              Делюсь ещё одним приёмом. Если отлаживаете подобные вещи, то лучше вообще ничего не ждать, а использовать утилиту zabbix_get, запускаемую с той же машины, где у вас крутится сервер Zabbix. Она формирует точно такие же запросы к агенту, какие делает сервер для проверки элементов данных в пассивном режиме, и показывает возвращаемый результат. Когда этим результатом будете удовлетворены - тогда уже можно будет настраивать проверки по расписанию через веб-интерфейс Zabbix-а.

              Ну и повторю дважды звучавшую мысль про включение отладочного вывода на агенте.

              Comment

              Working...