Ferramenta de Visibilidade do Cache de Host Local
Este artigo descreve a Ferramenta de Visibilidade em Tempo Real do Cache de Host Local (LHC), uma solução baseada em PowerShell que fornece visibilidade em ambientes de Cache de Host Local da Citrix. Usando esta ferramenta, você pode monitorar a saúde do Cloud Connector, identificar o líder eleito durante o modo LHC, controlar o modo de interrupção forçada e consultar logs de eventos para solucionar problemas de comportamento do LHC.
Visão geral
A Ferramenta de Visibilidade em Tempo Real do Cache de Host Local (LHC) é uma solução abrangente baseada em PowerShell para fornecer visibilidade em ambientes de Cache de Host Local da Citrix. Ela oferece uma interface de linha de comando e GUIs simples acessíveis a partir do Cloud Connector para que você possa:
- Descobrir Cloud Connectors em uma zona ou local de recurso.
- Identificar o líder eleito durante o modo LHC.
- Habilitar ou desabilitar o modo de interrupção forçada em todos os Cloud Connectors na zona ou local de recurso.
- Consultar logs de eventos de provedores e IDs de Evento específicos.
- Executar comandos Broker PowerShell no líder eleito.
Pré-requisitos
Antes de implantar e executar a Ferramenta de Visibilidade do Cache de Host Local, certifique-se de que seu ambiente atenda aos seguintes requisitos de sistema, permissões e arquivos.
Requisitos do sistema
- Windows Server 2016 ou posterior
- PowerShell 5.1 ou superior
- Deve ser executado em um Citrix Cloud Connector™
- Serviços necessários:
- Serviço de Alta Disponibilidade Citrix
- Serviço ConfigSync Citrix
Permissões
- Privilégios de administrador na máquina local
- Permissões de execução remota do PowerShell para todos os Cloud Connectors na zona
- Conectividade de rede para todos os Cloud Connectors
Arquivos necessários
-
LHCVisibilityTool.ps1- Módulo principal do PowerShell -
LHCVisibilityToolGUI.ps1- Aplicativo GUI -
HighAvailabilityServiceControl.psm1- Módulo de Controle de Serviço HA Citrix
O script PowerShell da GUI está localizado em:
C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts
<!--NeedCopy-->
Introdução
Antes de executar a ferramenta, defina a política de execução do PowerShell usando uma das seguintes opções:
-
Opção 1: RemoteSigned (mais restritiva):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser <!--NeedCopy--> -
Opção 2: Somente sessão atual (temporário):
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process <!--NeedCopy-->
Nota:
Pode ser necessário executar o PowerShell como Administrador para alterar a política de execução. Se você tiver apenas permissões de nível de usuário, use
-Scope CurrentUser.
Use a ferramenta por meio do aplicativo GUI
A GUI fornece uma interface com guias para descobrir Cloud Connectors, controlar o modo de interrupção, consultar logs de eventos e executar comandos de broker. Depois de iniciar a ferramenta, selecione uma tarefa para ir às suas instruções:
- Inicie a GUI
- Descubra Cloud Connectors e identifique o líder
- Controle o modo de interrupção forçada
- Consulte e rastreie logs de eventos
- Execute comandos de broker
- Visualize logs de sessão
Inicie a GUI
cd "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts"
.\LHCVisibilityToolGUI.ps1
<!--NeedCopy-->

A ferramenta usa um layout de três guias com uma barra de status persistente na parte inferior.

A barra de status se estende pela parte inferior da janela e contém:
| Item | Descrição |
|---|---|
| Status da operação (esquerda) | Operação atual ou “Pronto” |
| Status do Modo HA | Indicadores de ponto por conector (máximo de 5 mostrados; “+N mais” se truncado); a dica de ferramenta ao passar o mouse mostra a lista completa |
| Última atualização | Carimbo de data/hora da última atualização bem-sucedida do estado HA |
| Visualizar Log | Abre o arquivo de log da sessão no Bloco de Notas |
A barra de status usa as seguintes cores para indicar o estado HA:
| Estado | Cor |
|---|---|
| WorkingNormally | Verde |
| HA Pendente | Amarelo-dourado |
| Recuperação Pendente | Laranja |
| HA Inicial | Vermelho |
| HA Estendido | Vermelho |
| Desconhecido / Inacessível | Cinza |
Descobrir Cloud Connectors e identificar o líder
Na guia System Status & Control, clique em Discover and Identify Leader. A ferramenta detecta e mostra automaticamente o líder eleito entre todos os Cloud Connectors na zona usando:
- Análise de log de eventos (ID de Evento 3504)
- Informações de PeerStatus e IsElected do Registro
- Verificação de serviço local

Controlar o modo de interrupção forçada
Na guia Status e Controle do Sistema, use os controles do modo de interrupção para gerenciar o modo HA em toda a zona:
-
Habilitar Modo de Interrupção Forçada:
- Força todos os Cloud Connectors na zona a entrar no modo HA
- Usa o Cache de Host Local para intermediação
- Requer que o banco de dados LHC seja sincronizado
-
Desabilitar Modo de Interrupção Forçada:
- Permite que o sistema retorne às operações normais
- Reconecta-se ao site primário quando disponível
Aviso:
Essas ações afetam todos os Cloud Connectors na zona.
Consultar e rastrear logs de eventos
Na guia Consulta de Log de Eventos, configure os seguintes parâmetros de consulta:
-
Destino: Escolha entre:
- Todos os Cloud Connectors
- Apenas o Líder Eleito
- Computador Específico (insira o FQDN)
-
Nome do Provedor: Selecione ou insira um provedor personalizado:
- Serviço de Alta Disponibilidade Citrix
- Serviço Citrix ConfigSync
- Serviço Citrix Broker
-
IDs de Evento: Lista separada por vírgulas (por exemplo,
3502,3503,3506) - Intervalo de Tempo: Opcionalmente, filtre por hora de início e fim
- Máximo de Eventos: Número máximo de eventos a serem recuperados por computador (padrão: 100)
Use os seguintes botões para trabalhar com eventos:
- Consultar Eventos: Consulta os logs de eventos usando os parâmetros de consulta configurados.
- Eventos HA Anteriores: Encontra os limites de início e fim do LHC (eventos 3502, 3503, 3508) a partir dos parâmetros de consulta configurados e exibe o evento de resumo final para fornecer uma visão geral.
- Limpar Eventos: Limpa a lista de eventos, o painel de detalhes e o estado de rastreamento.
- Export Report: Cria estatísticas a partir dos eventos consultados na GUI e as salva como um arquivo de texto. (Usa a saída do botão Show Event Statistics.)

O rastreamento ao vivo comporta-se da seguinte forma:
- O rastreamento ao vivo monitora novos eventos de resumo a cada 120 segundos enquanto o LHC estiver ativo.
- Quando o rastreamento ao vivo começa, ele determina a hora de início para o modo LHC referenciando o evento 3502 e lista todos os eventos que apareceram desde o início.
- O rastreamento ao vivo pode ser interrompido manualmente ou automaticamente quando o modo LHC é concluído.
A seção inferior fornece duas visualizações principais:
-
Painel esquerdo:
- Os eventos são listados cronologicamente com detalhes importantes (número do evento, hora, ID, tipo).
- Cada evento é visualmente distinguido por cor com base em seu tipo, seguindo a referência do ID do evento.
- A seleção de um evento exibe mais informações sobre ele.
-
Painel direito: Duas opções de exibição permitem alternar entre resumos estatísticos e informações detalhadas para o evento selecionado:
- Show Event Details: Detalhes abrangentes para o evento escolhido.
- Show Event Statistics: Estatísticas que resumem os eventos do modo HA, incluindo métricas tabulares e gráficos de barras ASCII de eventos de resumo (3507).
A imagem a seguir mostra a visualização de detalhes do evento:

A imagem a seguir mostra a visualização de estatísticas de eventos:

Referência: IDs de evento de HA e ConfigSync
As seções a seguir listam IDs de Evento comuns por provedor.
Serviço de Alta Disponibilidade do Citrix:
| ID do Evento | Descrição |
|---|---|
| 3502 | Modo HA ativado (broker eleito) |
| 3503 | Modo HA desativado (operações normais retomadas) |
| 3506 | Modo HA ativado (broker não eleito) |
| 3507 | Resumo periódico do modo HA (broker eleito) |
| 3508 | Fim do resumo do modo HA (broker eleito) |
Serviço Citrix ConfigSync:
| ID do Evento | Descrição |
|---|---|
| 503 | Processo de sincronização iniciado |
| 504 | Sincronização concluída com sucesso |
| 505 | Sincronização falhou |
| 507 | Sincronização abandonada devido ao modo HA |
| 510 | Nenhum dado de configuração recebido |
| 517 | Problema de comunicação com o broker primário |
| 518 | ConfigSync abortado (Serviço HA não está em execução) |
Executar comandos do broker
Na guia Comandos do Broker, os comandos predefinidos são:
- Get-BrokerMachine: Recuperar informações de VDA/máquina
- Get-BrokerSession: Recuperar sessões ativas
- Get-BrokerDesktopGroup: Recuperar grupos de entrega
- Get-BrokerCatalog: Recuperar catálogos de máquinas
- Get-BrokerApplication: Recuperar aplicativos publicados

Dica:
Use a caixa de texto de filtro para pesquisar simultaneamente em todas as colunas de string por um item específico nos resultados.
Para executar um comando personalizado:
- Insira um comando, por exemplo
Get-BrokerMachine -MaxRecordCount 2. - Opcionalmente, especifique as propriedades a serem retornadas (separadas por vírgulas).
- Clique em Executar.

Nota:
Os comandos do Broker fornecem informações recentes do banco de dados LHC quando:
- O sistema está no modo LHC.
- Um líder eleito foi identificado.
- O banco de dados LHC está disponível.
Visualizar logs de sessão
Para abrir o log da sessão atual, clique em Visualizar Log na barra de status. O log é aberto no Bloco de Notas.
Cada sessão cria um arquivo de log em %TEMP%\LHCVisibilityTool_<yyyyMMdd_HHmmss>.log. As mensagens também são gravadas no console do host com codificação de cores.
Usar a ferramenta via linha de comando
Além da GUI, você pode executar a ferramenta diretamente do PowerShell. Depois de importar o módulo, use os seguintes comandos para executar cada tarefa. Selecione uma tarefa para ir ao seu comando:
- Iniciar a ferramenta de linha de comando
- Descobrir Cloud Connectors
- Identificar o líder eleito
- Obter o estado de interrupção
- Consultar logs de eventos
- Executar comandos do broker
- Controlar o modo de interrupção
Iniciar a ferramenta de linha de comando
cd "C:\Program Files\Citrix\Broker\Service\LHCVisibilityToolScripts"
. .\LHCVisibilityTool.ps1
<!--NeedCopy-->
Descobrir Cloud Connectors
$connectors = Get-CloudConnectorsInZone
$connectors | ForEach-Object { Write-Host $_ }
<!--NeedCopy-->
Identificar o líder eleito
$leader = Get-ElectedLeader
Write-Host "Elected Leader: $leader"
<!--NeedCopy-->
Obter o estado de interrupção
$states = Get-OutageState
foreach ($connector in $states.Keys) {
Write-Host "$connector : $($states[$connector].State)"
}
<!--NeedCopy-->
Consultar logs de eventos
Consultar todos os Cloud Connectors para eventos de 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-->
Consultar apenas o líder eleito:
$results = Get-LHCEventLogs -ComputerName "ElectedLeader" `
-EventID @(3507) `
-ProviderName "Citrix High Availability Service" `
-MaxEvents 50
<!--NeedCopy-->
Consultar um computador específico:
$results = Get-LHCEventLogs -ComputerName "CC-01.domain.com" `
-EventID @(503, 504, 505) `
-ProviderName "Citrix ConfigSync Service"
<!--NeedCopy-->
Executar comandos do broker
Obter todas as máquinas:
$machines = Invoke-BrokerCommand -Command "Get-BrokerMachine" `
-Properties @("MachineName", "RegistrationState", "SessionCount")
$machines | Format-Table -AutoSize
<!--NeedCopy-->
Obter sessões ativas:
$sessions = Invoke-BrokerCommand -Command "Get-BrokerSession" `
-Properties @("UserName", "MachineName", "SessionState")
$sessions | Format-Table -AutoSize
<!--NeedCopy-->
Executar um comando personalizado com parâmetros:
$params = @{
MaxRecordCount = 10
}
$results = Invoke-BrokerCommand -Command "Get-BrokerMachine" `
-Parameters $params `
-Properties @("MachineName", "DesktopGroupName")
<!--NeedCopy-->
Controlar o modo de interrupção
Habilitar o modo de interrupção forçada em todos os 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-->
Desabilitar o modo de interrupção forçada:
$results = Set-LHCOutageMode
# Check results
foreach ($connector in $results.Keys) {
$status = if ($results[$connector].Success) { "SUCCESS" } else { "FAILED" }
Write-Host "$connector : $status"
}
<!--NeedCopy-->
Solução de problemas
Para solucionar problemas com a ferramenta, siga este processo geral:
- Verifique o log de eventos do aplicativo para mensagens de erro detalhadas.
- Verifique se todos os pré-requisitos foram atendidos.
- Revise os problemas comuns na tabela a seguir e as melhores práticas descritas posteriormente neste artigo.
- Consulte Cache de Host Local e o resumo técnico Evite Configurações Incorretas Comuns que Podem Impactar Negativamente a Resiliência do DaaS.
A tabela a seguir lista problemas comuns que você pode encontrar ao usar a ferramenta e suas soluções recomendadas.
| Problema | Solução |
|---|---|
| Nenhum Cloud Connector encontrado
|
|
| Não é possível identificar o líder eleito
|
|
| Comando do Broker falhou
|
|
| Erros de execução remota
|
|
| A consulta do log de eventos não retorna resultados
|
|
| Certifique-se de que os limites de tamanho do log de eventos não causaram a sobrescrita de eventos antigos. |
Melhores práticas
Siga estas melhores práticas para aproveitar ao máximo a ferramenta e operar seu ambiente de Cache de Host Local com segurança.
Monitoramento regular
- Execute Descobrir Cloud Connectors e Identificar Líder Eleito periodicamente.
- Monitore os eventos
ConfigSync(503, 504, 505) para problemas de sincronização.
Análise do log de eventos
- Consulte os eventos de HA dos últimos 7 dias para entender os padrões de interrupção.
- Procure pelo ID de Evento 3507 durante o modo HA para estatísticas detalhadas.
Comandos do Broker
- Execute apenas no líder eleito.
- Limite a seleção de propriedades para melhorar o desempenho.
- Use o parâmetro
MaxRecordCountpara ambientes grandes.
Modo de interrupção
- Use o modo de interrupção forçada apenas para testes ou manutenção planejada.
- Sempre verifique se o banco de dados LHC está sincronizado antes de habilitar.
- Desative o modo de interrupção forçada assim que a conectividade primária for restaurada.
Segurança
- Execute com contas de privilégio mínimo sempre que possível.
- Use canais seguros para execução remota.
- Audite as alterações do modo de interrupção.
Exemplos
Os exemplos a seguir assumem que você criou uma pasta em C:\Reports para armazenar a saída.
Exemplo 1: Relatório diário do modo 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-->
Exemplo 2: Verificar o status do ConfigSync em todos os conectores
. "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-->
Exemplo 3: Obter contagem de sessões durante o modo 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-->
Cenários avançados
Os cenários a seguir combinam várias funções da ferramenta em scripts para operações mais complexas, como automatizar testes de interrupção e exportar dados históricos do modo HA.
Automatizar testes de interrupção
# 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-->
Exportar histórico do modo 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-->