Verify Component Configuration
Telemetry-Based Components
For all components that use the Telemetry Service (DDC, StoreFront™, VDA, PVS, FAS, Session Recording, WEM), the configuration is written to the same registry location and can be verified using the following methods.
Registry Path
All Telemetry-based components share this registry path, managed exclusively by the Telemetry Service:
HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\Telemetry\AOT
<!--NeedCopy-->
Registry Query Commands
Windows-based components (DDC, StoreFront, Windows VDA, PVS, FAS, Session Recording, WEM):
Get-ItemProperty -Path "HKLM:\SOFTWARE\Citrix\Telemetry\AOT"
<!--NeedCopy-->
Linux VDA and Mac VDA:
/opt/Citrix/VDA/bin/ctxreg dump | grep -i AOT
<!--NeedCopy-->
Expected Registry Values
| Registry Value | Type | Expected Value | Description |
|---|---|---|---|
EnableAotDataCollection |
DWORD | 1 | AOT is enabled. 0 means AOT is disabled. |
AotDataStoreEndpoint |
REG_SZ |
|
The log server endpoint. Must not be empty. |
Role |
REG_SZ | See table below | Identifies which Citrix component role(s) are active on this machine. |
Expected Role Values by Component
| Machine Type | Expected Role Value |
|---|---|
| Delivery Controller only | DDC |
| StoreFront only | StoreFront |
| DDC + StoreFront on the same machine | DDC,StoreFront |
| Windows VDA | WVDA |
| Linux VDA | LVDA |
| Mac VDA | MVDA |
| PVS Server | PVS |
| FAS Server | FAS |
| Session Recording Server | SessionRecording |
| WEM Server | WEM |
Verify via Telemetry Service Log
In addition to registry checks, confirm that the Telemetry Service has successfully initialized AOT log collection by inspecting the AOT Listener log file.
Log File Location:
C:\ProgramData\Citrix\TelemetryService\AotListener.log
<!--NeedCopy-->
Verification Command:
Select-String -Path "C:\ProgramData\Citrix\TelemetryService\AotListener.log" `
-Pattern "Adding provider|Start RealTimeAOTTraceSession"
<!--NeedCopy-->
Key Log Entries to Look For:
| Log Entry | Description |
|---|---|
Adding provider [GUID] for AOT Uploading |
A specific component provider has been successfully registered for AOT log collection. |
Start RealTimeAOTTraceSession for [Role] |
The real-time AOT trace session has been started for the specified component role (e.g., DDC, StoreFront, VDA). |
Direct-Upload Components
The following components bypass the Telemetry Service and upload AOT logs directly to the log server. Verification must be performed using component-specific methods.
License Server
Run the following command to confirm the AotServerURL value is populated in the License Server config file:
Select-String -Path "C:\Program Files (x86)\Citrix\Licensing\WebServicesForLicensing\SimpleLicenseServiceConfig.xml" `
-Pattern "AotServerURL"
<!--NeedCopy-->
Expected Output:
<AotServerURL>https://<log-server-ip>:<port>/ctxlogserver/UploadCitrixLogStream</AotServerURL>
<!--NeedCopy-->
Citrix Workspace App (CWA) for Windows
CWA uses a native registry key to control the AOT collection switch. Verify it is set correctly on the client machine:
Registry Path:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Citrix\Dazzle
<!--NeedCopy-->
Verification Command:
Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\WOW6432Node\Citrix\Dazzle" `
-Name "AotLogCollectionEnabled"
<!--NeedCopy-->
Expected Output: True
Note:
Even when this registry key is correctly set, CWA AOT logs are only uploaded when a user actively launches a resource. If no uploads are observed, confirm that AOT is enabled on the Delivery Controller side first, and verify that StoreFront has a valid log server address synchronized from Web Studio.
NetScaler® / Citrix Gateway
Verification is performed through the NetScaler CLI.
Step 1 — Verify the Syslog Action exists and is correctly configured:
show audit syslogAction <ActionName>
<!--NeedCopy-->
| Field | Expected Value |
|---|---|
Server |
IP or FQDN of the AOT log server |
serverPort |
Configured log server port |
Transport |
HTTP |
httpEndpointUrl |
AOT log server URL |
httpAuthToken |
AuthKey value (non-empty) |
httpSchemaFile |
Path to the generated schema file |
Step 2 — Verify the Syslog Policy is bound:
show audit syslogPolicy <PolicyName>
<!--NeedCopy-->
Expected Output:
Name: <PolicyName> Rule: TRUE Action: <ActionName>
<!--NeedCopy-->