Outil de visibilité du cache d’hôte local
Cet article décrit l’outil de visibilité en temps réel du cache d’hôte local (LHC), une solution basée sur PowerShell qui offre une visibilité sur les environnements de cache d’hôte local Citrix. À l’aide de cet outil, vous pouvez surveiller l’état des Cloud Connector, identifier le leader élu en mode LHC, contrôler le mode de panne forcée et interroger les journaux d’événements pour dépanner le comportement du LHC.
Vue d’ensemble
L’outil de visibilité en temps réel du cache d’hôte local (LHC) est une solution complète basée sur PowerShell pour assurer la visibilité dans les environnements de cache d’hôte local Citrix. Il fournit à la fois une interface de ligne de commande et des interfaces utilisateur graphiques simples accessibles depuis le Cloud Connector pour vous permettre de :
- Découvrir les Cloud Connector dans une zone ou un emplacement de ressources.
- Identifier le leader élu en mode LHC.
- Activer ou désactiver le mode de panne forcée sur tous les Cloud Connector de la zone ou de l’emplacement de ressources.
- Interroger les journaux d’événements de fournisseurs spécifiques et d’ID d’événements.
- Exécuter des commandes Broker PowerShell sur le leader élu.
Prérequis
Avant de déployer et d’exécuter l’outil de visibilité du cache d’hôte local, assurez-vous que votre environnement répond aux exigences système, aux autorisations et aux exigences de fichiers suivantes.
Configuration système requise
- Windows Server 2016 ou version ultérieure
- PowerShell 5.1 ou version supérieure
- Doit être exécuté sur un Citrix Cloud Connector™
- Services requis :
- Service de haute disponibilité Citrix
- Service Citrix ConfigSync
Autorisations
- Privilèges d’administrateur sur la machine locale
- Autorisations d’exécution PowerShell à distance pour tous les Cloud Connectors de la zone
- Connectivité réseau à tous les Cloud Connectors
Fichiers requis
-
LHCVisibilityTool.ps1- Module PowerShell principal -
LHCVisibilityToolGUI.ps1- Application GUI -
HighAvailabilityServiceControl.psm1- Module de contrôle du service HA Citrix
Le script PowerShell de l’interface graphique se trouve à l’emplacement suivant :
C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts
<!--NeedCopy-->
Démarrer
Avant d’exécuter l’outil, définissez la stratégie d’exécution PowerShell à l’aide de l’une des options suivantes :
-
Option 1 : RemoteSigned (plus restrictive) :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser <!--NeedCopy--> -
Option 2 : Session actuelle uniquement (temporaire) :
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process <!--NeedCopy-->
Remarque :
Vous devrez peut-être exécuter PowerShell en tant qu’administrateur pour modifier la stratégie d’exécution. Si vous ne disposez que d’autorisations de niveau utilisateur, utilisez
-Scope CurrentUser.
Utiliser l’outil via l’application GUI
L’interface graphique fournit une interface à onglets pour découvrir les Cloud Connectors, contrôler le mode de panne, interroger les journaux d’événements et exécuter des commandes de broker. Après avoir lancé l’outil, sélectionnez une tâche pour accéder à ses instructions :
- Lancer l’interface graphique
- Découvrir les Cloud Connectors et identifier le leader
- Contrôler le mode de panne forcée
- Interroger et suivre les journaux d’événements
- Exécuter des commandes de broker
- Afficher les journaux de session
Lancer l’interface graphique
cd "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts"
.\LHCVisibilityToolGUI.ps1
<!--NeedCopy-->

L’outil utilise une disposition à trois onglets avec une barre d’état persistante en bas.

La barre d’état s’étend sur le bas de la fenêtre et contient :
| Élément | Description |
|---|---|
| État de l’opération (gauche) | Opération actuelle, ou « Prêt » |
| État du mode HA | Indicateurs de points par connecteur (5 maximum affichés ; « +N autres » si tronqué) ; l’info-bulle au survol affiche la liste complète |
| Dernière mise à jour | Horodatage de la dernière actualisation réussie de l’état HA |
| Afficher le journal | Ouvre le fichier journal de session dans le Bloc-notes |
La barre d’état utilise les couleurs suivantes pour indiquer l’état HA :
| État | Couleur |
|---|---|
| WorkingNormally | Vert |
| PendingHA | Jaune doré |
| PendingRecovery | Orange |
| InitialHA | Rouge |
| ExtendedHA | Rouge |
| Inconnu / Inaccessible | Gris |
Découvrir les Cloud Connectors et identifier le leader
Dans l’onglet System Status & Control, cliquez sur Discover and Identify Leader. L’outil détecte et affiche automatiquement le leader élu parmi tous les Cloud Connectors de la zone en utilisant :
- Analyse du journal d’événements (ID d’événement 3504)
- Informations PeerStatus et IsElected du Registre
- Vérification du service local

Contrôler le mode de panne forcée
Dans l’onglet État et contrôle du système, utilisez les contrôles du mode de panne pour gérer le mode HA dans la zone :
-
Activer le mode de panne forcée :
- Force tous les Cloud Connectors de la zone à passer en mode HA
- Utilise le cache d’hôte local pour le courtage
- Nécessite la synchronisation de la base de données LHC
-
Désactiver le mode de panne forcée :
- Permet au système de revenir à un fonctionnement normal
- Se reconnecte au site principal lorsqu’il est disponible
Avertissement :
Ces actions affectent tous les Cloud Connectors de la zone.
Interroger et suivre les journaux d’événements
Dans l’onglet Requête du journal d’événements, configurez les paramètres de requête suivants :
-
Cible : Choisissez parmi :
- Tous les Cloud Connectors
- Leader élu uniquement
- Ordinateur spécifique (entrez le FQDN)
-
Nom du fournisseur : Sélectionnez ou entrez un fournisseur personnalisé :
- Service de haute disponibilité Citrix
- Service ConfigSync Citrix
- Service Broker Citrix
-
ID d’événement : Liste séparée par des virgules (par exemple,
3502,3503,3506) - Plage horaire : Filtrez éventuellement par heure de début et de fin
- Nombre maximal d’événements : Nombre maximal d’événements à récupérer par ordinateur (par défaut : 100)
Utilisez les boutons suivants pour travailler avec les événements :
- Interroger les événements : Interroge les journaux d’événements à l’aide des paramètres de requête configurés.
- Événements HA passés : Recherche les limites de début et de fin du LHC (événements 3502, 3503, 3508) à partir des paramètres de requête configurés et affiche l’événement de résumé final pour donner un aperçu.
- Effacer les événements : Efface la liste des événements, le panneau de détails et l’état de suivi.
- Exporter le rapport : Crée des statistiques à partir des événements interrogés dans l’interface graphique et les enregistre sous forme de fichier texte. (Utilise la sortie du bouton Afficher les statistiques d’événements.)

Le suivi en direct se comporte comme suit :
- Le suivi en direct surveille les nouveaux événements récapitulatifs toutes les 120 secondes tant que le LHC est actif.
- Lorsque le suivi en direct commence, il détermine l’heure de début du mode LHC en se référant à l’événement 3502 et répertorie tous les événements apparus depuis le début.
- Le suivi en direct peut être arrêté manuellement ou automatiquement lorsque le mode LHC se termine.
La section inférieure propose deux vues principales :
-
Volet gauche :
- Les événements sont répertoriés chronologiquement avec les détails clés (numéro d’événement, heure, ID, type).
- Chaque événement est visuellement distingué par une couleur basée sur son type, en suivant la référence de l’ID d’événement.
- La sélection d’un événement affiche des informations supplémentaires à son sujet.
-
Volet droit : Deux options d’affichage vous permettent de basculer entre les résumés statistiques et les informations détaillées de l’événement sélectionné :
- Afficher les détails de l’événement : Détails complets de l’événement choisi.
- Afficher les statistiques d’événements : Statistiques récapitulant les événements en mode HA, y compris les métriques tabulaires et les graphiques à barres ASCII des événements récapitulatifs (3507).
L’image suivante montre la vue des détails de l’événement :

L’image suivante montre la vue des statistiques d’événements :

Référence : ID d’événements HA et ConfigSync
Les sections suivantes répertorient les ID d’événements courants par fournisseur.
Service de haute disponibilité Citrix :
| ID d’événement | Description |
|---|---|
| 3502 | Mode HA activé (broker élu) |
| 3503 | Hors mode HA (opérations normales reprises) |
| 3506 | Mode HA activé (broker non élu) |
| 3507 | Résumé périodique du mode HA (broker élu) |
| 3508 | Fin du résumé du mode HA (broker élu) |
Service Citrix ConfigSync :
| ID d’événement | Description |
|---|---|
| 503 | Processus de synchronisation démarré |
| 504 | Synchronisation terminée avec succès |
| 505 | Échec de la synchronisation |
| 507 | Synchronisation abandonnée en raison du mode HA |
| 510 | Aucune donnée de configuration reçue |
| 517 | Problème de communication avec le broker principal |
| 518 | ConfigSync annulée (service HA non exécuté) |
Exécuter les commandes du broker
Dans l’onglet Commandes du broker, les commandes prédéfinies sont :
- Get-BrokerMachine : Récupérer les informations VDA/machine
- Get-BrokerSession : Récupérer les sessions actives
- Get-BrokerDesktopGroup : Récupérer les groupes de mise à disposition
- Get-BrokerCatalog : Récupérer les catalogues de machines
- Get-BrokerApplication : Récupérer les applications publiées

Conseil :
Utilisez la zone de texte du filtre pour rechercher simultanément dans toutes les colonnes de chaîne un élément spécifique dans les résultats.
Pour exécuter une commande personnalisée :
- Saisissez une commande, par exemple
Get-BrokerMachine -MaxRecordCount 2. - Spécifiez éventuellement les propriétés à renvoyer (séparées par des virgules).
- Cliquez sur Exécuter.

Remarque :
Les commandes du broker fournissent des informations récentes de la base de données LHC lorsque :
- Le système est en mode LHC.
- Un leader élu a été identifié.
- La base de données LHC est disponible.
Afficher les journaux de session
Pour ouvrir le journal de session actuel, cliquez sur Afficher le journal dans la barre d’état. Le journal s’ouvre dans le Bloc-notes.
Chaque session crée un fichier journal à l’emplacement %TEMP%\LHCVisibilityTool_<yyyyMMdd_HHmmss>.log. Les messages sont également écrits dans la console hôte avec un code couleur.
Utiliser l’outil via la ligne de commande
En plus de l’interface graphique, vous pouvez exécuter l’outil directement depuis PowerShell. Après avoir importé le module, utilisez les commandes suivantes pour effectuer chaque tâche. Sélectionnez une tâche pour accéder à sa commande :
- Lancer l’outil en ligne de commande
- Découvrir les Cloud Connectors
- Identifier le leader élu
- Obtenir l’état de la panne
- Interroger les journaux d’événements
- Exécuter des commandes de broker
- Contrôler le mode de panne
Lancer l’outil en ligne de commande
cd "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts"
. .\LHCVisibilityTool.ps1
<!--NeedCopy-->
Découvrir les Cloud Connectors
$connectors = Get-CloudConnectorsInZone
$connectors | ForEach-Object { Write-Host $_ }
<!--NeedCopy-->
Identifier le leader élu
$leader = Get-ElectedLeader
Write-Host "Elected Leader: $leader"
<!--NeedCopy-->
Obtenir l’état de la panne
$states = Get-OutageState
foreach ($connector in $states.Keys) {
Write-Host "$connector : $($states[$connector].State)"
}
<!--NeedCopy-->
Interroger les journaux d’événements
Interroger tous les Cloud Connectors pour les événements HA :
$results = Get-LHCEventLogs -EventID @(3502, 3503, 3506) `
-ProviderName "Citrix High Availability Service" `
-StartTime (Get-Date).AddDays(-7) `
-EndTime (Get-Date) `
-MaxEvents 100
# Display results
foreach ($computer in $results.Keys) {
Write-Host "`n=== $computer ==="
if ($results[$computer].Success) {
$results[$computer].Events | Format-Table TimeCreated, Id, Message -AutoSize
} else {
Write-Host "ERROR: $($results[$computer].Error)" -ForegroundColor Red
}
}
<!--NeedCopy-->
Interroger uniquement le leader élu :
$results = Get-LHCEventLogs -ComputerName "ElectedLeader" `
-EventID @(3507) `
-ProviderName "Citrix High Availability Service" `
-MaxEvents 50
<!--NeedCopy-->
Interroger un ordinateur spécifique :
$results = Get-LHCEventLogs -ComputerName "CC-01.domain.com" `
-EventID @(503, 504, 505) `
-ProviderName "Citrix ConfigSync Service"
<!--NeedCopy-->
Exécuter des commandes de broker
Obtenir toutes les machines :
$machines = Invoke-BrokerCommand -Command "Get-BrokerMachine" `
-Properties @("MachineName", "RegistrationState", "SessionCount")
$machines | Format-Table -AutoSize
<!--NeedCopy-->
Obtenir les sessions actives :
$sessions = Invoke-BrokerCommand -Command "Get-BrokerSession" `
-Properties @("UserName", "MachineName", "SessionState")
$sessions | Format-Table -AutoSize
<!--NeedCopy-->
Exécuter une commande personnalisée avec des paramètres :
$params = @{
MaxRecordCount = 10
}
$results = Invoke-BrokerCommand -Command "Get-BrokerMachine" `
-Parameters $params `
-Properties @("MachineName", "DesktopGroupName")
<!--NeedCopy-->
Contrôler le mode de panne
Activer le mode de panne forcée sur tous les Cloud Connectors :
$results = Set-LHCOutageMode -Enable
# Check results
foreach ($connector in $results.Keys) {
$status = if ($results[$connector].Success) { "SUCCESS" } else { "FAILED" }
Write-Host "$connector : $status"
if (-not $results[$connector].Success) {
Write-Host " Error: $($results[$connector].Error)" -ForegroundColor Red
}
}
<!--NeedCopy-->
Désactiver le mode de panne forcée :
$results = Set-LHCOutageMode
# Check results
foreach ($connector in $results.Keys) {
$status = if ($results[$connector].Success) { "SUCCESS" } else { "FAILED" }
Write-Host "$connector : $status"
}
<!--NeedCopy-->
Dépannage
Pour résoudre les problèmes liés à l’outil, suivez ce processus général :
- Vérifiez le journal des événements de l’application pour les messages d’erreur détaillés.
- Vérifiez que toutes les conditions préalables sont remplies.
- Passez en revue les problèmes courants dans le tableau suivant et les meilleures pratiques décrites plus loin dans cet article.
- Reportez-vous à Local Host Cache et à la note technique Avoid Common Misconfigurations that Can Negatively Impact DaaS Resiliency.
Le tableau suivant répertorie les problèmes courants que vous pourriez rencontrer lors de l’utilisation de l’outil et leurs solutions recommandées.
| Problème | Solution |
|---|---|
| Aucun Cloud Connector trouvé
|
|
| Impossible d’identifier le leader élu
|
|
| La commande du Broker a échoué
|
|
| Erreurs d’exécution à distance
|
|
| La requête du journal des événements ne renvoie aucun résultat
|
|
| Assurez-vous que les limites de taille du journal des événements n’ont pas entraîné l’écrasement d’anciens événements. |
Bonnes pratiques
Suivez ces bonnes pratiques pour tirer le meilleur parti de l’outil et pour exploiter votre environnement de cache d’hôte local en toute sécurité.
Surveillance régulière
- Exécutez Découvrir les Cloud Connectors et Identifier le leader élu périodiquement.
- Surveillez les événements
ConfigSync(503, 504, 505) pour les problèmes de synchronisation.
Analyse du journal des événements
- Interrogez les événements HA des 7 derniers jours pour comprendre les modèles de panne.
- Recherchez l’ID d’événement 3507 en mode HA pour des statistiques détaillées.
Commandes du Broker
- Exécuter uniquement sur le leader élu.
- Limitez la sélection de propriétés pour améliorer les performances.
- Utilisez le paramètre
MaxRecordCountpour les grands environnements.
Mode de panne
- Utilisez le mode de panne forcée uniquement pour les tests ou la maintenance planifiée.
- Toujours vérifier que la base de données LHC est synchronisée avant l’activation.
- Désactiver le mode de panne forcée une fois que la connectivité principale est rétablie.
Sécurité
- Exécuter avec des comptes à privilèges minimaux lorsque cela est possible.
- Utiliser des canaux sécurisés pour l’exécution à distance.
- Auditer les modifications du mode de panne.
Exemples
Les exemples suivants supposent que vous avez créé un dossier à l’emplacement C:\Reports pour contenir la sortie.
Exemple 1 : Rapport quotidien du mode HA
# Import module
. "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts\LHCVisibilityTool.ps1"
# Discover environment
$connectors = Get-CloudConnectorsInZone
Write-Host "Found $($connectors.Count) Cloud Connectors"
# Check HA status
$leader = Get-ElectedLeader
if ($leader) {
Write-Host "System is in HA mode. Elected leader: $leader"
# Get HA summary events from elected leader
$events = Get-LHCEventLogs -ComputerName "ElectedLeader" `
-EventID @(3507, 3508) `
-ProviderName "Citrix High Availability Service" `
-StartTime (Get-Date).AddHours(-24) `
-MaxEvents 100
# Export to file
$events[$leader].Events | Select-Object TimeCreated, Id, LevelDisplayName, Message | Export-Csv -Path "C:\Reports\HA-Status-$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
} else {
Write-Host "System is in normal operations mode"
}
<!--NeedCopy-->
Exemple 2 : Vérifier l’état de ConfigSync sur tous les connecteurs
. "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts\LHCVisibilityTool.ps1"
$results = Get-LHCEventLogs -ComputerName "All" `
-EventID @(503, 504, 505) `
-ProviderName "Citrix ConfigSync Service" `
-StartTime (Get-Date).AddHours(-6) `
-MaxEvents 10
foreach ($computer in $results.Keys) {
$lastEvent = $results[$computer].Events | Sort-Object TimeCreated -Descending | Select-Object -First 1
$status = switch ($lastEvent.Id) {
503 { "In Progress" }
504 { "Success" }
505 { "Failed" }
}
Write-Host "$computer - Last Sync: $($lastEvent.TimeCreated) - Status: $status"
}
<!--NeedCopy-->
Exemple 3 : Obtenir le nombre de sessions en mode HA
. "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts\LHCVisibilityTool.ps1"
# Ensure we have an elected leader
$leader = Get-ElectedLeader
if ($leader) {
# Get all sessions
$sessions = Invoke-BrokerCommand -Command "Get-BrokerSession"
Write-Host "Total Sessions: $($sessions.Count)"
# Group by state
$sessionsByState = $sessions | Group-Object SessionState
foreach ($group in $sessionsByState) {
Write-Host " $($group.Name): $($group.Count)"
}
} else {
Write-Host "Not in HA mode - cannot query sessions from LHC"
}
<!--NeedCopy-->
Scénarios avancés
Les scénarios suivants combinent plusieurs fonctions de l’outil dans des scripts pour des opérations plus complexes, telles que l’automatisation des tests de panne et l’exportation des données historiques du mode HA.
Automatiser les tests de panne
# Enable outage mode
Write-Host "Enabling forced outage mode..."
$enableResults = Set-LHCOutageMode -Enable
$allEnabled = $enableResults.Values | Where-Object { -not $_.Success }
if ($allEnabled) {
Write-Host "WARNING: Some connectors failed to enable outage mode - aborting test" -ForegroundColor Yellow
return
}
Start-Sleep -Seconds 30
# Verify elected leader
$leader = Get-ElectedLeader
Write-Host "Elected leader: $leader"
# Test brokering
$machines = Invoke-BrokerCommand -Command "Get-BrokerMachine" -Properties @("MachineName", "RegistrationState")
Write-Host "Retrieved $($machines.Count) machines"
# Disable outage mode
Write-Host "Disabling forced outage mode..."
$disableResults = Set-LHCOutageMode
<!--NeedCopy-->
Exporter l’historique du mode HA
$haEvents = Get-LHCEventLogs -ComputerName "All" `
-EventID @(3502, 3503) `
-ProviderName "Citrix High Availability Service" `
-StartTime (Get-Date).AddDays(-30) `
-MaxEvents 1000
$report = foreach ($computer in $haEvents.Keys) {
if (-not $haEvents[$computer].Success) { continue }
foreach ($event in $haEvents[$computer].Events) {
[PSCustomObject]@{
Computer = $computer
EventID = $event.Id
EventType = if ($event.Id -eq 3502) { "Entered HA Mode" } else { "Exited HA Mode" }
Time = $event.TimeCreated
}
}
}
$report | Sort-Object Time | Export-Csv -Path "C:\Reports\HA-History.csv" -NoTypeInformation
<!--NeedCopy-->