Ad Widget

Collapse

Проблема с обнаружением компьютеров.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Odil_tal
    Member
    • Jul 2016
    • 60

    #1

    Проблема с обнаружением компьютеров.

    Всем привет.
    На стороне zabbix клиентов в конфиг. файле прописана строка:
    Alias=mt:wmi.get[root\cimv2,select TotalPhysicalMemory from Win32_COMPUTERSYSTEM] для получения инфы об обёме памяти.
    Задача: обнаружить и распределить компьютеры по разным группам узлов сети. Например: компьютеры с ОЗУ 2Гб в одну группу, 4Гб в другую и т.д.
    В обнаружении прописываю диапазон адресов. Тип проверки: Zabbix agent, ключ mt.
    Теперь свобственно действия:
    Правило обнаружения = office
    Полученное значение <= 3221225472
    Состояние обнаружения = Доступен
    Тип сервиса = Zabbix агент
    Операции: Добавить в группы узлов сети: Memory2GB
    В итоге Zabbix ничего не обнаруживает.
    Где я ошибся? Подскажите пожалуйста.
    Last edited by Odil_tal; 12-07-2016, 14:50.
  • Odil_tal
    Member
    • Jul 2016
    • 60

    #2
    65 Viewing!!!
    Неужели я сложную задачку задал?

    Comment

    • sadman
      Senior Member
      • Dec 2010
      • 1611

      #3
      Да лентяи они, в этом всё дело.

      Comment

      • yukra
        Senior Member
        • Apr 2013
        • 1359

        #4
        Originally posted by sadman
        Да лентяи они, в этом всё дело.
        Воистину!

        По существу: смотрите в сторону metadata при авторегистрации, либо в сторону API (если хосты требуется "раскладывать" постоянно, а не только при регистрации).

        Comment

        • Odil_tal
          Member
          • Jul 2016
          • 60

          #5
          в сторону api

          Спасибо, что откликнулись. Я не давно стал изучать Zabbix, поэтому и вопросы у меня наверное "школьные". Попробовал через metadata - не получилось.
          Давайте я лучше напишу что именно от меня требует руководство.
          1. Компьютеры, находящиеся не в сети более 3-х дней собирать в отдельной группе.
          2. Те компьютеры, на которых свободное место на диск С < 10 Гб, либо также собирать в группу, либо оповестить через триггер. (Желательно второе).
          3. Распределить компьютеры по установленной ОЗУ по группам. (Memory_Volume2GB, Memory_Volume4GB и т.д.)
          Пока вот это основное. Если хоть одно мне подскажите как осуществить, то я думаю дальше справлюсь сам.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Проблема в том, что Zabbix не будет кидать существующие узлы из группы в группу. Во всяком случае я такой способности не встречал. В группу он может добавить только при авторегистрации. Для того, чтобы сработала авторегистрация, нужно чтобы узел не существовал в Zabbix.

            Таким образом:
            1) Через триггер ловить любой стабильно опрашиваемый item, который не выдавал значение на протяжении 3 дей (или суток, что вернее);
            2) Стоковый шаблон для Windows меряет место на дисках. Нужно только подправить значение, при котором будет срабатывать триггер;
            3) Если из компьютеров память не воруют, то всё верно - при авторегистрации. Метаданными или алиасом. Наверное стоит посидеть над логами четвертого уровня и выяснить, почему не происходит назначение группы новому узлу.

            Comment

            • Odil_tal
              Member
              • Jul 2016
              • 60

              #7
              Трое суток

              Отлично.
              Давайте с Вами всё разберём, если Вам не тяжело.
              У меня сейчас триггер {Workspace:icmpping[].last()}=0 проверяет "появление" компьютера в сети и его "исчезновение" в группе Workspace. Как я понимаю, необходимо добавить ещё один триггер для проверки 3-х суток и изменить выражение {Workspace:icmpping[].last()}=0. Но как мне указать на время 3-е суток в icmpping[].last() не могу понять. Или такую задачку надо через обнаружение делать?
              {Workspace:icmpping[].nodata(259200)}=1 - этот триггер правильный?
              Last edited by Odil_tal; 14-07-2016, 14:39.

              Comment

              • sadman
                Senior Member
                • Dec 2010
                • 1611

                #8
                Originally posted by Odil_tal
                для проверки 3-х суток
                ...
                Или такую задачку надо через обнаружение делать?
                Это не будет работать через обнаружение.

                с nodata() я особо не развлекаюсь, но думаю, что триггер правильный (за исключением того, что можно написать nodata(3d)), если не смущает следующее:
                Обратите внимание, эта функция отобразит ошибку в случае, если за указанный период в первом параметре:
                - нет данных и Zabbix сервер был перезапущен
                - нет данных и было завершено обслуживание
                - нет данных и элемент данных был добавлен или активирован снова
                В примерах так же написано, что "‘tick’ должен иметь тип ‘Zabbix trapper’’". Не со всеми типами работает что ли...

                Можно взять, например {host:agent.ping.max(N)} = 0. Т.е. если за N sec ни разу не было ответа 1 - значит выключено.

                Comment

                • Odil_tal
                  Member
                  • Jul 2016
                  • 60

                  #9
                  Триггер

                  Поставил такой вот триггер, чтобы узнать выходил ли комп. в сеть в последние 3 дня.
                  {Workspace:icmpping[].last()}=0 and {Workspace:icmpping[].nodata(259200)}=1
                  Теперь по второму вопросу. Если на диске С мало место (менее 20 Гб), то выдать сообщение.
                  {Workspace:vfs.fs.size[C:,free].last(0)}<20
                  Но триггер почему-то не выполняется.
                  В "Мониторинг"-"Триггеры"
                  состояние "ОК",
                  последнее изменение - "Никогда",
                  подтверждено - "нет событий"
                  Подскажите пожалуйста, что я сделал не так?
                  Или чтобы выражение vfs.fs.size[C:,free] работало надо какие-то манипуляции сделать?

                  Comment

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

                    #10
                    Originally posted by sadman
                    В примерах так же написано, что "‘tick’ должен иметь тип ‘Zabbix trapper’’". Не со всеми типами работает что ли...
                    Нет, со всеми. Это просто был пример применения, когда данные собираются не по инициативе сервера Zabbix, а по инициативе какого-то процесса со стороны контролируемой системы (когда отсылка этих тиков является критерием того, что работающий там процесс ещё живой - не остановлен, не помер, не завис и т.п.).
                    Originally posted by sadman
                    Можно взять, например {host:agent.ping.max(N)} = 0. Т.е. если за N sec ни разу не было ответа 1 - значит выключено.
                    Боюсь, что функции вроде min()/max() за период тоже могут выдать ошибку в случае, если за этот период данных вобще нет. В этом отношении гораздо безопаснее функция count(), которая возвращает осмысленное значение всегда. Для данного случая разумным было бы что-то вроде:
                    Code:
                    {host:icmpping.count(3d,1)} = 0
                    Другими словами, "если количество успешных пингов за последние три дня равно нулю".

                    Либо, как уже предлагалось:
                    Code:
                    {host:agent.ping.nodata(3d)} = 1
                    Разница в том, что "простая проверка" icmpping выполняется сервером, и результат (нолик или единичка) поступит всегда, жив "клиент" или нет. Поэтому можно спокойно проверять количество этих нулей либо единичек функцией count(), которая пересчитывается при приходе нового значения.
                    А проверка, вполняемая агентом (agent.ping), возвращает единички, когда агент жив, и не возвращает ничего, если он недоступен. Т.е. при недоступности агента не будет ни ноликов, ни единичек - новые значения вообще поступать не будут. Соответственно, нет повода пересчитывать значение триггера, если только он не содержит временнЫх функций вроде nodata()

                    Comment

                    • sadman
                      Senior Member
                      • Dec 2010
                      • 1611

                      #11
                      Originally posted by Odil_tal
                      Теперь по второму вопросу. Если на диске С мало место (менее 20 Гб), то выдать сообщение.
                      {Workspace:vfs.fs.size[C:,free].last(0)}<20
                      ...
                      Подскажите пожалуйста, что я сделал не так?
                      Или чтобы выражение vfs.fs.size[C:,free] работало надо какие-то манипуляции сделать?
                      Да, манипуляции нужны. Необходимо обратиться к руководству или подсмотреть использование в стоковых шаблонах:

                      vfs.fs.size[fs,<режим>]
                      Размер диска Размер диска в байтах
                      По поводу min/max/count и прочим триггерным фокусам Kos'у виднее, я в них лезу раз в пятилетку и с мануалом.

                      Comment

                      • aib
                        Senior Member
                        • Jan 2014
                        • 1615

                        #12
                        Originally posted by Odil_tal
                        Если на диске С мало место (менее 20 Гб), то выдать сообщение.
                        {Workspace:vfs.fs.size[C:,free].last(0)}<20
                        Но триггер почему-то не выполняется.
                        Как написано в инструкции,
                        Code:
                        vfs.fs.size[fs,<mode>]	Disk space in [B]bytes [/B]or in percentage from total.
                        Так что ваш триггер сработает, когда на диске будет меньше 20 байт свободного места.


                        Я использую другие триггеры. Типа:
                        Code:
                        {Template_lld:vfs.fs.size[{#FSNAME},pfree].last()}<10 and {Template_lld:vfs.fs.size[{#FSNAME},free].last()}<1073741824
                        Он срабатывает, когда свободное место на диске меньше 10% ИЛИ 1 гигабайта
                        Sincerely yours,
                        Aleksey

                        Comment

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

                          #13
                          Originally posted by aib
                          Я использую другие триггеры. Типа:
                          Code:
                          условие1 and условие2
                          Он срабатывает, когда свободное место на диске меньше 10% ИЛИ 1 гигабайта
                          Насколько я в курсе, and - это, всё же, И, а не ИЛИ
                          Т.е. такой триггер сработает, когда будут выполнены ОБА условия.

                          Comment

                          • Odil_tal
                            Member
                            • Jul 2016
                            • 60

                            #14
                            emplate_lld

                            Я использую другие триггеры. Типа:
                            Code:
                            {Template_lld:vfs.fs.size[{#FSNAME},pfree].last()}<10 and {Template_lld:vfs.fs.size[{#FSNAME},free].last()}<1073741824
                            Он срабатывает, когда свободное место на диске меньше 10% ИЛИ 1 гигабайта[/QUOTE]

                            Если можно, то сам шаблон Template_lld тоже добавьте пожалуйста, а то на Ваше выражение даёт ошибку: "указан некорректный ключ элемента данных".
                            Я никак не могу понять ключ {#FSNAME}. Вместо него мне С:/ писать или что?

                            Comment

                            • sadman
                              Senior Member
                              • Dec 2010
                              • 1611

                              #15


                              ^F => {#FSNAME}

                              Comment

                              Working...