
Exploiter notre ferme Citrix avec Grafana
Bon, Je vous laisse un post où l’on voit comment on peut exploiter les informations stockées par Citrix dans ses bases de données. Comme j’imagine que vous le savez, Citrix stocke dans une base de données les enregistrements de ce qui se passe sur notre ferme Citrix, Mais c’est vrai, autant que vous payez, autant que vous obtenez, C’est, qui dépend de l’édition que nous avons, Citrix stockera des informations dans ces bases de données pour 1 semaine, ou 1 mois ou 1 année. Ici, nous allons voir comment fabriquer nos propres panneaux avec Grafana et sans limite de date!
Ce que j’ai dit, dans cet article, nous ne verrons qu’un exemple avec les sessions utilisateur, où nous aurons un historique de qui a ouvert quoi et quand, mais bien sûr, nous pouvons également visualiser les performances des serveurs Citrix, Le contrôleur de livraison, VDA… Ainsi que les clients, Quelle version ont-ils ?, Qu’est-ce que c’est ?…
Donc, si vous savez, Citrix stocke généralement dans 3 différentes bases de données les informations que vous nous montrez sur vos consoles Studio ou Director, L’idée est de faire une quatrième base de données où l’on stocke ce qui nous intéresse, et que DB sera notre, qui sera celui que Grafana consultera, Et ainsi nous ne perdons pas l’histoire et avons beaucoup plus d’informations et surtout personnalisées pour nous, seulement avec ce que nous voulons voir.
Avant de commencer, nous aurons besoin de créer cette quatrième base de données, nous pouvons le faire à partir de SQL Server Management Studio (Le) avec le code suivant:
Création d’une table LogCitrix.dbo.Sessions (FullName varchar(255),StartDate DATETIME,EndDate DATETIME,SessionIdleTime DATETIME,ConnectedViaIPAddress varchar(255),ConnectionID INT);
Ce qui suit, Nous aurons besoin d’un fichier .BAT que nous exécuterons aussi souvent que nous le souhaiterons pour le stocker dans cette base de données (Le nôtre) et ensuite les exploiter avec Grafana. Ce BAT sera normalement exécuté avec le planificateur de tâches Windows. Appelons-le par exemple LogCitrix.bat et voici son contenu:
@echo off sqlcmd -S NOMBRE_SERVIDOR_DELIVERY_CONTROLLER -i C:\LogCitrixsessiones.sql -o C:\LogCitrixsessiones.txt
Nous aurons également besoin du . SQL qui a les instructions de quel contenu et à partir de quelles tables nous allons apporter, Dans mon exemple, Celui-ci s’appelle sessiones.sql, et ce serait son contenu:
Insérez dans logcitrix.dbo.sessions, sélectionnez U.FullName, S.Date de début, S.EndDate, S.SessionIdleTime, C.ConnectedViaIPAddress, C.id À PARTIR DE [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Session] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Utilisateur] Ou, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Connexion] C où s.userid=U.id et s.currentconnectionid=c.id; avec sessionsCTE AS ( CHOISIR *, ROW_NUMBER()SUR(PARTITION BY Connectionid ORDER BY Connectionid) AS RowNumber FROM logcitrix.dbo.sessions ) DELETE FROM sessionsCTE WHERE RowNumber > 1
C’est ce que nous aurons suite à l’exemple précédent, Wow, ce que j’ai dit, il s’agit d’un tableau pour les sessions utilisateurs uniquement, Où allons-nous enregistrer qui s’est connecté et quand, le moment où vous vous êtes déconnecté et l’endroit à partir duquel vous vous êtes connecté. Je te le dis, qui dépend des données que vous souhaitez intégrer, vous devrez apporter des données d’autres tables, que je ne le mets pas maintenant pour ne pas te compliquer la vie 😉
Historique des sessions Citrix,
Et rien, avec des données déjà stockées, comme d'habitude, nous devons créer une nouvelle DataSource ou Data Source sur le serveur SQL en question et la base de données Citrix que nous venons de créer, afin que nous puissions vous poser des questions. Pour faire l’affichage de la table, Personnellement, j’aime utiliser davantage le panneau ‘Panneau Datatable‘ par Brian Gann (Vous verrez dans le lien à quel point ce type de panneau est facile à installer), C’est ainsi que nous pouvons créer des filtres, Recherches…
Et ce sera aussi simple que d’entrer cette requête:
CHOISIR [Nom complet] AS 'NOMBRE', [Date de début] AS 'HORA INICIO', cas où [SessionIdleTime] Est null alors [Date de fin] quand [Finir] IS n’est pas nul et [SessionIdleTime] N’est pas null alors [SessionIdleTime] end as 'HORA FIN', cas où [SessionIdleTime] Est null et [Date de fin] IS not null then 'CIERRE USUARIO' when [SessionIdleTime] N’est pas null et [Date de fin] IS not null et DATEDIFF(heure,[SessionIdleTime],[Finir])&ÈRE;AMPÈRE;Gt;=2 then 'CIERRE POR INACTIVIDAD' when [SessionIdleTime] N’est pas null et [Date de fin] IS not null et DATEDIFF(heure,[SessionIdleTime],[Finir])&ÈRE;AMPÈRE;Lt;2 then 'CIERRE USUARIO' end as 'TIPO CIERRE', --[SessionIdleTime], -- [Date de fin], cas où [ConnectedViaIPAddress] ='DIRECCION_IP_NETSCALER_GATEWAY' then 'FUERA OFICINA' else 'OFICINA' end as 'CONEXION DESDE'--, -- [ConnectedViaIPAddress], -- [ID de connexion] DE [LogCitrix].[Dbo].[Sessions] où [Nom complet] &ÈRE;AMPÈRE;Lt;&ÈRE;AMPÈRE;Gt; 'Rubén Tercero García' and [Date de début]&ÈRE;AMPÈRE;Gt;'2019-09-23' order by StartDate desc
Temps de connexion,
Le temps de connexion dans les environnements Citrix que nous connaissons est très important, si nous voulons, Nous pouvons visualiser le temps nécessaire aux utilisateurs pour ouvrir des sessions (et quand), dans ce cas, pourquoi nous utilisons UPM et non FSLogix (que le problème des profils itinérants disparaît). Et ce au lieu de consulter cette base de données historique, nous pouvons demander directement aux bases de production Citrix, dans ce cas, à la surveillance (Alors n’oubliez pas, que cela nécessitera une autre DataSource créée dans Grafana, contre la DB de production). Se préparer avec ce Select:
SÉLECTIONNEZ __timeEpoch $(S.Date de début), S.logonduration comme valeur, U.FullName en tant que métrique FROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Session] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Utilisateur] U OÙ __timeFilter $(S.Date de début) et s.userid=U.id COMMANDE PAR S.Startdate ASC
Ouvrir des applications,
Comme dernier exemple, je vous laisse avec un tableau où nous pouvons voir les applications que les utilisateurs ouvrent, Nous avons donc une idée de ce qui se passe dans notre ferme. Nous créons un panneau graphique et dans ce cas, grâce à la sélection suivante, nous l’aurions:
SÉLECTIONNEZ __timeEpoch $(IA. Date de début), 1 comme valeur, --Tata comme métrique, A.PublishedName en tant que métrique FROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Session] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Utilisateur] Ou, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Connexion] C, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[Application] À, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData (en anglais)].[applicationinstance] AI OÙ __timeFilter $(S.Date de début) et s.userid=U.id et S.currentconnectionid=c.id et AI.sessionkey=S.sessionkey et A.id=AI.applicationid ORDER BY S.Startdate ASC
Cet article a l’idée qu’il a, c’est que, que vous savez que toute base de données que nous avons dans nos organisations peut être exploitée, et visualisez vos données, D’autres exemples que j’ai sont les suivants :, Quesito : visualisations des versions dont disposent les utilisateurs de Citrix Receiver/Citrix Workspace… Ou si vous avez un ERP, De même, exploitez-le et visualisez les données Navision, SÈVE… ou si vous avez un gestionnaire de temps, Je suis sûr que vos patrons aimeraient avoir des rapports en temps réel avec les données qui les intéressent! N’oubliez pas que vous pouvez également plus tard l’exporter dans un PDF beau et envoyé par email de manière programmée aux destinataires qui nous intéressent.
J’espère que vous avez été intéressé!