Monitoring Citrix Cloud

M

Sinds de introductie van XenApp en XenDesktop 7 levert Citrix de monitoring tool Director mee bij alle versies van hun software. Hiermee kunnen beheerders hun XenApp en XenDesktop omgeving monitoren en pro-actief beheren.

Met de introductie van Citrix Cloud hebben beheerders mogelijkheid om de monitoring data van XenApp & XenDesktop service en de daar opvolgende trends uit Director tot 90 dagen terug in te zien.

Maar wat nu als de trends en rapporten in Director niet voldoen?

Of wanneer je de data langer dan 90 dagen wilt opslaan en inzien?

Tot voor kort was je aangewezen op de custom reports van Director, maar sinds kort bied Citrix je ook de mogelijkheid om zelf direct de monitor database van Citrix aan te spreken.

Met OData kan de data uit de monitor database opgevraagd worden. Vervolgens kunnen we daar onze eigen queries op loslaten om rapporten te definiëren of om een eigen monitor dashboard te vullen.

OData is een protocol om data op te vragen die gebruikt maakt van standaard protocollen zoals HTTP en methodes zoals REST (REpresentational State Transfer).

Citrix maakt gebruik van token authenticatie om de data op te kunnen vragen. Hiervoor is een zogenaamd bearer token nodig. Dit bearer token kan aangevraagd worden via powershell en maakt gebruik van de API van Citrix Cloud.

Secure Client

Om een bearer token aan te vragen is een secure client nodig. Deze kan aangemaakt worden in Citrix Cloud bij Identity Management onder de kop API Access.

De secure client bestaat uit een ID en een bijbehorend Secret.

Bearer token

Nu we de secure client hebben kunnen we via PowerShell het bearer token aanmaken.

function GetBearerToken {
param (
[Parameter(Mandatory=$true)]
[string] $clientId,
[Parameter(Mandatory=$true)]
[string] $clientSecret
)

$postHeaders = @{“Content-Type”=”application/json”}
$body = @{
“ClientId”=$clientId;
“ClientSecret”=$clientSecret
}

$trustUrl = “https://trust.citrixworkspacesapi.net/root/tokens/clients”
$response = Invoke-RestMethod -Uri $trustUrl -Method POST -Body (ConvertTo-Json $body) -Headers $postHeaders
$bearerToken = $response.token
return $bearerToken;
}

$clientId = “ClientID”
$clientSecret = “ClientSecret”
$bearerToken = GetBearerToken $clientId $clientSecret
$token = “CwsAuth Bearer=”+$bearerToken

Opvragen data

Met het bearer token in bezit in de variabele $bearerToken kunnen we nu met PowerShell de data opvragen door invoke-webrequest aan te roepen.

Hiervoor is naast het bearer token ook een customer ID nodig. In mijn voorbeeld is dat ‘Admin7255’.

$headers = @{“Authorization” = “$token”; “Customer” = “Admin7255”}
$url = “https://Admin7255.xendesktop.net/Citrix/Monitor/OData/v4/Data/Users”
$result = Invoke-WebRequest -Uri $url -Headers $headers

In dit voorbeeld hebben we de Monitor database gevraagd om gegevens over de gebruikers.
Het resultaat in $result kunnen we vervolgens naar een bestand wegschrijven:

Uiteraard hoeven we geen PowerShell te gebruiken. Nu we de bearer token hebben kunnen we de data ook opvragen in bijvoorbeeld Excel of in PowerBI.

In het onderstaande voorbeeld maak ik gebruik van PowerBI desktop om de data op te halen

Start met het ophalen van de gegevens:

Kies hierbij niet voor een OData-feed, maar voor een lege query:

In de Power Query-editor kiezen we voor de geavanceerde editor

De Source is de Odata feed die we ook in Powershell gebruikt hebben alleen vraag ik hier niet data van over Gebruikers op, maar de over de Machines:

“https://Admin7255.xendesktop.net/Citrix/Monitor/OData/v4/Data/Machines”

Ook hier geven we in de header het bearer token en de customer ID op

Zodra de we query hebben opgeslagen kunnen we met de data aan de slag

Daarnaast kunnen we samen gestelde queries maken:

https://{customerID}.xendesktop.net/Citrix/monitor/odata/v4/data/Users?$filter=Sessions/any(session: session/LogOnDuration gt 600000)

We kunnen daar bijvoorbeeld een filter aan toevoegen, in dit geval vragen we de sessies op van gebruikers die langer dan 10 minuten over het inloggen hebben moeten wachten.

Uiteraard beperken de mogelijkheden zich niet tot de gegevens over de gebruikers of Machines in Citrix Cloud. Om uitgebreidere queries mogelijk te maken heeft Citrix het database schema van de Monitor Service vrijgegeven.

https://developer-docs.citrix.com/projects/monitor-service-odata-api/en/7.16/#monitor-service-schema

https://developer-docs.citrix.com/projects/monitor-service-odata-api/en/7.16/api-schema.png

Meer informatie over OData is beschikbaar op de website van OData op https://www.odata.org/

Over de auteur

Eltjo van Gulik

Eltjo is een enthousiaste en gedreven technisch consultant met ruim 18 jaar ervaring in de IT met een sterke focus op server- en applicatie virtualisatie producten van onder andere Microsoft (RDS, App-v, etc) en Citrix (XenDesktop, XenApp) en het installeren, configureren en beheren van applicaties binnen deze omgevingen.

Door Eltjo van Gulik

Over

Eltjo van Gulik

Eltjo is een enthousiaste en gedreven technisch consultant met ruim 18 jaar ervaring in de IT met een sterke focus op server- en applicatie virtualisatie producten van onder andere Microsoft (RDS, App-v, etc) en Citrix (XenDesktop, XenApp) en het installeren, configureren en beheren van applicaties binnen deze omgevingen.

Contact