Da un pò di tempo sto lavorando ad una applicazione nominata AppUserList, della quale ho scritto qui diversi post, ma mi sono reso conto che non ho mai scritto una guida esaustiva per come installarla dall’inizio alla fine.
Pertanto ho deciso che fosse ora di dedicare un pò di tempo per descrivere il processo di installazione, così da renderla più facile da implementare, oltre a definire meglio i permessi necessari all’utente di servizio per poter lavorare correttamente.
Lo scopo di AppUserList è permettere agli amministratori di aver chiaro quali applicazioni stiano utilizzando gli utenti; aver chiare queste informazioni può aiutare a comprendere dove sia possibile eseguire ottimizzazioni sulle macchine e comprendere quali software eventualmente non siano più utilizzati (disinstallandoli dalle postazioni virtuali o non installandoli più, in seguito, su nuove postazioni, a fronte di progetti di migrazione/aggiornamento).
Come descritto anche in precedenza, l’applicazione è composta dalle seguenti componenti:
- AULMonitor: Database SQL dedicato alla storicizzazione delle informazioni;
- AULService: servizio in esecuzione sulle VM Windows, dedicato alla raccolta delle applicazioni eseguite dagli utenti;
- AULReport: console dedicata all’analisi dei dati raccolti e alla generazione di report;
Di seguito rappresento i flussi di funzionamento dell’applicazione:
AULService è un agente in esecuzione sulle macchine virtuali che erogano Desktop e/o Applicazioni (per esempio in ambienti Citrix, Parallels RAS, Azure Virtual Desktop, ecc…) e che ha lo scopo di monitorare l’utilizzo delle applicazioni da parte degli utenti e comunicare le informazioni raccolte verso il DB AULMonitor.
AULMonitor è un Database SQL, in esecuzione in una istanza SQL Server, che ha il compito di storicizzare i dati raccolti dai vari AULAgent.
AULReport è l’applicazione sviluppata per permettere una visualizzazione e analisi veloce dei dati raccolti e permetterne l’estrazione secondo diversi formati di report previsti.
Di seguito i prerequisiti necessari all’installazione del prodotto:
- creazione di un utente che deve avere i seguenti permessi:
- L’utente di servizio deve essere un utente di dominio, ma è sufficiente che sia un Domain User (non sono necessari permessi superiori);
- Deve essere assegnato come db_owner del Database AULMonitor;
- Deve essere amministratore locale delle macchine su cui viene messo in esecuzione la componente AULService;
- Istanza SQL Server da cui erogare il DB AULMonitor. Non sono necessarie funzionalità particolari, per cui è sufficiente una istanza SQL Express;
- Creazione di un DB vuoto, nominato AULMonitor;
Per poter procedere con l’installazione è possibile scaricare le ultime release dei pacchetti da me sviluppati, a disposizione nel mio GitHub:
Le versioni delle 3 componenti potrebbero non seguire un processo di avanzamento di release identico, in quanto potrei, per esempio, pubblicare un aggiornamento di AULReport senza che esso abbia impatti su AULService o AULMonitor; si consiglia per cui di eseguire l’ultima versione di ogni componente pubblicata, così da avere in funzione la release più aggiornata e con eventuali bug risolti nel tempo.
AULMonitor
Dopo aver creato manualmente il database SQL AULMonitor, possiamo eseguire lo script AULMonitor.sql che serve a generare le tabelle e le viste necessarie:
Dopo aver eseguito lo script AULMonitor.sql ci si troverà con una struttura del Database AULMonitor simile a questa:
A questo punto possiamo aggiungere l’utente di dominio creato (nel mio caso l’ho nominato “aulservice”) come utente con permessi sull’istanza SQL Server, ed assegnargli come Default Schema “dbo” ed il ruolo di “db_owner” del database AULMonitor.
Così facendo stiamo autorizzando l’utente aulservice a lavorare in lettura e scrittura sul DB AULMonitor, senza assegnargli alcun permesso sugli altri eventuali DB presenti sull’istanza SQL Server.
AULService
Ora procediamo con l’installazione di AULService.msi all’interno delle macchine da monitorare. Tale procedura può essere eseguita singolarmente in ogni VM dedicata agli utenti, o all’interno delle master image (come nel caso di ambienti Citrix PVS o MCS). Installandola nelle master image potremo automaticamente monitorare tutte le istanze “figlie”.
L’installazione del pacchetto AULService.msi predispone i file necessari alla configurazione ed esecuzione del servizio AULService, all’interno della posizione C:\Programmi\Silvio Balduzzi\AULService\:
Il ruolo dei file presenti è il seguente:
- AULService.exe – è l’eseguibile che viene avviato nelle VM utenti e che si occupa di monitorare le applicazioni avviate dagli utenti e comunicare con AULMonitor;
- AULService-Test.ps1 – è un file powershell che può essere utilizzato per avviare AULService.exe in modalità di debug (in seguiro mostrerò come utilizzarlo);
- TaskScheduler.exe – è un eseguibile che guida nella creazione del Task Scheduler, necessario all’avvio di AULService all’accensione della macchina;
Dopo aver eseguito l’installazione è necessario avviare manualmente TaskScheduler.exe, compilati i dati richiesti e premuto su OK:
Per esempio, i dati potrebbero essere i seguenti:
- SQL Server with instance: SERVERDB01\SQLExpress (in certi casi è sufficiente indicare il nome del server, non inserendo il nome dell’istanza, in base a come è stata configurata in fase di installazione)
- Database: AULMonitor
- TrustCertDB: True o False in base alla validità o meno dei certificati utilizzati per la connessione SQL al DB
- CheckDBConnection: True (False solo per eventuali azioni di Debug mirate)
- Work Folder: C:\AULService\Logs\ (funzionalità deprecata, ma non ancora rimossa dal TaskScheduler.exe)
- Username: dominio\aulservice
- Password: ********
Una volta compilati i dati e cliccato su “OK”, verrà automaticamente generato un Task in Unità di pianificazione di Windows:
Il Task sarà automaticamente configurato per essere eseguito all’avvio del sistema con i permessi dell’utente “aulservice” (che, ricordo, deve essere amministratore locale delle macchina Windows dove vogliamo eseguire AULService). E’ richiesto il ruolo di amministratore locale per consentire al servizio AULService di accedere a porzioni di registro della macchina, nel quale sono presenti chiavi in contesto utente.
Prima di procedere con l’installazione “a tappeto” di AULService su tutte le VM, possiamo eseguire il debug da una VM, avviando il servizio tramite l’uso del file AULService-Test.ps1
Aprendo il file AULService-Test.ps1 con un editor e compilando il contenuto con gli stessi dati inseriti in TaskScheduler.exe, potremo eseguire AULService in modalità grafica e vederne il funzionamento; solitamente viene eseguito in background, senza GUI. E’ opportuno avviarlo tramite l’utente aulservice, sopra definito, così da replicare il funzionamento del Task Scheduler:
Se tutto comunica correttamente, dopo qualche secondo potrete vedere il processo che scrive nel DB AULMonitor, durante la fase “Cache to DB Sync…” (sezione colorata in viola):
Il processo è scritto per analizzare, ogni pochi secondi, le applicazioni degli utenti connessi alla VM, scrivendo le informazioni in memoria e scaricandole verso il DB AULMonitor solamente dopo alcuni cicli di esecuzione. Per ottimizzare l’applicazione, all’avvio AULService esegue la Cache in locale del contenuto di alcune tabelle specifiche di AULMonitor, così da evitare continue query verso il DB SQL.
Se tutto funziona, dovremmo iniziare a veder popolate le tabelle in AULMonitor.
Ora possiamo chiudere l’applicazione in modalità Debug ed avviarla tramite il Task schedulato. In seguito verrà avviata automaticamente all’accensione della VM.
Inizialmente AULMonitor potrebbe “subire” tante scritture, in quanto non “conoscerà” nessuna applicazione. In seguito la cache di AULService eviterà l’invio verso AULMonitor di informazioni non necessarie, riducendo le scritture verso il DB. Nelle prima versioni dell’applicazione eseguivo letture e scritture continue da e verso AULMonitor, ma ciò causava un consumo maggiore di risorse da parte dell’applicazione AULService.
AULReport
Come detto, AULReport è il pacchetto che si occupa di eseguire le query verso AULMonitor e mostrare i dati raccolti. Esso quindi può essere installato nelle sole VM degli amministratori che necessitano di analizzare i dati.
Il pacchetto di installazione è AULReport.msi e l’installazione crea questi file:
Avviando AULReport.exe (di cui viene creato automaticamente un link anche nello Start Menu) si verrà guidati nella configurazione del puntamento verso AULMonitor e all’attivazione del tool (free, ma mi piace avere una piccola evidenza di chi usa il mio prodotto).
L’applicazione deve essere configurata con le stesse informazioni definite in precedenza per AULService, più altri dettagli che vedremo tra poco. Tutte le configurazioni potranno essere modificate anche in seguito, in caso di necessità.
Dopo aver cliccato su “Save and Close” verrà presentata la finestra di attivazione della chiave di licenza:
L’attivazione può essere eseguita in due modalità:
- Hostname dependent;
- Hostname independent;
La prima modalità permette di attivare AULReport su una singola VM; l’attivazione avverrà tramite validazione della licenza, in base all’hostname della VM in cui è in esecuzione.
La seconda modalità permette di generare un file di licenza che potrà essere utilizzato su diverse VM in cui andremo ad eseguire AULReport.
In entrambi i casi è necessario inserire una email nella sezione alta della finestra e seguire i passaggi relativi alla tipologia di attivazione definita. In caso di necessità, in questo post precedente ho descritto come eseguire l’attivazione passo-passo: https://www.silviobalduzzi.com/2023/09/appuserlist-v2-2-application-user-list/
Dopo aver configurato AULReport ed eseguita l’attivazione, sarà possibile iniziare ad utilizzarlo, così da poter analizzare i dati raccolti dagli agent AULService in esecuzione sulle VM degli utenti.
Sarà quindi possibile eseguire report ed estrarli in formato Excel:
Per qualsiasi proposta o segnalazione, vi invito a scrivermi.