Compartilhar via


Descrição do sistema de mensagens de estado no Configuration Manager

Este artigo descreve o sistema de mensagens de estado no Configuration Manager.

Versão original do produto: Configuration Manager (branch atual)
Número original do KB: 4459394

Noções básicas sobre mensagens de estado

As mensagens de estado no Configuration Manager são um mecanismo que reflete uma condição do cliente em um determinado momento. As mensagens de status, por outro lado, funcionam para ajudar os administradores a rastrear o fluxo de trabalho de dados por meio de vários componentes do Configuration Manager.

Um visualizador de mensagens de status é integrado diretamente ao console para que as mensagens de status possam ser visualizadas e rastreadas. Não há visualizador equivalente para mensagens de estado. O resultado das mensagens de estado é visto em:

  • relatórios
  • vários dados no console, como o número de sistemas que precisam ser atualizados
  • Logs do cliente

As mensagens de estado contêm informações concisas sobre as condições in-loco no cliente. O sistema de mensagens de estado é usado por componentes específicos do Configuration Manager, incluindo:

  • Atualizações de software
  • Gerenciamento de configuração desejado
  • Proteção de acesso à rede

Os dados críticos de atualização de software dependem do sistema de mensagens de estado no Configuration Manager. Compreender as mensagens de estado se tornará ainda mais importante em versões futuras do Configuration Manager à medida que mais componentes aproveitarem isso.

O diagrama a seguir fornece uma boa descrição de como funciona o sistema de mensagens de estado.

O diagrama mostra como funciona o sistema de mensagens de estado.

A caixa verde representa o sistema de mensagens de estado. Os componentes dentro da caixa são componentes que alimentam informações para o sistema.

Quando as mensagens de estado são recebidas, duas coisas ocorrem:

  1. As mensagens de estado são armazenadas no provedor WMI (Instrumentação de Gerenciamento do Windows).
  2. O sistema de estado extrai o WMI em um ciclo de 15 minutos (padrão) para todas as mensagens de estado que não foram enviadas e, em seguida, as encaminha para o ponto de gerenciamento. O período do ciclo pode ser alterado.

No diagrama, a peça de instalação do cliente é mostrada separadamente para maior clareza. Durante a instalação do cliente, o ponto de gerenciamento é localizado e direcionado para mensagens de estado. As mensagens de estado sobre a instalação do cliente são encaminhadas para o FSP (ponto de status de fallback) (se estiver configurado) em uma das seguintes condições:

  • O ponto de gerenciamento não foi alcançado.
  • O ponto de gerenciamento está inativo por algum motivo.

Para todo o resto, o tráfego vai diretamente para o ponto de gerenciamento.

As mensagens de estado que chegam ao ponto de gerenciamento são processadas nos .smx arquivos pelo componente MP Relay e colocadas na auth\statesys.box\incoming pasta no servidor do site. Em seguida, eles são processados no banco de dados para concluir o fluxo de trabalho.

Aprofundando-se

Temos que garantir que o log detalhado esteja habilitado para:

  • O cliente
  • O ponto de gerenciamento
  • Os componentes de mensagens de estado no servidor do site

Para definir o log detalhado ou de depuração em um cliente ou ponto de gerenciamento do Configuration Manager, edite ou crie as seguintes entradas do Registro:

Subchave do Registro Nome DWORD Dados do valor
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CCM/Logging/@Global LogLevel 0
KEY_LOCAL_MACHINE/SOFTWARE /Microsoft/CCM/Logging/DebugLogging Habilitado Verdadeiro

No servidor do site, edite a seguinte entrada do Registro para habilitar o log detalhado e reinicie o SMS_Executive serviço (ou o componente do sistema de estado):

Subchave do Registro Nome DWORD Dados do valor
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SMS/Components/SMS_STATE_SYSTEM Registro detalhado 1

O rastreamento de comandos SQL requer que o rastreamento SQL esteja habilitado para componentes do Configuration Manager. Mas não é possível obter muitos dados úteis diretamente do rastreamento. É verdade mesmo se o Profiler estiver habilitado. Portanto, examinaremos os arquivos Updatesdeployment.log e Statemessage.log no cliente. Ao interpretar as mensagens de estado nesses logs, podemos obter uma imagem clara do que está ocorrendo nas várias etapas do processo.

Antes de examinarmos exemplos de código de log, precisamos entender o formato da mensagem de estado. A mensagem de estado em si consiste em várias partes, incluindo Tipo de Tópico e ID da Mensagem de Estado. Em alguns locais nos logs, o Tipo de Tópico parece já ter sido interpretado para você.

Você nem sempre verá o Tipo de Tópico e a ID da Mensagem de Estado juntos no mesmo log. Um tipo de dados sem o outro realmente não ajuda a determinar o que é necessário. No entanto, mesmo que você tenha o Tipo de Tópico e a ID da Mensagem de Estado, as informações não serão úteis, a menos que você possa interpretá-las.

O gráfico a seguir pode ajudá-lo a interpretar a combinação e TopicType StateID a obter dados significativos.

select * from v_StateNames  

Observação

O gráfico a seguir inclui os códigos de tipo de tópico das séries 300, 400 e 500.

Dados de mensagens de estado

Tipo de tópico StateID StateName
300 0 Estado de conformidade desconhecido
300 1 Em conformidade
300 2 Sem conformidade
300 3 Conflito detectado
301 0 Estado de aplicação desconhecido
301 1 Instalando atualizações(ões)
301 2 Aguardando reinicialização
301 3 Aguardando a conclusão de outra instalação
301 4 Atualizações(ões) instalada(s) com êxito
301 5 Reinicialização pendente do sistema
301 6 Falha ao instalar as atualizações
301 7 Baixando atualizações(ões)
301 8 Atualização(ões) baixada(s)
301 9 Falha ao baixar as atualizações
301 10 Aguardando a janela de manutenção antes de instalar
301 11 Aguardando que o orquestrador de terceiros inicie a instalação
302 0 Estado de avaliação desconhecido
302 1 Avaliação ativada
302 2 Avaliação bem-sucedida
302 3 Falha na avaliação
400 0 Estado de detecção desconhecido
400 1 Não obrigatório
400 2 Não Detectado
400 3 Detecção
401 0 Estado de conformidade desconhecido
401 1 Em conformidade
401 2 Sem conformidade
401 3 Conflito detectado
401 4 Erro
401 5 Não aplicável
401 6 Não Detectado
401 7 Imposto
402 0 Estado de aplicação desconhecido
402 1 Execução iniciada
402 2 Imposição aguardando conteúdo
402 3 Aguardando a conclusão de outra instalação
402 4 Aguardando a janela de manutenção antes de instalar
402 5 Reinicialização necessária antes de instalar
402 6 Falha geral
402 7 Instalação pendente
402 8 Instalando atualização
402 9 Reinicialização pendente do sistema
402 10 Atualização instalada com êxito
402 11 Falha ao instalar a atualização
402 12 Baixando atualização
402 13 Atualização baixada
402 14 Falha ao baixar a atualização
500 0 Estado de detecção desconhecido
500 1 A atualização não é necessária
500 2 A atualização é necessária
500 3 A atualização está instalada
501 0 Estado de verificação desconhecido
501 1 A digitalização está aguardando o local do catálogo
501 2 A verificação está em execução
501 3 Verificação concluída
501 4 A verificação está pendente de nova tentativa
501 5 Falha na verificação
501 6 Verificação concluída com erros

Para obter mais informações, consulte Mensagens de estado no Configuration Manager.

O exemplo a seguir alinha e compara os arquivos Updatesdeployment.log e Statemessage.log. Certifique-se de que os logs se refiram à mesma mensagem de estado alinhando a mesma TopicID (texto verde). Isso indica claramente que os dois logs estão se referindo à mesma mensagem de estado. O TopicType é mostrado em texto azul claro. Observe que um log pode mostrar o número real que pode ser interpretado no gráfico de dados de mensagens de estado. O outro pode mostrar um valor genérico (já interpretado). O ID da mensagem de estado (StateId) é mostrado em texto roxo.

A captura de tela mostra os detalhes das mensagens de log.

Ao combinar o ID da mensagem de estado eStateId (TopicType) do gráfico, você pode acompanhar exatamente o que está ocorrendo nos logs. Neste exemplo, esses exemplos de código mostram as seguintes informações:

  • Avaliação de atualização
  • O resultado da avaliação
  • A atualização que está sendo baixada
  • A atualização que está sendo instalada
  • Uma reinicialização pendente do sistema

É apenas um exemplo de como as mensagens de estado são enviadas para o sistema de estado.

Fluxo de dados de mensagens de estado

A imagem a seguir é um exemplo real de como os dados de mensagens de estado chegam ao ponto de gerenciamento e são processados no banco de dados.

Este exemplo usa um cliente de teste. Ele começa forçando o cliente a extrair o WMI para todas as informações de mensagens de estado e, em seguida, envia essas informações para o ponto de gerenciamento em seu próximo ciclo de sondagem.

No WMI, as mensagens de estado são armazenadas no root\ccm\statemsg namespace. Nesse namespace, há duas classes de interesse: CCM_StateMsg_SerialNum e CCM_StateMsg.

A CCM_StateMsg_SerialNum classe é usada para registrar o último número de série usado para uma mensagem de estado. Cada mensagem de estado tem um número de série exclusivo, semelhante ao inventário de hardware. Dessa forma, o servidor do site pode acompanhar se está faltando alguma mensagem de estado do sistema. É importante porque mensagens de estado ausentes podem causar relatórios de estado incompletos ou imprecisos.

Captura de tela da CCM_StateMsg_SerialNum aula.

A CCM_StateMsg classe contém as próprias mensagens de estado. Na instância da classe, você pode encontrar todas as mensagens de estado que são registradas.

Captura de tela da instância CCM_StateMsg.

Se você abrir uma dessas mensagens, encontrará os detalhes da mensagem de estado e alguns dados que discutimos anteriormente, conforme mostrado no exemplo a seguir.

A captura de tela mostra os detalhes da mensagem de estado.

Podemos reenviar os dados para o ponto de gerenciamento e acompanhar seu progresso usando os scripts de ressincronização a seguir.

RefreshServerComplianceState()

Sub RefreshServerComplianceState()
dim newCCMUpdatesStore
set newCCMUpdatesStore = CreateObject ("Microsoft.CCM.UpdatesStore")
newCCMUpdatesStore.RefreshServerComplianceState
wscript.echo "Ran RefreshServerComplianceState."
End Sub
$UpdatesStore = New-Object -ComObject Microsoft.CCM.UpdatesStore
$UpdatesStore.RefreshServerComplianceState()

Este script pode ser encontrado na web em vários locais. Ele usa o SDK do Configuration Manager para fazer com que o cliente reenvie seus dados para o ponto de gerenciamento.

Normalmente, um script do Visual Basic (VBScript) é executado usando cscripto . Observe que o script pode falhar se você tentar executá-lo sozinho. O problema é que o Configuration Manager é um aplicativo de 32 bits em execução em um servidor de 64 bits. A versão padrão do cscript é a versão de 64 bits e geralmente funciona bem com qualquer VBScript. No entanto, nesse caso, a chamada que está sendo feita requer a versão cscript de 32 bits que você deve executar na pasta syswow64.

Captura de tela do prompt de comando do administrador executando cscript.

Quando ocorre o próximo ciclo de sondagem de mensagens de estado, todas as mensagens de estado são enviadas para o ponto de gerenciamento.

No arquivo Statemessage.log, você pode ver que as informações da mensagem de estado são extraídas, formatadas em XML e, em seguida, enviadas para o ponto de gerenciamento. As informações da mensagem de estado devem ser semelhantes ao exemplo a seguir:

<! [LOG[StateMessage body: <?xml version="1.0" encoding="UTF-16"?>
<Relatório ReportHeader Identification Machine ClientInstalled>1</ClientInstalled><ClientType>1</ClientType><ClientID>GUID:GUID</ClientID><><><><>
<ClientVersion>client_version_number</ClientVersion><NetBIOSName>name</NetBIOSName><CodePage>437</CodePage>
<SystemDefaultLCID>1033</SystemDefaultLCID></Machine></Identification><ReportDetails><ReportContent>State Message Data</ReportContent>
<ReportType>Full</ReportType><Data>date</Date><Version>1.0/Version><Format>1.0<</Format></ReportDetails></ReportHeader><ReportBody><StateMessage MessageTime="time" SerialNumber="serial_number"><Topic ID="21e49ac6-a273-4a61-9794-eb675bc743e5" Type="500" IDType="3"/><State ID="2" Criticality="0"/><UserParameters Flags="0" Count="1"><Param>102</Param></UserParameters></StateMessageserParameters></StateMessage></ReportBody></Report>
]LOG!<[ LOG[CStateMsgManager::GetSignEncyptMode]LOG]!><time="hora" data="data" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1820">
<! [LOG[Mensagens de estado encaminhadas com êxito para o ponto de gerenciamento]LOG]!><time="hora" data="data" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1527">

Observação

Este exemplo é truncado para uma única mensagem de estado devido ao tamanho do arquivo XML.

Embora o arquivo Statemessage.log registre que as mensagens são expedidas para o ponto de gerenciamento, o sistema de mensagens de estado não move dados para o ponto de gerenciamento. No exemplo a seguir, você pode ver que CCMMessaging faz essa operação. Há mais coisas acontecendo nos bastidores neste momento. No entanto, basta saber que CCMMessaging envia os dados para o ponto de gerenciamento (neste caso, o MP_Relay componente).

<! [LOG[OutgoingMessage(Queue='mp_mp_relayendpoint', ID={A9E7A07D-223D-4F5D-93D5-15AF5B72E05C}): Entregue com êxito ao host 'host_name'.]LOG]!>

Quando os dados chegam para processamento no MP_Relay, eles são processados e traduzidos para o .smx formato de arquivo e, em seguida, colocados na auth\statesys.box\incoming pasta.

Tarefa Inv-Relay: Processando o corpo da mensagem
Retransmissão: FileType= SMX
Retransmissão: Diretório da caixa de saída: C: \ Arquivos de programas (x86) \ Microsoft Configuration Manager \ inboxes \ auth \ statesys.box \ incoming
Relé: Recebeu 0 anexos
Retransmissão: 0 de 0 anexos processados com sucesso
Inv-Relay: Tarefa concluída com sucesso

auth\statesys.box\incoming Na pasta, você pode ver os .smx arquivos que estão sendo processados. Normalmente, você não os verá aqui. Mas se os arquivos permanecerem nessa pasta, você precisará investigar quais são as mensagens e por que elas não estão sendo processadas. Se você encontrar um .smx arquivo, poderá abri-lo usando um editor de texto, como o Bloco de Notas, para ver os detalhes. No entanto, a formatação do arquivo pode ser ilegível, como no exemplo a seguir:

Captura de tela de um arquivo SMX de exemplo no Bloco de Notas.

Se você renomear o .smx arquivo adicionando a .xml extensão para que o nome do arquivo seja file_name.smx.xml e, em seguida, clicar duas vezes no novo nome do arquivo, o arquivo XML será aberto no Internet Explorer e será muito mais fácil de ler.

A imagem a seguir é um exemplo de um arquivo XML aberto no Internet Explorer. Os detalhes do computador e da mensagem de estado são realçados. Ele contém as informações que discutimos anteriormente, combinadas com o valor exclusivo da ID da Mensagem de Estado.

Observação

Se você renomear esses arquivos, primeiro copie-os para uma pasta diferente para não afetar a pasta Statesys.box .

Captura de tela de um exemplo de arquivo .smx.xml no Internet Explorer.

Por fim, as mensagens de estado devem ser processadas no banco de dados. No arquivo Statesys.log, você pode ver essas mensagens semelhantes ao exemplo a seguir:

Encontradas novas mensagens de estado para processar, iniciando o thread de processamento
Thread "Tópico de processamento de mensagens de estado #0" id:5076 iniciado
CMessageProcessor - Site pai detectado 'site_name'
CMessageProcessor - Arquivo de processamento: mdlbp169. SMW
CMessageProcessor - Processou 1 registros com 0 registros inválidos.
CMessageProcessor - Arquivo replicado com sucesso "mdlbp169. SMW" para o site pai site_name.
CMessageProcessor - Processou 1 arquivo de mensagem neste lote, com 0 arquivos inválidos.
Thread "Thread de processamento de mensagens de estado #0" id:5076 encerrado normalmente

O componente de processamento do banco de dados pode ser tornado visível habilitando o rastreamento SQL, mas isso não ajuda muito. Em vez disso, devemos usar o criador de perfil SQL. O criador de perfil nos dá uma dica do que está ocorrendo nos bastidores, mas não completamente. Vários procedimentos armazenados SQL são responsáveis pelo processamento de mensagens de estado. Além disso, várias tabelas no banco de dados armazenam os dados de mensagens de estado. Os procedimentos armazenados que fazem o processamento de mensagens de estado geralmente começam com o nome spProcess. Existem muitos desses procedimentos.

O servidor do site rastreia as mensagens de estado à medida que elas chegam, para que possa sinalizar quaisquer mensagens ausentes e solicitar periodicamente uma nova sincronização quando necessário. As mensagens de estado são importantes. Você não quer perder nenhum.

À medida que as mensagens de estado chegam, a ID exclusiva é lida e armazenada no banco de dados. À medida que o processamento continua, os dados são atualizados regularmente. Se uma lacuna for detectada, esses dados serão sinalizados e armazenados como mensagens de estado ausente na SR_MissingMessageRanges tabela. Idealmente, esta tabela estará vazia. No entanto, na produção, você pode ver dados na tabela. Esta tabela ajuda a rastrear mensagens de estado que exigem uma ressincronização.

O arquivo de controle do site está localizado no banco de dados. Para obter as configurações específicas do STATE_MESSAGE_SYSTEM, execute a seguinte consulta em um site primário ou CAS:

select * from SC_Component_Property where ComponentID in (select ID from SC_Component where ComponentName like 'SMS_STATE_SYSTEM') and sitenumber in (select SiteNumber from SC_SiteDefinition where Sitecode = (Select ThisSiteCode from SMSData))

Configurações STATE_MESSAGE_SYSTEM

Nome Value1 Value2 Valor3
Intervalo de Mensagem de Pulsação 60
Intervalo de sondagem da caixa de entrada 900
Tamanho do bloco do carregador 256
Roscas do carregador 4
Máximo de pedaços buscados 100
Idade mínima da mensagem ausente 2880
Intervalo de verificação de ressincronização 15
Repetir configuração REG_SZ <Config><Retry PatternID="0" RetryQueue="0">7200,28800,86400</Retry></Config> 0

Observação

  • O intervalo de verificação de ressincronização é definido como 60 minutos. Este é o agendamento para verificar sistemas que exigem ressincronizações de mensagens de estado.
  • A Idade Mínima da Mensagem Ausente é definida como 2880. Este é o tempo que uma mensagem deve estar ausente antes que uma ressincronização seja solicitada.