Compartir a través de


Descripción de la mensajería de estado en Configuration Manager

En este artículo se describe el sistema de mensajería de estado en Configuration Manager.

Versión original del producto: Configuration Manager (rama actual)
Número de KB original: 4459394

Descripción de la mensajería de estado

La mensajería de estado en Configuration Manager es un mecanismo que refleja una condición de cliente en un momento dado. Por el contrario, los mensajes de estado funcionan para ayudar a los administradores a realizar un seguimiento del flujo de trabajo de los datos a través de varios componentes de Configuration Manager.

Un visor de mensajes de estado se integra directamente en la consola para que se puedan ver y realizar un seguimiento de los mensajes de estado. No hay ningún visor equivalente para los mensajes de estado. El resultado de los mensajes de estado se ve en:

  • Informes
  • varios datos de la consola, como el número de sistemas que deben actualizarse
  • registros de cliente

Los mensajes de estado contienen información concisa sobre las condiciones en contexto en el cliente. Los componentes específicos de Configuration Manager usan el sistema de mensajería de estado, entre los que se incluyen:

  • actualizaciones de software
  • administración de configuración deseada
  • protección de acceso a la red

Los datos críticos de actualización de software se basan en el sistema de mensajería de estado en Configuration Manager. Comprender la mensajería de estado será aún más importante en futuras versiones de Configuration Manager a medida que más componentes se aprovechen de ella.

En el diagrama siguiente se proporciona una buena descripción del funcionamiento del sistema de mensajería de estado.

En el diagrama se muestra cómo funciona el sistema de mensajería de estado.

El cuadro verde representa el sistema de mensajería de estado. Los componentes dentro del cuadro son componentes que alimentan información al sistema.

Cuando se reciben mensajes de estado, se producen dos cosas:

  1. Los mensajes de estado se almacenan en el proveedor de Instrumental de administración de Windows (WMI).
  2. El sistema de estado extrae WMI en un ciclo de 15 minutos (valor predeterminado) para los mensajes de estado que no se han enviado y, a continuación, los reenvía al punto de administración. El período del ciclo se puede cambiar.

En el diagrama, la pieza de instalación del cliente se muestra por separado para mayor claridad. Durante la instalación del cliente, el punto de administración se encuentra y se dirige a los mensajes de estado. Los mensajes de estado sobre la instalación del cliente se reenvía al punto de estado de reserva (FSP) (si está configurado) en una de las condiciones siguientes:

  • No se ha alcanzado el punto de administración.
  • El punto de administración está inactivo por alguna razón.

Para todo lo demás, el tráfico va directamente al punto de administración.

El componente MP Relay procesa los mensajes de estado que llegan al punto de administración en los .smx archivos y se colocan en la auth\statesys.box\incoming carpeta del servidor de sitio. A continuación, se procesan en la base de datos para completar el flujo de trabajo.

Cavar más profundo

Debemos asegurarnos de que el registro detallado está habilitado para:

  • el cliente
  • el punto de administración
  • los componentes de mensajería de estado en el servidor de sitio

Para establecer el registro detallado o de depuración en un cliente o punto de administración de Configuration Manager, edite o cree las siguientes entradas del Registro:

Subclave del Registro Nombre DWORD Datos del valor
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CCM/Logging/@Global LogLevel 0
KEY_LOCAL_MACHINE/SOFTWARE /Microsoft/CCM/Logging/DebugLogging Habilitado Verdadero

En el servidor de sitio, edite la siguiente entrada del Registro para habilitar el registro detallado y, a continuación, reinicie el SMS_Executive servicio (o el componente del sistema de estado):

Subclave del Registro Nombre DWORD Datos del valor
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SMS/Components/SMS_STATE_SYSTEM Registro detallado 1

El seguimiento de comandos SQL requiere que el seguimiento de SQL esté habilitado para Configuration Manager componentes. Pero no se pueden obtener datos muy útiles directamente desde el seguimiento. Es true incluso si Profiler está habilitado. Por lo tanto, examinaremos los archivos Updatesdeployment.log y Statemessage.log en el cliente. Al interpretar los mensajes de estado en estos registros, podemos obtener una imagen clara de lo que ocurre en los distintos pasos del proceso.

Antes de examinar los ejemplos de código de registro, debemos comprender el formato del mensaje de estado. El propio mensaje de estado consta de varias partes, incluidos el tipo de tema y el identificador de mensaje de estado. En algunas ubicaciones de los registros, el tipo de tema parece que ya se interpretará por usted.

No siempre verá el tipo de tema y el identificador de mensaje de estado juntos en el mismo registro. Un tipo de datos sin el otro realmente no le ayuda a determinar lo que se necesita. Sin embargo, incluso si tiene el tipo de tema y el identificador de mensaje de estado, la información no es útil a menos que pueda interpretarla.

El siguiente gráfico puede ayudarle a interpretar la combinación de TopicType y StateID a obtener datos significativos.

select * from v_StateNames  

Nota:

El siguiente gráfico incluye los códigos de tipo de tema de las series 300, 400 y 500.

Datos de mensajería de estado

TopicType StateID StateName
300 0 Estado de cumplimiento desconocido
300 1 Compliant
300 2 No compatible
300 3 Conflicto detectado
301 0 Estado de cumplimiento desconocido
301 1 Instalación de actualizaciones
301 2 Esperando reinicio
301 3 Esperando a que se complete otra instalación
301 4 Actualizaciones instaladas correctamente
301 5 Reinicio del sistema pendiente
301 6 No se pudieron instalar las actualizaciones
301 7 Descarga de actualizaciones
301 8 Actualizaciones descargadas
301 9 No se pudieron descargar las actualizaciones
301 10 Esperando la ventana de mantenimiento antes de instalar
301 11 Esperando a que el orquestador de terceros inicie la instalación
302 0 Estado de evaluación desconocido
302 1 Evaluación activada
302 2 Evaluación correcta
302 3 Error de evaluación
400 0 Estado de detección desconocido
400 1 No necesario
400 2 No detectado
400 3 Detectados
401 0 Estado de cumplimiento desconocido
401 1 Compliant
401 2 No compatible
401 3 Conflicto detectado
401 4 Error
401 5 No aplicable
401 6 No detectado
401 7 Enforced
402 0 Estado de cumplimiento desconocido
402 1 Cumplimiento iniciado
402 2 Cumplimiento en espera de contenido
402 3 Esperando a que se complete otra instalación
402 4 Esperando la ventana de mantenimiento antes de instalar
402 5 Reinicio necesario antes de la instalación
402 6 Error general
402 7 Instalación pendiente
402 8 Instalación de la actualización
402 9 Reinicio del sistema pendiente
402 10 Actualización instalada correctamente
402 11 No se pudo instalar la actualización
402 12 Descarga de la actualización
402 13 Actualización descargada
402 14 No se pudo descargar la actualización
500 0 Estado de detección desconocido
500 1 La actualización no es necesaria
500 2 Se requiere la actualización
500 3 La actualización está instalada
501 0 Estado de examen desconocido
501 1 El examen está a la espera de la ubicación del catálogo
501 2 Examen en ejecución
501 3 Examen completado
501 4 El examen está pendiente de reintento
501 5 Error en el examen
501 6 Examen completado con errores

Para obtener más información, vea Mensajes de estado en Configuration Manager.

En el ejemplo siguiente se alinean y comparan los archivos Updatesdeployment.log y Statemessage.log. Asegúrese de que los registros hacen referencia al mismo mensaje de estado alineando el mismo TopicID (texto verde). Indica claramente que los dos registros hacen referencia al mismo mensaje de estado. Se TopicType muestra en texto azul claro. Observe que un registro podría mostrar el número real que se puede interpretar desde el gráfico de datos de mensajería de estado . El otro puede mostrar un valor genérico (ya interpretado). El identificador de mensaje de estado (StateId) se muestra en texto púrpura.

Captura de pantalla que muestra los detalles de los mensajes de registro.

Al combinar el TopicType identificador de mensaje de estado (StateId) del gráfico, puede realizar un seguimiento de lo que ocurre exactamente en los registros. En este ejemplo, estos ejemplos de código muestran la siguiente información:

  • Actualización de la evaluación
  • Resultado de la evaluación
  • La actualización que se está descargando
  • La actualización que se está instalando
  • Un reinicio del sistema pendiente

Es solo un ejemplo de cómo se envían los mensajes de estado al sistema de estado.

Flujo de datos de mensajería de estado

La imagen siguiente es un ejemplo real de cómo los datos de mensajería de estado se dirige al punto de administración y se procesan en la base de datos.

En este ejemplo se usa un cliente de prueba. Comienza obligando al cliente a extraer WMI de toda la información de mensajería de estado y, a continuación, envía esa información al punto de administración en su siguiente ciclo de sondeo.

En WMI, los mensajes de estado se almacenan en el espacio de root\ccm\statemsg nombres. En ese espacio de nombres, hay dos clases de interés: CCM_StateMsg_SerialNum y CCM_StateMsg.

La CCM_StateMsg_SerialNum clase se usa para registrar el último número de serie que se usa para un mensaje de estado. Cada mensaje de estado tiene un número de serie único, similar al inventario de hardware. De esta manera, el servidor de sitio puede realizar un seguimiento de si falta algún mensaje de estado del sistema. Es importante porque la falta de mensajes de estado puede provocar informes de estado incompletos o inexactos.

Captura de pantalla de la clase CCM_StateMsg_SerialNum.

La CCM_StateMsg clase contiene los propios mensajes de estado. En la instancia de clase, puede encontrar todos los mensajes de estado que se registran.

Captura de pantalla de la instancia de CCM_StateMsg.

Si abre uno de estos mensajes, encontrará los detalles del mensaje de estado y algunos datos que se trataron anteriormente, como se muestra en el ejemplo siguiente.

Captura de pantalla que muestra los detalles del mensaje de estado.

Podemos volver a enviar los datos al punto de administración y realizar un seguimiento de su progreso mediante los siguientes scripts de resincronización.

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 se puede encontrar en la web en varias ubicaciones. Usa el SDK de Configuration Manager para hacer que el cliente vuelva a enviar sus datos al punto de administración.

Normalmente, un script de Visual Basic (VBScript) se ejecuta mediante cscript. Tenga en cuenta que el script puede producir un error si intenta ejecutarlo usted mismo. El problema es que Configuration Manager es una aplicación de 32 bits que se ejecuta en un servidor de 64 bits. La versión predeterminada de es la versión de cscript 64 bits y, por lo general, funciona bien con cualquier VBScript. Sin embargo, en este caso, la llamada que se realiza requiere la versión de 32 bits de cscript que debe quedar sin la carpeta syswow64.

Captura de pantalla del símbolo del sistema de administrador que ejecuta cscript.

Cuando se produce el siguiente ciclo de sondeo de mensajes de estado, todos los mensajes de estado se envían al punto de administración.

En el archivo Statemessage.log, puede ver que la información del mensaje de estado se extrae, se da formato a XML y, a continuación, se envía al punto de administración. La información del mensaje de estado debe ser similar al ejemplo siguiente:

<! [LOG[StateMessage body: <?xml version="1.0" encoding="UTF-16"?>
<Report><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><Date<>/Date><Version>1.0</Version><Format>1.0</Format></ReportDetails></ReportHeader><ReportBody><StateMessage MessageTime="time" SerialNumber="serial_number"><Topic ID="21e49ac6-a273-4a 61-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="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1820">
<! [LOG[Mensajes de estado reenviados correctamente al punto de administración]LOG]!><time="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1527">

Nota:

Este ejemplo se trunca en un único mensaje de estado debido al tamaño del archivo XML.

Aunque el archivo Statemessage.log registra que los mensajes se envían al punto de administración, el sistema de mensajería de estado no mueve realmente los datos al punto de administración. En el ejemplo siguiente, puede ver que CCMMessaging realiza esta operación. Hay más que pasan en segundo plano en este momento. Sin embargo, basta con saber que CCMMessaging envía los datos al punto de administración (en este caso, el MP_Relay componente).

<! [LOG[OutgoingMessage(Queue='mp_mp_relayendpoint', ID={A9E7A07D-223D-4F5D-93D5-15AF5B72E05C}): Se entrega correctamente para hospedar 'host_name'.] ¡LOG]!>

Cuando los datos llegan para su procesamiento en MP_Relay, se procesan y traducen al formato de .smx archivo y, a continuación, se colocan en la auth\statesys.box\incoming carpeta .

tarea Inv-Relay: Procesamiento del cuerpo del mensaje
Relay: FileType= SMX
Relay: Directorio de bandeja de salida: C:\Archivos de programa (x86)\Microsoft Configuration Manager\inboxes\auth\statesys.box\incoming
Retransmisión: se han recibido 0 datos adjuntos
Retransmisión: 0 de 0 datos adjuntos procesados correctamente
Inv-Relay: tarea completada correctamente

En la auth\statesys.box\incoming carpeta, puede ver los .smx archivos que se están procesando. Normalmente, no los verá aquí. Pero si los archivos permanecen en esta carpeta, debe investigar cuáles son los mensajes y por qué no se procesan. Si encuentra un .smx archivo, puede abrirlo mediante un editor de texto, como el Bloc de notas, para ver los detalles. Sin embargo, el formato del archivo puede ser ilegible, como en el ejemplo siguiente:

Captura de pantalla de un archivo SMX de ejemplo en el Bloc de notas.

Si cambia el nombre del .smx archivo agregando la .xml extensión para que el archivo se llame file_name.smx.xml y, a continuación, haga doble clic en el nuevo nombre de archivo, el archivo XML se abre en Internet Explorer y es mucho más fácil de leer.

La siguiente imagen es un ejemplo de un archivo XML abierto en Internet Explorer. Se resaltan los detalles del equipo y el mensaje de estado. Contiene la información que hemos descrito anteriormente, combinada con el valor de identificador de mensaje de estado único.

Nota:

Si cambia el nombre de estos archivos, cópielos primero en otra carpeta para que no afecte a la carpeta Statesys.box .

Captura de pantalla de un archivo .smx.xml de ejemplo en Internet Explorer.

Por último, los mensajes de estado se deben procesar en la base de datos. En el archivo Statesys.log , puede ver mensajes similares al ejemplo siguiente:

Se encontraron nuevos mensajes de estado que procesar, iniciando el subproceso de procesamiento
Subproceso "Subproceso de procesamiento de mensajes de estado #0" id:5076 iniciado
CMessageProcessor: sitio primario "site_name" detectado
CMessageProcessor: archivo de procesamiento: mdlbp169. SMW
CMessageProcessor: 1 registros procesados con 0 registros no válidos.
CMessageProcessor: archivo replicado correctamente "mdlbp169. SMW" al sitio primario site_name.
CMessageProcessor: se procesaron 1 archivos de mensaje en este lote, con 0 archivos incorrectos.
El subproceso "State Message Processing Thread #0" id:5076 finalizó normalmente

El componente de procesamiento de base de datos se puede hacer visible habilitando el seguimiento de SQL, pero no ayuda mucho. En su lugar, debemos usar el generador de perfiles de SQL. El generador de perfiles nos da una pista de lo que ocurre en segundo plano, pero no por completo. Varios procedimientos almacenados de SQL son responsables del procesamiento de mensajes de estado. Además, varias tablas de la base de datos almacenan los datos de mensajería de estado. Los procedimientos almacenados que realizan el procesamiento de mensajes de estado generalmente comienzan con el nombre spProcess. Hay muchos de estos procedimientos.

El servidor de sitio realiza un seguimiento de los mensajes de estado a medida que llegan, por lo que puede marcar los mensajes que faltan y solicitar periódicamente una resincronización cuando sea necesario. Los mensajes de estado son importantes. No quieres perderte nada.

A medida que llegan los mensajes de estado, el identificador único se lee y almacena en la base de datos. A medida que continúa el procesamiento, los datos se actualizan periódicamente. Si se detecta una brecha, los datos se marcan y almacenan como mensajes de estado que faltan en la SR_MissingMessageRanges tabla. Idealmente, esta tabla estará vacía. Sin embargo, en producción, es posible que vea datos en la tabla. Esta tabla ayuda a realizar un seguimiento de los mensajes de estado que requieren una resincronización.

El archivo de control de sitio se encuentra en la base de datos. Para obtener la configuración específica de STATE_MESSAGE_SYSTEM, ejecute la siguiente consulta en un sitio principal o 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))

configuración de STATE_MESSAGE_SYSTEM

Nombre Value1 Value2 Value3
Intervalo de mensajes de latido 60
Intervalo de sondeo de bandeja de entrada 900
Tamaño del fragmento del cargador 256
Subprocesos del cargador 4
Número máximo de fragmentos capturados 100
Min Missing Message Age 2880
Resincronización del intervalo de comprobación 15
Reintentar configuración REG_SZ <Config><Retry PatternID="0" RetryQueue="0">7200,28800,86400</Retry></Config> 0

Nota:

  • El intervalo de comprobación de resincronización se establece en 60 minutos. Esta es la programación para comprobar los sistemas que requieren resincronizaciones de mensajes de estado.
  • La antigüedad mínima del mensaje que falta se establece en 2880. Este es el tiempo que debe faltar un mensaje antes de solicitar una resincronización.