Citrix CQI – Verbindungsqualtitätsanzeige

Ein kurzes und knappes How-To, um den Connection Quality Indicator oder auch die Citrix Verbindungsqualtitätsanzeige (Citrix CQI) einzurichten.

Dazu wird folgendes benötigt:

Die Installation des Tools ist relativ unspektakulär und lässt sich nach dem Akzeptieren der Lizenzvereinbarung starten. Zum Abschluss der Installation muss nur noch die Entscheidung getroffen werden, ob man am Programm zur Verbesserung der Benutzerfreundlichkeit teilnehmen möchte oder nicht. That’s it.

Nach der Installation findet man unter „C:\Program Files (x86)\Citrix\Connection Quality Indicator“ (bzw. „C:\Program Files\Citrix\Connection Quality Indicator“ bei 32-Bit Systemen) den Ordner „Configuration“. Darin enthalten sind die Gruppenrichtlinien Vorlagen und deren Sprachdateien (CitrixCQI.admx und CitrixCQI.adml / CitrixBase.admx sowie CitrixBase.adml). Die ADMX Vorlagen werden nach „\%USERDNSDOMAIN%\sysvol\%USERDNSDOMAIN%\Policies\PolicyDefinitions“ kopiert und die ADML Sprachdateien in den jeweiligen zur Sprache passenden Ordner („de-DE“; „en-US“; …).

Jetzt erstellt man sich ein neues GPO oder benutzt ein bestehendes. Sobald das GPO geöffnet ist findet man in der „Computerkonfiguration -> Richtlinien -> Administrative Vorlagen -> Citrix Components -> Virtual Desktop Agent -> CQI“ drei neue Einstellungen.

  • CQI aktivieren
  • Benachrichtigungsanzeigeeinstellungen
  • Verbindungsschwellenwerteinstellungen

In meinem Fall habe ich „CQI aktivieren“ aktiviert und den Wert „Leistungsindikatoren – Aktualisierungsrate“ auf der Standardeinstellung „5“ belassen.

Die „Benachrichtungsanzeigeeinstellungen“ habe ich in den beiden Punkten zur „Standardbenachrichtigungsoptione für Desktop / Seamless“ auf „Unten rechts“ konfiguriert sowie die beiden Haken bei „Alle Benachrichtigungen deaktivieren“ / „“Akkustische Benachrichtigungen deaktivieren“ gesetzt. Den Rest habe ich auf den Default-Einstellungen belassen.

Ebenfalls wurden die Einstellungen der Citrix CQI „Verbindungsschwellenwerteinstellungen“ auf Standard belassen.

Nach einem „gpupdate“ auf der VDA bzw. spätestens nach einem Reboot können die User die Verbindungsqualtitätsanzeige sehen (und nutzen). Der Admin findet die entsprechenden Informationen entweder mühsam im Benutzerprofil unter „%temp%\Citrix\CQI“ oder gesammelt und geordnet in der Windows Ereignisanzeige (Anwendungs- und Dienstprotokolle -> Citrix -> VDA -> CQI -> Admin (oder Debug)):

  • Event ID 1005 (Information): Gute Verbindung
  • Event ID 1006 (Warnung): Schwache Verbindung
  • Event ID 1007 (Warnung): Schlechte Verbindung

Citrix AD-Identitätsdienst startet nicht

Eine Woche nach dem Update von XenApp 7.18 auf Cirtix Virtual Apps & Desktops (CVAD) 7 1811 startete nach einem Reboot des Delivery Controllers der Citrix AD-Identitätsdienst (CitrixADIdentityService) nicht mehr.

Die Bereitstellung an sich lief ohne Probleme. Allerdings war es nicht möglich die Site im Citrix Studio zu bearbeiten. Der erste Step zum Troubleshooting war, wie so häufig, ein Blick in die Ereignisanzeige, bei dem direkt drei Events auffielen:

  • .Net Runtime mit der Event-ID 1026

Anwendung: Citrix.ADIdentity.exe
Frameworkversion: v4.0.30319
Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
Ausnahmeinformationen: System.IO.DirectoryNotFoundException
bei System.IO.__Error.WinIOError(Int32, System.String)
bei System.IO.FileSystemEnumerableIterator1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].CommonInit() bei System.IO.FileSystemEnumerableIterator1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]..ctor(System.String, System.String, System.String, System.IO.SearchOption, System.IO.SearchResultHandler1<System.__Canon>, Boolean) bei System.IO.Directory.GetFiles(System.String, System.String) bei Citrix.Fma.Sdk.Dal.Probe.XduSupport.GetXduFiles(System.String) bei Citrix.Fma.Sdk.Dal.Probe.SchemaProbeDAL.DiscoverDbUpdates(System.String, System.String, System.String, Boolean) bei Citrix.Fma.Sdk.ServiceCore.SqlContext.DoDiscoverDbUpdates(System.String) bei Citrix.Fma.Sdk.ServiceCore.SqlContext.StartDal(System.String) bei Citrix.Fma.Sdk.ServiceCore.SqlContext.StartDal() bei Citrix.Fma.Sdk.ServiceCore.SqlContext.Connect() bei Citrix.ADIdentity.Logic.ADIdentityLogic.Initialize() bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].InitializeService()
bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].RunStartupSequence() bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].DoWork()
bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].DoWorkShell()
bei System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
bei System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
bei System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
bei System.Threading.ThreadHelper.ThreadStart()

.Net Runtime Event-ID 1026
  • Application Error mit der Event-ID 1000 (100)

Name der fehlerhaften Anwendung: Citrix.ADIdentity.exe, Version: 7.20.0.50, Zeitstempel: 0x5bef13e6
Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 10.0.14393.2636, Zeitstempel: 0x5bda7edc
Ausnahmecode: 0xe0434352
Fehleroffset: 0x0000000000034048
ID des fehlerhaften Prozesses: 0x758
Startzeit der fehlerhaften Anwendung: 0x01d4ae7e1c93a320
Pfad der fehlerhaften Anwendung: C:\Program Files\Citrix\ADIdentity\Service\Citrix.ADIdentity.exe
Pfad des fehlerhaften Moduls: C:\Windows\System32\KERNELBASE.dll
Berichtskennung: e0dc6929-2b5a-4ca3-8e14-1bc6efa367be
Vollständiger Name des fehlerhaften Pakets:
Anwendungs-ID, die relativ zum fehlerhaften Paket ist:

Application Error Event-ID 1000 (100)
  • Service Control Manager mit der Event-ID 7031

Der Dienst „Citrix AD-Identitätsdienst“ wurde unerwartet beendet. Dies ist bereits 3 Mal vorgekommen. Folgende Korrekturmaßnahmen werden in 60000 Millisekunden durchgeführt: Neustart des Diensts.

Service Control Manager Event-ID 7031

Leider blieb die Auswertung der Events wenig aufschlussreich. Lediglich „System.IO.DirectoryNotFoundException“ aus dem .Net Runtime Fehler lässt evtl. erahnen, wo bzw. was hapert. Daher wurde als nächstes geprüft, ob der Dienst bzw. die ausführbare Datei „Citrix.ADIdentity.exe“ ein Logfile schreibt oder ob sich ein Log erstellen lässt. Daher kurzerhand in „C:\Program Files\Citrix\ADIdentity\Service\“ und den Executable mit dem Parameter „/?“ gestartet:

C:\Program Files\Citrix\ADIdentity\Service>Citrix.ADIdentity.exe -?
Use this command to configure the Citrix AD Identity Service.

It accepts the following parameters:

 -? or -Help        Display this usage message
 -Show              Show existing settings
 -Logfile <file>    Configure logging to go to <file>
 -ClearLogfile      Clear log file configuration
 -ConfigureFirewall Update Windows Firewall exclusions for the configured ports
 -SdkPort <port>    Configure the port for the administration SDK
 -KeyPort <port>    Configure the port for the peer-service SDK
 -SvcPort <port>    Configure the port for the inter-service SDK
 -Uninstall         Remove configuration settings, including Windows Firewall
                    exclusions, and reserved URLs
 -Upgrade           Perform actions needed after an upgrade of the service to
                    a new version
 -Quiet             Do not output status messages
 -Install           Perform basic install actions to activate the service.

Et voilà: „-Logfile <file> Configure logging to go to“. Schnell in der gleichen Eingabeaufforderung

C:\Program Files\Citrix\ADIdentity\Service>Citrix.ADIdentity.exe -Lgofile "C:\install\ADIdentity.log"

gestartet und direkt einen Blick ins Logfile geworfen, ergab dann die Quelle des des nicht gefundenen Verzeichnisses.

17/01/19 18:39:18.375 2332 0009 11340: ADIdentityLog:System.IO.DirectoryNotFoundException: Ein Teil des Pfades „C:\Program Files\Citrix\ADIdentity\Service\UpdateScripts“ konnte nicht gefunden werden.
bei System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.FileSystemEnumerableIterator1.CommonInit() bei System.IO.FileSystemEnumerableIterator1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler1 resultHandler, Boolean checkHost) bei System.IO.Directory.GetFiles(String path, String searchPattern) bei Citrix.Fma.Sdk.Dal.Probe.XduSupport.GetXduFiles(String dir) bei Citrix.Fma.Sdk.Dal.Probe.SchemaProbeDAL.DiscoverDbUpdates(String path, String targetService, String targetDataStore, Boolean saveMissingUpdates) bei Citrix.Fma.Sdk.ServiceCore.SqlContext.DoDiscoverDbUpdates(String dataStore) bei Citrix.Fma.Sdk.ServiceCore.SqlContext.StartDal(String dataStore) bei Citrix.Fma.Sdk.ServiceCore.SqlContext.StartDal() bei Citrix.Fma.Sdk.ServiceCore.SqlContext.Connect() bei Citrix.ADIdentity.Logic.ADIdentityLogic.Initialize() bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner1.InitializeService()
bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner1.RunStartupSequence() bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner1.DoWork()
bei Citrix.Fma.Sdk.ServiceCore.ServiceRunner`1.DoWorkShell()

C:\install\ADIdentity.log

Somit hat „System.IO.DirectoryNotFoundException“ einen Namen bekommen: „C:\Program Files\Citrix\ADIdentity\Service\UpdateScripts„. Ein Blick ins Verzeichnis ergab, dass dort tatsächlich der Ordner „UpdateScripts“ fehlte. Als der Ordner angelegt wurde, startet der Citrix AD-Identitätsdienst (CitrixADIdentityService) sofort. Vorsichtshalber habe ich das Verzeichnis in einer anderen CVAD 7 1811 Umgebung geprüft und verglichen. Dabei wurde festgestellt, dass weitere Ordner und Dateien fehlten. Daher auf der aktuellen Citrix Virtual Apps & Desktops 7 1811 ISO ins Verzeichnis „C:\install\CVAD7_1811\x64\Citrix Desktop Delivery Controller“ gewechselt und das „ADIdentity_Service_x64.msi“ Paket repariert. Danach waren auch alle anderen Ordner und Verzeichnisse vorhanden.

Zum Schluss sei noch angemerkt, dass man das Logging der Citrix.ADIdentity.exe wieder deaktivieren sollte, da das Logfile rasch anwächst. Zum Deaktivieren ist der Parameter „-ClearLogfile“ gedacht.

C:\Program Files\Citrix\ADIdentity\Service>Citrix.ADIdentity.exe -clearlogfile
Stopping service: Citrix AD Identity Service
Starting service: Citrix AD Identity Service

Citrix Workspace App 1812 virtual Monitor

Soeben machte mich mein Notebook auf das Workspace App 1812 Update aufmerksam. Download gestartet, Update der Workspace App durchgeführt und Change Log gelesen.

Was stelle ich fest? Zum Einen gibt es jetzt eine DPI-Anpassung unter Windows 10 (DPI matching on Windows 10) und zum Anderen können jetzt virtuelle Monitore (Virtual display layout) in der Workspace App 1812 definiert werden. Das ist ganz praktisch für 4K Monitore mit recht hoher Auflösung.

Virtual display layout
This feature lets you define a virtual monitor layout that applies to the remote desktop and to virtually split a single client monitor into up to eight monitors on the remote desktop. You can configure the virtual monitors on the Monitor Layout tab in the Desktop Viewer. There, you can draw horizontal or vertical lines to separate the screen into virtual monitors. The screen is split according to specified percentages of the client monitor resolution.


You can set a DPI for the virtual monitors that is used for DPI scaling or DPI matching. After applying a virtual monitor layout, resize or reconnect the session.

This configuration applies only to full-screen, single-monitor desktop sessions, and does not affect any published applications. This configuration applies to all subsequent connections from this client.

DPI matching on Windows 10

DPI matching allows the Windows 10 desktop session to match the DPI of the endpoint when using Citrix Workspace app for Windows.

https://docs.citrix.com/en-us/citrix-workspace-app-for-windows/about.html

Um einen virtuellen Monitor zu erstellen, genügt es eine Verbindung mit dem virtuellen Desktop / einer Server Session herzustellen und im Desktop Viewer (der schwarzen „Verbindungsleiste“) in die Einstellungen zu wechseln und dort den Reiter „Bildschirmlayout“ zu wählen. Dort lässt sich der Desktop / die Desktop Session dann horizontal und / oder vertikal in bis zu acht virtuelle Monitore unterteilen. Nachdem die Unterteilung erfolgt ist, muss die Desktop Session neu gestartet werden oder vom Fenster in den Vollbildmodus gewechselt werden.