вопрос по отчётам и макросам
-
- Для начала нужно как-то собирать это значение. Например, сделаем 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 и брать его последнее значение.
- Репортинг на windows ставится инсталлятором сервера, там есть отдельная галочка.
-
1 так система же уже сама имя пользака забирает, в user session
Неужто чтобы оттуда вытащить инфу в отчёт надо скрипт использовать? (Я просто половину слов не понял что было в вашем ответе, поэтому ищу лёгкие пути)2 видимо проглядел, завтра попробую сверху накатить, спасибо)
-
поставил репорт сервер, в конфигураторе он включен, в службах работает, но при переходе в отчёты - ничего(


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

-
тогда видимо последний вопрос по вашему ответу в теме #3
есть где-то это в картинках и более подробно? Я из всего что там написано нашёл только DCI Summary Tables и это мало что мне дало
-
Для России тема с 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 но я предпочел напрямую из базы. Сложностей никаких нет. Ну кроме случаев когда хочется запрос в базу сделать с хитрыми группировками и прочими плюшками. Работает на той же машине что и сервер. Меня устраивает. Если потрудиться то можно сделать все достаточно быстро и добротно. Можно еще и отдельный веб интерфейс прикрутить .... дальше полет фантазии безграничен. -
даф иг с ними с отчётами, в целом и каспер в отчёты умеет) но спасибо за инфу)
мне бы понять таки как в письмо воткнуть имя пользователя) -
@semi-liquid said in вопрос по отчётам и макросам:
мне бы понять таки как в письмо воткнуть имя пользователя)
Там выше предлагался вариант со скриптом. Его можно даже еще упростить и просто вставлять результат в сообщение, без дополнительных атрибутов:
list = $node->readAgentList("System.ActiveUserSessions"); return SplitString(list[0], "\"")[1];и в сообщении использовать макрос %{script}, где script - это имя скрипта в библиотеке.
-
проблема в том что я в этом предложении понимаю отдельные буквы) а куда лезть и что делать так и не понял.
Можете пожалуйста мне разжевать что здесь сказано? Дальше обещаю что разберусь сам)
"Например, сделаем DCI, Origin "Internal", Parameter "Dummy". " - где делать DCI (куда заходить, что нажимать) и все эти параметры и ориджины, сам скрипт всё в одном месте делается?
То есть я понимаю что дальше реагирование прописывается отдельно. Но всё что я нашёл с подписью DCI не похоже на то что надо.


-
Давайте начнем потихнечку. Судя по скриншотам ноды в системе у вас уже заведены (ну там 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 с именем юзера.Пишите, что получилось, что нет.
-
возможно я мало ждал и потому готов повторить проверку завтра утром, но ничего не изменилось. dummy выбирал верхний.
На скрипт система не ругалась, но либо я не дождался, либо что-то не так сделал(
если что отключенный вариант на скрине - сделал то же самое, но скрипт добавил тот что предлагали выше, результат одинаковый.
И он стоит верхним не потому что я вам не доверяю, а потому что до этого я с другим нодом экспериментировал, там ваш первый))




-
А custom attribute "currentlyLoggedUser" вы добавили вручную, или он автоматически добавился?
Если автоматически, то выглядит, что скрипт возвращает пустое значение. Если на ноде сделать Execute server script и там запустить вот это, то что оно напечатает?:
list = $node->readAgentList("System.ActiveUserSessions");
println("=" . list . "=");
currentlyLoggedUser = SplitString(list[0], "\"")[1];
println("=" . currentlyLoggedUser . "="); -
автоматом добавилось.
Сделал что вы сказали вот результат, admind - то что надо вытащить.
vor-admin комп с которого я к серваку нетхмс подключен по рдп.

-
Да, получается что в этом списке может быть еще тот юзер, что залогинен на 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); -
что-то всё равно идёт не так(

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

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

по идее же это как-то можно как раз в DC Summary Table впихнуть и заставить работать по всем компам? -
Не, вручную не стоит, у нас есть шаблоны (Templates) и лучше все делать через них.
В дереве объектов правый клик на Templates, Create, Template, дать ему какое-нибудь имя. Он появится под Templates. На нем правой кнопкой, Data Collection Configuration. Там опять-таки нужно создать DCI со всеми свойствами (или можно на том DCI что был создан на ноде сделать Copy to another node и указать имя шаблона).
Дальше нужно шаблон назначить на ноды. Правой кнопкой по шаблону, Apply. Там можно выбирать несколько нод сразу (с помощью shift или ctrl), или можно выбрать сразу контейнер.Еще шаблоны умеют накладываться автоматом - там может быть скрипт, который решает, нужен ли этот шаблон на этой ноде. Примеры можно посмотреть в шаблонах, которые идут "из коробки" - Templates->Operating systems например.
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