Ad Widget

Collapse

система оповещения на базе zabbix

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • djin59
    Member
    • Jul 2023
    • 86

    #1

    система оповещения на базе zabbix

    Подскажите пожалуйста возможно (почему-то я на 99% уверен что возможно ) сделать следующее с помощью zabbix???
    1)Создать способ оповещения который будет отправлять Zabbix agent , параметр = Сообщение
    2) Zabbix agent получая этот запрос будет выводить окно с отображением сообщения
    3) пользователь после нажатия на кнопку ознакомлен (т.е. его zabbix agent) отправляет серверу что сообщение (как-то идентифицируя сообщения допустим ID Mess ) прочтено пользователем

    ну или хотя бы чтобы агент просто получал сообщение и отображал его в окне поверх всех окон
    Last edited by djin59; 15-11-2023, 08:52.
  • Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    #2
    Агент может вызывать команды шела (cmd) парочкой способов.
    И нетрудно написать вызов окошка...
    НО! я не видел чтоб кому нибудь удалось заставить службу (запущенную от пользователя1) провзаимодействовать с рабочим столом другого залогоненного пользователя.
    Найдете как сделать - опубликуйте тут.

    Comment


    • djin59
      djin59 commented
      Editing a comment
      И нетрудно написать вызов окошка... а можно подробнее ?
      рабочим столом другого залогоненного пользователя. ?? а зачем другого пользователя

      может я не так выразился ... в кратце нужно чтобы я с сервера отправил через способ оповещения сообщение пользователю.... хотелось бы конечно идентификацию о прочтении
      через powershell можно к примеру вывести сообщение и получить ответ
      Last edited by djin59; 15-11-2023, 17:24.
  • djin59
    Member
    • Jul 2023
    • 86

    #3
    Вот тут к примеру тут вывод и ответ (нажатие на кнопку)

    Comment

    • Hamardaban
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • May 2019
      • 2713

      #4

      И нетрудно написать вызов окошка... а можно подробнее ?
      рабочим столом другого залогоненного пользователя. ?? а зачем другого пользователя

      может я не так выразился ... в кратце нужно чтобы я с сервера отправил через способ оповещения сообщение пользователю.... хотелось бы конечно идентификацию о прочтении
      через powershell можно к примеру вывести сообщение и получить ответ​
      —на первую реплику вы сами нашли ответ
      —про вторую видимо еще не поняли - поясню: вы хотели чтобы zabbix_agent что-то сделал на компе? агент в Windows работает как служба (даже не просто программа) запущенная от имени пользователя (обычно Система) - а пользователь работает в другом сеансе….

      И переходим к последнему: «сообщение» нужно не только уметь отправлять, но и принимать и обрабатывать.
      для начала определитесь с тем кто/что на компе пользователя примет и отобразит сообщение. От этого делайте способ оповещения. хоть «net send» используйте.

      Comment


      • djin59
        djin59 commented
        Editing a comment
        net send не актуален! и отключен
        по идее msg USER MESSAGE
        USER я могу определить в скрипте через Invoke-Command
    • Hamardaban
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • May 2019
      • 2713

      #5
      удачи. как сделаете - не сочтите за труд поделиться своим шедевром со всем сообществом
      dixi

      Comment

      • djin59
        Member
        • Jul 2023
        • 86

        #6
        net send не актуален! и отключен
        по идее msg USER MESSAGE
        USER я могу определить в скрипте через Invoke-Command
        мне понятно что я должен сделать оповещение тип скрипт с параметрами определенными типа: message
        мне понятно что нужно научить заббикс агента выполнять скрипт оповещения который выдернет предварительно сеанс пользователя АКТИВНЫЙ и отправит

        мне не понятно как связать скрипт с действием агента
        что я должен в USERPARAMETR конфига забикса писать




        когда мы хотим от агента item то я в конфиге сделаю ITEMEXAMPLE после этого запуск скрипта какого-то, после чего на сервере в шаблоне узла поймаю этот ITEMEXAMPLE

        но как быть с оповещением , как оповещение заставить выполнить через заббикс агент скрипт с параметрами полученными от оповещения (т.е. отправляем сообщение и ip агенту в качестве параметра, агент получая этот параметр инициирует выполнение скрипта в котором через Invoke-Command получает активный сеанс на этом ip затем к примеру MSG LOGIN MESSAGE )​

        поделимся обязательно только реализовать бы... а то без Вашей помощи энтузиазм может резко погаснуть

        Comment

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

          #7
          Originally posted by djin59
          мне не понятно как связать скрипт с действием агента
          Как раз на этот вопрос ответить довольно просто. Нужно настроить действие, которое будет срабатываить по интересующему вас триггеру (например, пометив этот триггер каким-то тегом и указав этот тег в условии действия), а в операции действия указать скрипт, выполняемый на стороне агента.
          Как именно это настраивается - зависит от версии Zabbix (к сожалению, дурной традицией стало задавать вопрос, не упоминая версии Zabbix - типа, догадайся сам). Например, для версии 6.0 (текущая LTS версия) это описано тут (ссылка): если в двух словах, то сначала через Administration -> Scripts оформляется скрипт (с указанием выполняться на агенте), а затем на этот скрипт можно ссылаться в операции при настройке действия.

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

          Comment


          • djin59
            djin59 commented
            Editing a comment
            мне не нужен триггер, я сам ручками буду оповещать
            за версию прошу прощения она у нас если не ошибаюсь 6.0.18

            и еще интересно как обратится к ip хоста в перечне устройств на сервере чтобы его передать в качестве параметра...


            "Administration -> Scripts оформляется скрипт (с указанием выполняться на агенте) --- тут можно подробнее ? ................., а затем на этот скрипт можно ссылаться в операции при настройке действия"
            Last edited by djin59; 16-11-2023, 16:27.
        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #8
          djin59, пожалуйста, отвечайте отдельной репликой, а не комментарием к чужим репликам (это неудобно читать и очень трудно отслеживать).

          мне не нужен триггер, я сам ручками буду оповещать
          А каким образом вы собираетесь это делать?
          Хотя, в принципе, так тоже можно делать - в любом случае, нужно сначала оформить сам скрипт (см тут, но лучше свериться с английской версией документации - перевод этого раздела на русский на данный момент может быть неполным и/или устаревшим), а потом их можно вызывать в некоторых местах веб-интерфейса (см. самое начало этой страницы документации). Только скрипт должен отрабатывать быстро (в пределах тайм-аута агента). Другими словами, он не должен ждать реакции пользователя (который в ответ на высвеченное ему предупреждение должен нажать какую-то кнопку).

          Comment


          • djin59
            djin59 commented
            Editing a comment
            я пока так и не понял.... что ...как ...и т.п. послать агенту чтобы он отработал скрипт который будет лежать рядом с агентом и выводить тот скрипт с параметрами с заббикса....
            на примере items я понимаю как сделать а тут как пока не разобрался...
        • Kos
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • Aug 2015
          • 3404

          #9
          я пока так и не понял
          Я вижу, поэтому мне не в лом повторить:
          djin59, пожалуйста, отвечайте отдельной репликой, а не комментарием к чужим репликам (это неудобно читать и очень трудно отслеживать).​
          Теперь по делу. В некоторых местах веб-интерфейса Zabbix есть возможность ткнуть на конкретный хост, и тогда открывается контекстное меню, в котором, в числе прочего, будут доступны и скрипты (которые должны быть предварительно настроены, с учётом прав, но на их настройку я уже давал ссылку).

          Например, если в веб-интерфейсе Zabbix выбрать Мониторинг -> Проблемы, то отобразится список текущих проблем. Если в этом списке нажать мышкой на имя узла сети, то откроется то самое контекстное меню, в котором наряду с другими ссылками (на тему того, что можно сделать с узлом сети) будут и ссылки на запуск скриптов, см. скриншот:
          Click image for larger version

Name:	screenshot-2023-11-16_01.png
Views:	137
Size:	17.8 KB
ID:	474156
          Аналогичное контекстное меню доступно и в некоторых других местах веб-интерфейса, где отображается информация об узлах сети - например, в разделе "Мониторинг" -> "Последние данные", на картах сети (если туда вынесен объект "узел сети") или в панели (при наличии соответствующих виджетов, отображающих информацию об узлах сети).

          Comment

          • djin59
            Member
            • Jul 2023
            • 86

            #10
            будем думать как реализовать через...
            Last edited by djin59; 16-11-2023, 19:06.

            Comment

            • djin59
              Member
              • Jul 2023
              • 86

              #11
              вообще запутался.... еще раз как заставить выполнить на агенте скрипт с параметрами от заббикс сервера? если можно на примерах

              Click image for larger version

Name:	image.png
Views:	129
Size:	36.7 KB
ID:	474169


              если отбросить пока передачу параметра $message
              сам батник ​ содержит msg * $message
              при выполнении на узле
              пишет unsupported item
              Last edited by djin59; 16-11-2023, 19:59.

              Comment

              • djin59
                Member
                • Jul 2023
                • 86

                #12
                пока разобался как отправлять сообщение конкретному узлу , предварительно AllowKey=system.run[*]
                выполнять на стороне агента
                msg * /server {HOST.CONN} 123qwe


                но это совсем не то что нужно... хотя может можно выполнять на группе узлов этот скрипт? как?
                Last edited by djin59; 17-11-2023, 09:17.

                Comment

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

                  #13
                  Originally posted by djin59
                  пока разобался как отправлять сообщение конкретному узлу , предварительно AllowKey=system.run[*]​выполнять на стороне агента
                  msg * /server {HOST.CONN} 123qwe

                  но это совсем не то что нужно... хотя может можно выполнять на группе узлов этот скрипт? как?
                  Про то, что для выполнения скрипта на агенте нужно в его конфиге разрешать system.run, было явно сказано в документации, на которую я приводил ссылку.

                  Ну да, так работает.
                  ​Например, прописал в качестве текста глобального скрипта "Отослать уведомление Windows" команду:
                  Code:
                  msg.exe * /V "Test message"
                  После этого зашёл в Мониторинг -> Узлы сети, нашёл нужный компьютер, по щелчку мышкой на его имени открыл контекстное меню и выбрал этот скрипт.
                  На компьютере получил уведомление, а в веб-интерфейсе - подтверждение о выполнении команды:
                  Click image for larger version  Name:	screenshot-2023-11-17_01.png Views:	0 Size:	9.6 KB ID:	474229
                  Причём, что забавно, даже если на целевом компьютере никто не залогинен, то сообщение всё равно выводится (прямо поверх окна логина)

                  Выполнить скрипт на группе узлов сети можно только при настройке скрипта в качестве реакции на событие (т.е. когда тип скрипта "Операция действия"), тогда в самом действии в настройках операции в качестве цели можно указать группу узлов сети.

                  А что именно вам нужно-то?

                  Comment


                  • djin59
                    djin59 commented
                    Editing a comment
                    А что именно вам нужно-то? --- Послать сообщение с сервера заббикс всем агентам (ПОЛЬЗОВАТЕЛЯМ АКТИВНЫМ) и получить от них подтверждение о прочтении данного сообщения
                • djin59
                  Member
                  • Jul 2023
                  • 86

                  #14
                  прямо поверх окна логина --- это отлично , этот скрипт у меня работает но это как говорится чтобы чуть-чуть понимать что да как )))

                  теперь нужно переделать на запуск скрипта cscript или powershell с переданными параметрами от сервера (пример текст сообщения, его id) и ими отловить нажатие кнопки "Ознакомлен" после нажатия отправить через к примеру
                  zabbix_sender.exe признак что пользователь ознакомился с сообщением ID.


                  так сказать сложность у меня возникает с передачей параметров со стороны сервера текст сообщения и ID...... пока картинку рисую так
                  напишу скрипт отработки на агенте к примеру запустить тот же script - param1 -param2 , с сервера выполнить script -text -id после чего отловить скриптом если нажато Ознакомлено то далее.... zabbix_sender.exe до этого момента я еще не добрался )

                  Comment

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

                    #15
                    Мне кажется, что данная задача не совсем для Zabbix; хотя, наверное, при некотором упорстве её и можно было бы решить с его помощью.
                    Как известно, имеющему в руках молоток всё вокруг кажется гвоздями.
                    Но я по-прежнему не очень понимаю, каким образом вы хотите определять, на каких хостах должен быть запущен ваш скрипт и в какой момент. Где эти критерии?
                    Не говоря уже о чисто технических сложностях - например, на компьютере никто не залогинен, или залогинено несколько человек (работают в терминальных сессиях), откуда брать строку, передаваемую скрипту в качестве параметра и т.д.

                    Comment


                    • djin59
                      djin59 commented
                      Editing a comment
                      Определять ничего не нужно нужна массовая рассылка сообщений по моей "хотелке", буду нажатием на клавишу если нажата ознакомлен то ....send to server, а что sendom слать я также скриптом вытяну, меня интересуют активные сессии на локальных хостах, с терминалами пока не думал....да и их не так много


                      p/s про молоток и гвозди в точку )))
                  Working...