
Grafanaを使用したCitrixファームの活用
よし, Citrixがそのデータベースに保存する情報をどう活用できるかを見ていく投稿をお届けします. 皆さんもご存知かと思いますが, Citrixは私たちのCitrixファームで何が起こっているかのログをデータベースに保存しています, でもそれはそうです, 支払った分だけ, 得られるものがある, それです, どのエディションを使っているかによって、Citrixはそのデータベースに情報を保存します 1 週, 又は 1 月ごとに 1 年. ここではGrafanaを使って日付に制限なしで自分たちのパネルを作る方法を見ていきます!
私が言ったこと, この投稿ではユーザーのセッションに関する一例だけを見ていきます, どこで誰が何をいつ開いたかの履歴を持ちます, もちろん、Citrixサーバーのパフォーマンスを視覚化することもできます, デリバリーコントローラー, VDA… クライアントなど, 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 nuestra) 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, que depende de los datos que queráis traer habrá que traer datos de otras tablas, que no lo pongo ahora para no complicaros la vida 😉
Histórico de Sesiones Citrix,
そして何もない, con los datos ya almacenados, いつも通り, deberemos crear un DataSource u Origen de Datos nuevo contra el servidor SQL en cuestión y la BD de Citrix que acabamos de crear, así podremos hacerle consultas. Para hacer la visualización en tabla, personalmente me gusta más usar el panel ‘Datatable Panel‘ de Brian Gann (veréis en el link lo fácil que se instala ese tipo de Panel), es que así podremos hacer filtros, búsquedas…
Y será tan sencillo como meter esta query:
選ぶ [FullName] AS 'NOMBRE', [StartDate] AS 'HORA INICIO', case when [SessionIdleTime] Is null then [EndDate] when [enddate] IS not null and [SessionIdleTime] IS not null then [SessionIdleTime] end as 'HORA FIN', case when [SessionIdleTime] Is null and [EndDate] IS not null then 'CIERRE USUARIO' when [SessionIdleTime] Is not null and [EndDate] IS not null and DATEDIFF(hour,[SessionIdleTime],[enddate])&アンプ;アンプ;GTの;=2 then 'CIERRE POR INACTIVIDAD' when [SessionIdleTime] Is not null and [EndDate] IS not null and DATEDIFF(hour,[SessionIdleTime],[enddate])&アンプ;アンプ;中尉;2 then 'CIERRE USUARIO' end as 'TIPO CIERRE', --[SessionIdleTime], -- [EndDate], case when [ConnectedViaIPAddress] ='DIRECCION_IP_NETSCALER_GATEWAY'の場合は'FUERA OFICINA'それ以外は'OFICINA'end as 'CONEXION DESDE'--, -- [ConnectedViaIPAddress], -- [ConnectionID] 差出人 [LogCitrix].[dbo].[セッション] where [FullName] &アンプ;アンプ;中尉;&アンプ;アンプ;GTの; 'Rubén Tercero García'と [StartDate]&アンプ;アンプ;GTの;'2019-09-23'StartDateの降順で並べ替え
ログオン時間,
Citrix環境におけるログオン時間は非常に重要であることがわかっています, 私たちが望むなら, ユーザーがセッションを開くのにかかる時間を可視化できます (そして、それがいつか), この場合UPMを使用しているためであり FSLogixの (モバイルプロファイルの問題が解消されます). そして、これをこの履歴のデータベースに問い合わせるのではなく, 直接Citrixの本番データベースに問い合わせることができます, この場合はMonitoringのデータベースへ (なので覚えておいてください, これにはGrafanaで別のDataSourceを作成する必要があります, 本番のデータベースに対して). このSelectが準備完了です:
SELECT$__timeEpoch(S.Startdate), S.logonduration as value, U.FullName as metricFROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[セッション] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[利用者] U WHERE $__timeFilter(S.Startdate) and s.userid=U.id ORDER BY S.Startdate ASC
Apps abiertas,
Como último ejemplo os dejo una tabla donde podemos ir viendo las apps que van abriendo los usuarios, así tenemos algo de idea de qué pasa en nuestra granja. Hacemos un panel de tipo gráfico y en este caso mediante la siguiente Select lo tendríamos:
SELECT$__timeEpoch(AI.Startdate), 1 値として, --tata as metric, A.PublishedName as metric FROM [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[セッション] S, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[利用者] 又は, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[接続] C, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[application] 宛先, [NOMBRE_BD_CITRIX_MONITORING].[MonitorData].[applicationinstance] AI WHERE $__timeFilter(S.Startdate) and s.userid=U.id and S.currentconnectionid=c.id and AI.sessionkey=S.sessionkey and 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!