Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello everyone,
In QlikView we could verify in real-time how many applications were open and what users were connected to Access Point.
Is there a way to verify what applications in use and users logged in the Qlik Sense HUB?
Any method is OK.
Verifying the LOGs, API call, anything that's precise.
Thank you.
Sort of.
We listen to session begin/end and connection open/close events from the logging framework, and keep counters based on those events. Works ok.
That work has been packaged in the Butler project, GitHub - mountaindude/butler: Node.js proxy, extending Qlik Sense with both out- and in-bound connec...
I have also created a small node.js server that monitors the health API, https://help.qlik.com/en-US/sense-developer/3.1/Subsystems/EngineAPI/Content/GettingSystemInformatio...
Works ok too, at least as long as you send your request to the root endpoint of a server - that API returns incorrect information when used against a virtual proxy.
You can always run a query against the postgres DB. That's how I determine who is active. Have not figured out how to tell which application they are connected to though.
select "Users"."Name", "LicenseUserAccessUsages"."ModifiedByUserName" as "Login", "LicenseUserAccessUsages"."UseStartTime" - Interval '5 hours' as "SessionStart", "LicenseUserAccessUsages"."LatestActivity" - Interval '5 hours' as "LastActivity", 'User Access' as "AccessType"
from "LicenseUserAccessUsages", "LicenseUserAccessTypes", "Users"
where "LicenseUserAccessUsages"."Deleted" = 'f'
and "LicenseUserAccessUsages"."LatestActivity" >= Now() + '3:30'
and "LicenseUserAccessTypes"."ID" = "LicenseUserAccessUsages"."UserAccessType_ID"
and "Users"."ID" = "LicenseUserAccessTypes"."User_ID"
union
Select "Users"."Name", "LicenseLoginAccessUsageSessions"."ModifiedByUserName" as "Login", "LicenseLoginAccessUsageSessions"."CreatedDate" - Interval '5 hours' as "SessionStart", "LicenseLoginAccessUsageSessions"."LatestActivity" - Interval '5 hours' as "LastActivity", 'Login Access' as "AccessType"
From "LicenseLoginAccessUsageSessions", "LicenseLoginAccessUsages", "Users"
where "LicenseLoginAccessUsageSessions"."Deleted" = 'f'
and "LicenseLoginAccessUsageSessions"."LatestActivity" >= Now() + '3:30'
and "LicenseLoginAccessUsages"."ID" = "LicenseLoginAccessUsageSessions"."LicenseLoginAccessUsage_ID"
and "Users"."ID" = "LicenseLoginAccessUsages"."User_ID"
Thanks Kevin for sharing the sql.
Is that SQL giving accurate count Kevin ?
It is close but sometimes not 100% accurate. I rely on the last activity time mostly to see if the user is still doing any work. One thing that I have noticed is that when a user connects via a user access pass, their session does not always get set as deleted right away when they close the browser. Plus, I have the session activity timeout set to 30 minutes. That's why I check the LatestActivity >= Now() + '3:30'.
Another thing, The query has been modified to take into account Daylight Saving Time here in the US. You may need to adjust the - Interval '5 hours' to read - Interval 4 hours. The timestamps were in GMT time so I subtracted hours to get the time to be the current Eastern Standard Time. If GMT time works for you, you can remove this entirely.
hi there,
what if i am in the 2 nodes environment, how and where can i check
- which user is accessing to which server - central node or rim node?
- user A is accessing App A from central Node or Rim Node?
Rgds
Jim
Here is an updated query for all of those interested.
--Need to adjust time interval for daylight saving time -> Spring Interval = 4 Hours, Fall Interval = 5 Hours
select "Users"."Name", "LicenseUserAccessUsages"."ModifiedByUserName" as "Login", "LicenseUserAccessUsages"."UseStartTime" - Interval '4 hours' as "SessionStart", "LicenseUserAccessUsages"."LatestActivity" - Interval '4 hours' as "LastActivity", 'User Access' as "AccessType"
from "LicenseUserAccessUsages", "LicenseUserAccessTypes", "Users"
where "LicenseUserAccessUsages"."LatestActivity" >= Now() + '3:30'
and "LicenseUserAccessTypes"."ID" = "LicenseUserAccessUsages"."UserAccessType_ID"
and "Users"."ID" = "LicenseUserAccessTypes"."User_ID"
union
Select "Users"."Name", "LicenseLoginAccessUsageSessions"."ModifiedByUserName" as "Login", "LicenseLoginAccessUsageSessions"."CreatedDate" - Interval '5 hours' as "SessionStart", "LicenseLoginAccessUsageSessions"."LatestActivity" - Interval '5 hours' as "LastActivity", 'Login Access' as "AccessType"
From "LicenseLoginAccessUsageSessions", "LicenseLoginAccessUsages", "Users"
where "LicenseLoginAccessUsageSessions"."LatestActivity" >= Now() + '3:30'
and "LicenseLoginAccessUsages"."ID" = "LicenseLoginAccessUsageSessions"."LicenseLoginAccessUsage_ID"
and "Users"."ID" = "LicenseLoginAccessUsages"."User_ID"
Hi!
This could help: https://support.qlik.com/articles/000025281
Cheers!
Daniele