Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. вопрос по отчётам и макросам

вопрос по отчётам и макросам

Scheduled Pinned Locked Moved Support (Russian)
24 Posts 4 Posters 50.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S
    S
    semi-liquid
    wrote on last edited by
    #3

    1 о любых, мне нужен логин не пользователя нетхмс, а пользака компа. То есть идет перенагрузка на цп, мне приходит письмо мол на таком компе в такое время такая беда. И вот надо ещё чтобы было имя пользователя того компьютера приходило. Агент же передаёт эту инфу, значит и в отчёт это как-то закинуть можно, да?

    2нет такой службы, она как-то отдельно ставится? я чет не нашел под винду, видел что под убунту ставится отдельная какая-то штука.

    1 Reply Last reply
    0
    • F
      F
      Filipp Sudanov
      wrote on last edited by
      #4
      1. Для начала нужно как-то собирать это значение. Например, сделаем DCI, Origin "Internal", Parameter "Dummy". А в трансформационном скрипте этого DCI сделаем все что нужно (то же самое можно было сделать с помощью DCI c origin "script"):
      list = $node->readAgentList("System.ActiveUserSessions");
      currentlyLoggedUser = SplitString(list[0], "\"")[1];
      $node->setCustomAttribute("currentlyLoggedUser", currentlyLoggedUser);
      return currentlyLoggedUser;
      

      Для простоты скрипт сохраняет имя юзера в custom attribute на ноде - поэтому историю этого DCI можно даже не хранить.
      И теперь можно пользоваться макросом %{currentlyLoggedUser} - там будет имя юзера.

      Альтернативный путь - макрос %[script_name] и в этом скрипте можно находить нужный DCI и брать его последнее значение.

      1. Репортинг на windows ставится инсталлятором сервера, там есть отдельная галочка.
      1 Reply Last reply
      0
      • S
        S
        semi-liquid
        wrote on last edited by
        #5

        1 так система же уже сама имя пользака забирает, в user session
        Неужто чтобы оттуда вытащить инфу в отчёт надо скрипт использовать? (Я просто половину слов не понял что было в вашем ответе, поэтому ищу лёгкие пути)

        2 видимо проглядел, завтра попробую сверху накатить, спасибо)

        1 Reply Last reply
        0
        • S
          S
          semi-liquid
          wrote on last edited by
          #6

          поставил репорт сервер, в конфигураторе он включен, в службах работает, но при переходе в отчёты - ничего(


          Screenshot_15.jpg

          Screenshot_16.jpg

          1 Reply Last reply
          0
          • F
            F
            Filipp Sudanov
            wrote on last edited by
            #7

            Все так и должно быть. Механизм репортинга - это лишь интеграция с Jasper Reports. А для Jasper Reports нужны .jar файлы с описанием отчетов, там есть какая-то Jasper Studio в которой можно эти .jar файлы создавать.

            1 Reply Last reply
            0
            • S
              S
              semi-liquid
              wrote on last edited by
              #8

              хорошо, это посмотрю, так а пользователя из user sessions без использования скриптов и вот этого всего можно как-то по простому вытащить?

              1 Reply Last reply
              0
              • F
                F
                Filipp Sudanov
                wrote on last edited by
                #9

                Не, простых путей нет 🙂

                1 Reply Last reply
                0
                • S
                  S
                  semi-liquid
                  wrote on last edited by
                  #10

                  тогда видимо последний вопрос по вашему ответу в теме #3
                  есть где-то это в картинках и более подробно? Я из всего что там написано нашёл только DCI Summary Tables и это мало что мне дало 😞

                  1 Reply Last reply
                  0
                  • N
                    N
                    Nem0
                    wrote on last edited by
                    #11

                    Для России тема с JasperStudio можно  сказать закрыта - они не работают больше здесь и нас блочат

                    Access Denied
                    
                    You don't have permission to access "http://www.jaspersoft.com/" on this server.
                    Reference #18.df8e655f.1650666488.118285b4
                    

                    Грузил и пробовал его в октябре-ноябре прошлого года когда вопрос вставал. Пробная версия на 30 дней.  Результат не получился ни вразумительным ни вообще каким бы то ни было. Плюнул и забыл про него.

                    В итоге под себя и своих боссов писал на связке Python + Matplot + WeasyPrint + Pandas
                    Можно забирать данные из webapi но я предпочел напрямую из базы. Сложностей никаких нет. Ну кроме случаев когда хочется запрос в базу сделать с хитрыми группировками и прочими плюшками.  Работает на той же машине что и сервер. Меня устраивает. Если потрудиться то можно сделать все достаточно быстро и добротно. Можно еще и отдельный веб интерфейс прикрутить .... дальше полет фантазии безграничен.

                    1 Reply Last reply
                    0
                    • S
                      S
                      semi-liquid
                      wrote on last edited by
                      #12

                      даф иг с ними с отчётами, в целом и каспер в отчёты умеет) но спасибо за инфу)
                      мне бы понять таки как в письмо воткнуть имя пользователя)

                      1 Reply Last reply
                      0
                      • V
                        V
                        Victor Kirhenshtein
                        wrote on last edited by
                        #13

                        @semi-liquid said in вопрос по отчётам и макросам:

                        мне бы понять таки как в письмо воткнуть имя пользователя)

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

                        list = $node->readAgentList("System.ActiveUserSessions");
                        return SplitString(list[0], "\"")[1];
                        

                        и в сообщении использовать макрос %{script}, где script - это имя скрипта в библиотеке.

                        1 Reply Last reply
                        0
                        • S
                          S
                          semi-liquid
                          wrote on last edited by
                          #14

                          проблема в том что я в этом предложении понимаю отдельные буквы) а куда лезть и что делать так и не понял.
                          Можете пожалуйста мне разжевать что здесь сказано? Дальше обещаю что разберусь сам)
                          "Например, сделаем DCI, Origin "Internal", Parameter "Dummy". " - где делать DCI (куда заходить, что нажимать) и все эти параметры и ориджины, сам скрипт всё в одном месте делается?
                          То есть я понимаю что дальше реагирование прописывается отдельно. Но всё что я нашёл с подписью DCI не похоже на то что надо.


                          1.jpg

                          2.jpg

                          1 Reply Last reply
                          0
                          • F
                            F
                            Filipp Sudanov
                            wrote on last edited by
                            #15

                            Давайте начнем потихнечку. Судя по скриншотам ноды в системе у вас уже заведены (ну там SRV003 и все остальные).
                            На ноде нажимаем правую кнопку мыши, там есть Data Collection Configuration. Заходим. Это место, где конфигурируется сбор данных с ноды. Там список, каждая строка в этом списке это Data Collection Item - элемент сбора данных.
                            На списке правую кнопку мыши - New parameter. Там-то и ставим Origin "Internal", Parameter "Dummy". Dummy - это просто штука, которая всегда возвращает 0 - здесь значение нам не нужно, потому что мы его будет в transformation script добывать.
                            Слева в этом диалоге выбираем Transformation (третий пункт сверху). Там пишем код:

                            list = $node->readAgentList("System.ActiveUserSessions");
                            currentlyLoggedUser = SplitString(list[0], "\"")[1];
                            $node->setCustomAttribute("currentlyLoggedUser", currentlyLoggedUser);

                            Код получает с агента на ноде список залогиненных юзеров. Из этого списка мы просто берем первого. И сохраняем в custom attribute на ноде.
                            Нажимаем Apply and Close. Ждем пока данные соберутся.
                            На ноде нажимаем правую кнопку мыши, Properties, там слева Custom attributes. Если все хорошо, то там в списке должен быть currentlyLoggedUser с именем юзера.

                            Пишите, что получилось, что нет.

                            1 Reply Last reply
                            0
                            • S
                              S
                              semi-liquid
                              wrote on last edited by
                              #16

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


                              1.jpg

                              2.jpg

                              3.jpg

                              4.jpg

                              1 Reply Last reply
                              0
                              • F
                                F
                                Filipp Sudanov
                                wrote on last edited by
                                #17

                                А custom attribute "currentlyLoggedUser" вы добавили вручную, или он автоматически добавился?

                                Если автоматически, то выглядит, что скрипт возвращает пустое значение. Если на ноде сделать Execute server script и там запустить вот это, то что оно напечатает?:

                                list = $node->readAgentList("System.ActiveUserSessions");
                                println("=" . list . "=");
                                currentlyLoggedUser = SplitString(list[0], "\"")[1];
                                println("=" . currentlyLoggedUser . "=");

                                1 Reply Last reply
                                0
                                • S
                                  S
                                  semi-liquid
                                  wrote on last edited by
                                  #18

                                  автоматом добавилось.
                                  Сделал что вы сказали вот результат, admind - то что надо вытащить.
                                  vor-admin комп с которого я к серваку нетхмс подключен по рдп.


                                  1.jpg

                                  1 Reply Last reply
                                  0
                                  • F
                                    F
                                    Filipp Sudanov
                                    wrote on last edited by
                                    #19

                                    Да, получается что в этом списке может быть еще тот юзер, что залогинен на Console и он может быть пустой. И список может быть в любом порядке. Тогда такой скрипт, он соберет всех юзеров через запятую, если имя юзера не пустое:

                                    list = $node->readAgentList("System.ActiveUserSessions");
                                    loggedUsers = %();
                                    for (l : list)
                                    {
                                      username = SplitString(l, "\"")[1];
                                      if (username != "") loggedUsers->append(username);
                                    }
                                    loggedUsersStr = ArrayToString(loggedUsers, ",");
                                    $node->setCustomAttribute("currentlyLoggedUser", loggedUsersStr);

                                    1 Reply Last reply
                                    0
                                    • S
                                      S
                                      semi-liquid
                                      wrote on last edited by
                                      #20

                                      что-то всё равно идёт не так(


                                      1.jpg

                                      1 Reply Last reply
                                      0
                                      • S
                                        S
                                        semi-liquid
                                        wrote on last edited by
                                        #21

                                        понял, не хватало строчки возвращающей значение)
                                        return loggedUsersStr;

                                        1 Reply Last reply
                                        0
                                        • S
                                          S
                                          semi-liquid
                                          wrote on last edited by
                                          #22

                                          работает))  🙂 🙂 🙂 🙂 🙂
                                          а теперь это надо вручную по всем компам или где-то ещё можно отдельно запустить по всем?
                                          я не против первого варианта, круто что оно вообще работает) спасибо за это вам огромное 🙂 🙂
                                          по идее же это как-то можно как раз в DC Summary Table впихнуть и заставить работать по всем компам?

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          Powered by NodeBB Contributors
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups