使用 Grafana 开发我们的 Citrix 场
好, 我给您留下了一篇文章,我们将了解如何利用 Citrix 存储在其数据库中的信息. 我想你知道的, Citrix 将 Citrix 场上发生的事情的记录存储在数据库中, 但这是真的, 您支付多少, 尽可能多地获得, 那是, 这取决于我们拥有的版本,Citrix 会将信息存储在这些数据库中 1 周, 或 1 month 或 1 年. 在这里,我们将看到如何使用 Grafana 制作我们自己的面板,并且没有日期限制!
我说了什么, en este post veremos únicamente un ejemplo con las Sesiones de los usuarios, donde tendremos un historial de quién abrió qué y cuando, pero claro que también podemos visualizar el rendimiento de los servidores de Citrix, los Delivery Controller, los VDA… Así como los clientes, qué versión tienen, qué SO…
Así que si os suena, normalmente Citrix almacena en 3 distintas BBDD la información que nos muestra en sus consolas Studio o Director, la idea es hacer una cuarta BD donde nosotros almacenemos lo que nos interese, y esa BD será nuestro histórico, que será la que Grafana consulte, y así no perdamos historial y tengamos mucha más info y sobre todo personalizada para nosotros, únicamente con lo que queramos ver.
准备工作, necesitaremos tener esta cuarta BD creada, lo podemos hacer desde SQL Server Management Studio (SSMS) con el siguiente código:
Create Table LogCitrix.dbo.Sesiones (FullName varchar(255),StartDate DATETIME,EndDate DATETIME,SessionIdleTime DATETIME,ConnectedViaIPAddress varchar(255),ConnectionID INT);
以下内容, necesitaremos un fichero .BAT que ejecutaremos con la frecuencia que nos interese para que nos almacene en esta base de datos (我们) la información y así luego la explotemos con Grafana. Este BAT normalmente lo ejecutaremos con el Programador de Tareas de Windows. Llamémosle por ejemplo LogCitrix.bat y este sería su contenido:
@echo off sqlcmd -S NOMBRE_SERVIDOR_DELIVERY_CONTROLLER -i C:\LogCitrix\sessiones.sql -o C:\LogCitrix\sessiones.txt
Necesitaremos también el fichero .SQL que tiene las instrucciones de qué contenido y de qué tablas nos vamos a traer, 在我的例子中, este se llama sessiones.sql, y este sería su contenido:
Insert Into logcitrix.dbo.sesiones select U.FullName, S.Startdate, S.EndDate, S.SessionIdleTime, C.ConnectedViaIPAddress, C.id FROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[会期] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[用户] 或, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[连接] C Where s.userid=U.id and S.currentconnectionid=c.id; with sesionesCTE AS ( 选择 *, ROW_NUMBER()多(PARTITION BY Connectionid ORDER BY Connectionid) AS RowNumber FROM logcitrix.dbo.sesiones ) DELETE FROM sesionesCTE WHERE RowNumber > 1
Ý esto es lo que tendremos siguiendo el ejemplo anterior, vaya que lo dicho, esto es una tabla unicamente para las Sesiones de los Usuarios, donde vamos a ir guardando quién se conectó y cuando, cuándo cerró la sesión y desde donde se conectó. Ya os digo, 这取决于你们想要引入的数据,我们可能需要从其他表中提取数据, 我现在不写出来以免让你们的操作复杂 😉
Citrix 会话历史,
什么都没有, 使用已存储的数据, 照常, 我们需要针对特定的 SQL 服务器和刚创建的 Citrix 数据库创建一个新的数据源, 这样我们就可以对它进行查询. 要进行表格显示, 我个人更喜欢使用面板 ‘数据表面板‘ Brian Gann 的 (你会在链接中看到这种面板安装是多么简单), 这样我们就可以进行过滤, 搜索…
这将和输入这条查询一样简单:
选择 [全名] 作为 '姓名', [开始时间] 作为 '开始时间', 情况 当 [会话空闲时间] 为空时,则 [结束时间] 当 [结束时间] 不为空且 [会话空闲时间] 不为空时则 [会话空闲时间] end as 'HORA FIN', case when [会话空闲时间] Is null and [结束时间] IS not null then 'CIERRE USUARIO' when [会话空闲时间] Is not null and [结束时间] IS not null and DATEDIFF(hour,[会话空闲时间],[结束时间])&放大 器;放大 器;燃气轮机;=2 then 'CIERRE POR INACTIVIDAD' when [会话空闲时间] Is not null and [结束时间] IS not null and DATEDIFF(hour,[会话空闲时间],[结束时间])&放大 器;放大 器;中尉;2 then 'CIERRE USUARIO' end as 'TIPO CIERRE', --[会话空闲时间], -- [结束时间], 情况 当 [ConnectedViaIPAddress] ='DIRECCION_IP_NETSCALER_GATEWAY' then 'FUERA OFICINA' else 'OFICINA' end as 'CONEXION DESDE'--, -- [ConnectedViaIPAddress], -- [ConnectionID] 从 [LogCitrix].[dbo].[会话] where [全名] &放大 器;放大 器;中尉;&放大 器;放大 器;燃气轮机; 'Rubén Tercero García' and [开始时间]&放大 器;放大 器;燃气轮机;'2019-09-23' order by StartDate desc
Tiempos de Logon,
El tiempo de logon en entornos Citrix sabemos que es muy importante, 如果我们愿意, podemos visualizar lo que tardan en abrir sesiones los usuarios (y cuándo), en este caso por que usamos UPM y no FSLogix (que desaparece el problema de los perfiles móviles). Y esto en vez de consultarlo a esta BD de histórico, podemos preguntarlo directamente a las BBDD de producción de Citrix, 在这种情况下,为了监控 (所以要记住, 这将需要在 Grafana 中创建另一个数据源, 针对生产数据库). 使用这个 Select 就可以准备好:
SELECT $__timeEpoch(S.Startdate), S.logonduration 作为 value, U.FullName 作为 metric FROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[会期] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[用户] U WHERE $__timeFilter(S.Startdate) 并且 s.userid=U.id ORDER BY S.Startdate ASC
打开的应用程序,
作为最后一个示例,我给大家提供一个表,我们可以看到用户正在打开的应用程序, 这样我们就可以对我们的环境中发生的情况有一些了解. 我们创建一个图形类型的面板,在这种情况下,通过以下 Select 可以实现:
SELECT $__timeEpoch(AI.Startdate), 1 作为值, --tata 作为 metric, A.PublishedName 作为 metric FROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[会期] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[用户] 或, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[连接] C, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[应用程序] 自, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[applicationinstance] AI WHERE $__timeFilter(S.Startdate) 并且 s.userid=U.id 并且 S.currentconnectionid=c.id 并且 AI.sessionkey=S.sessionkey 并且 A.id=AI.applicationid ORDER BY S.Startdate ASC
Este post la idea que tiene es eso, que sepáis que se pueden explotar cualquier base de datos que tengamos en nuestras organizaciones, y visualizar sus datos, otros ejemplos que tengo es eso, visualizaciones en quesito de qué versiones tienen los usuarios de Citrix Receiver/Citrix Workspace… O si tenéis un ERP, 一样, explotarlo y visualizar datos de Navision, 树液… o si tenéis un gestor de tiempos, estoy seguro que a vuestros jefes les encantaría tener reports en tiempo real con los datos que les interesa! Acordaros que también luego podéis exportar esto en un PDF bonito y que se envíe por correo electrónico de manera programada a los destinatarios que nos interese.
¡Espero os haya interesado!











































