Within the server are various loggings available for example session- and audit-logging which could be load in a qvw. There are many examples here in the community. You could start with these one:
you have to use the QMS-API.
There are a method called GetQVSDocumentsAndUsers -> returned the documents and connected users.
This data available at QMC as well.
How to work with QMS-API -> QlikView Management API - Getting Started and Examples
I don't have experience in the QlikSense Proxy API up to now. But sound like i have to check it out .
But on the other hand i think i can help you with you question about the namedcal stuff.
just have a look to that.
var config = backendClient.GetCALConfiguration(server.ID, CALConfigurationScope.NamedCALs);
and on the Object -> config.NamedCALs.AssignedCALs there should be a method called LastUsed.
That should return that last used date...
Is use that function to remove unused namedCals.