Partager via


Description de la messagerie d’état dans Configuration Manager

Cet article décrit le système de messagerie d’état dans Configuration Manager.

Version du produit d’origine : Configuration Manager (Current Branch)
Numéro de base de connaissances d’origine : 4459394

Présentation de la messagerie d’état

La messagerie d’état dans Configuration Manager est un mécanisme qui reflète une condition cliente à un moment donné. Les messages d’état, en revanche, fonctionnent pour aider les administrateurs à suivre le flux de travail des données via différents composants Configuration Manager.

Une visionneuse de messages d’état est intégrée directement à la console afin que les messages d’état puissent être affichés et suivis. Il n’existe aucune visionneuse équivalente pour les messages d’état. Le résultat des messages d’état est affiché dans :

  • reports
  • diverses données dans la console, telles que le nombre de systèmes devant être mis à jour
  • journaux du client

Les messages d’état contiennent des informations concises sur les conditions sur place sur le client. Le système de messagerie d’état est utilisé par des composants spécifiques de Configuration Manager, notamment :

  • mises à jour logicielles
  • gestion de la configuration souhaitée
  • protection de l’accès réseau

Les données de mise à jour logicielle critique s’appuient sur le système de messagerie d’état dans Configuration Manager. Comprendre la messagerie d’état deviendra encore plus importante dans les futures versions de Configuration Manager, car d’autres composants en tireront parti.

Le diagramme suivant fournit une bonne description du fonctionnement du système de messagerie d’état.

Diagramme montrant le fonctionnement du système de messagerie d’état.

La zone verte représente le système de messagerie d’état. Les composants à l’intérieur de la zone sont des composants qui alimentent les informations sur le système.

Lorsque les messages d’état sont reçus, deux choses se produisent :

  1. Les messages d’état sont stockés dans le fournisseur WMI (Windows Management Instrumentation).
  2. Le système d’état récupère WMI sur un cycle de 15 minutes (par défaut) pour tous les messages d’état qui n’ont pas été envoyés, puis les transfère au point de gestion. La période de cycle peut être modifiée.

Dans le diagramme, l’élément d’installation du client s’affiche séparément pour plus de clarté. Pendant l’installation du client, le point de gestion se trouve et cible pour les messages d’état. Les messages d’état relatifs à l’installation du client sont transférés au point d’état de secours (FSP) (s’il est configuré) dans l’une des conditions suivantes :

  • Le point de gestion n’est pas atteint.
  • Le point de gestion est en panne pour une raison quelconque.

Pour tout le reste, le trafic passe directement au point de gestion.

Les messages d’état qui arrivent au point de gestion sont traités dans les .smx fichiers par le composant MP Relay et placés dans le auth\statesys.box\incoming dossier sur le serveur de site. Ensuite, ils sont traités dans la base de données pour terminer le flux de travail.

Approfondir

Nous devons nous assurer que la journalisation détaillée est activée pour :

  • le client
  • le point de gestion
  • composants de messagerie d’état sur le serveur de site

Pour définir la journalisation détaillée ou déboguer sur un client ou un point de gestion Configuration Manager, modifiez ou créez les entrées de Registre suivantes :

Sous-clé de Registre Nom DWORD Données de valeur
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CCM/Logging/@Global LogLevel 0
KEY_LOCAL_MACHINE/SOFTWARE /Microsoft/CCM/Logging/DebugLogging Activé(e) Vrai

Sur le serveur de site, modifiez l’entrée de Registre suivante pour activer la journalisation détaillée, puis redémarrez le SMS_Executive service (ou le composant système d’état) :

Sous-clé de Registre Nom DWORD Données de valeur
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SMS/Components/SMS_STATE_SYSTEM Journalisation détaillée 1

Les commandes SQL de suivi nécessitent que le suivi SQL soit activé pour les composants Configuration Manager. Mais pas beaucoup de données utiles peuvent être obtenues directement à partir du suivi. Il est vrai même si Profiler est activé. Nous allons donc examiner les fichiers Updatesdeployment.log et Statemessage.log sur le client. En interprétant les messages d’état dans ces journaux, nous pouvons obtenir une image claire de ce qui se produit aux différentes étapes du processus.

Avant d’examiner les exemples de code de journal, nous devons comprendre le format de message d’état. Le message d’état se compose de plusieurs parties, notamment le type de rubrique et l’ID de message d’état. À certains emplacements dans les journaux, le type de rubrique semble déjà être interprété pour vous.

Vous ne verrez pas toujours le type de rubrique et l’ID de message d’état ensemble dans le même journal. Un type de données sans l’autre ne vous aide pas vraiment à déterminer ce qui est nécessaire. Toutefois, même si vous avez à la fois le type de rubrique et l’ID de message d’état, les informations ne sont pas utiles, sauf si vous pouvez l’interpréter.

Le graphique suivant peut vous aider à interpréter la combinaison et TopicType StateID à obtenir des données significatives.

select * from v_StateNames  

Note

Le graphique suivant inclut les codes de type de rubrique de la série 300, 400 et 500.

Données de messagerie d’état

TopicType StateID StateName
300 0 État de conformité inconnu
300 1 Conforme
300 2 Non conforme
300 3 Conflit détecté
301 0 État d’application inconnu
301 1 Installation des mises à jour
301 2 En attente de redémarrage
301 3 Attente de la fin d’une autre installation
301 4 Mises à jour correctement installées
301 5 Redémarrage du système en attente
301 6 Échec de l’installation des mises à jour
301 7 Téléchargement des mises à jour
301 8 Mises à jour téléchargées
301 9 Échec du téléchargement des mises à jour
301 10 Fenêtre de maintenance en attente avant l’installation
301 11 En attendant que l’orchestrateur tiers lance l’installation
302 0 État d’évaluation inconnu
302 1 Évaluation activée
302 2 L’évaluation a réussi
302 3 Échec de l’évaluation
400 0 État de détection inconnu
400 1 Facultatif
400 2 Non détectée
400 3 Détectée
401 0 État de conformité inconnu
401 1 Conforme
401 2 Non conforme
401 3 Conflit détecté
401 4 Error
401 5 Non applicable
401 6 Non détectée
401 7 Appliquée
402 0 État d’application inconnu
402 1 Mise en œuvre démarrée
402 2 Application en attente de contenu
402 3 Attente de la fin d’une autre installation
402 4 Fenêtre de maintenance en attente avant l’installation
402 5 Redémarrer requis avant l’installation
402 6 Échec général
402 7 Installation en attente
402 8 Installation de la mise à jour
402 9 Redémarrage du système en attente
402 10 Mise à jour installée avec succès
402 11 Échec de l’installation de la mise à jour
402 12 Téléchargement de la mise à jour
402 13 Mise à jour téléchargée
402 14 Échec du téléchargement de la mise à jour
500 0 État de détection inconnu
500 1 La mise à jour n’est pas obligatoire
500 2 La mise à jour est requise
500 3 La mise à jour est installée
501 0 État d’analyse inconnu
501 1 L’analyse attend l’emplacement du catalogue
501 2 L’analyse est en cours d’exécution
501 3 Analyse terminée
501 4 L’analyse est en attente de nouvelle tentative
501 5 Échec de l’analyse
501 6 Analyse terminée avec des erreurs

Pour plus d’informations, consultez Les messages d’état dans Configuration Manager.

L’exemple suivant aligne et compare les fichiers Updatesdeployment.log et Statemessage.log. Assurez-vous que les journaux font référence au même message d’état en alignant le même TopicID (texte vert). Il indique clairement que les deux journaux font référence au même message d’état. Le TopicType texte bleu clair s’affiche. Notez qu’un journal peut afficher le nombre réel qui peut être interprété à partir du graphique de données de messagerie d’état. L’autre peut afficher une valeur générique (déjà interprétée). L’ID du message d’état (StateId) s’affiche en texte violet.

Capture d’écran montrant les détails des messages de journal.

En combinant l’ID du TopicType message d’état (StateId) à partir du graphique, vous pouvez suivre exactement ce qui se produit dans les journaux. Dans cet exemple, ces exemples de code montrent les informations suivantes :

  • Mise à jour de l’évaluation
  • Résultat de l’évaluation
  • La mise à jour en cours de téléchargement
  • Mise à jour installée
  • Redémarrage du système en attente

Il s’agit simplement d’un exemple de la façon dont les messages d’état sont envoyés dans le système d’état.

Flux de données de messagerie d’état

L’image suivante est un exemple réel de la façon dont les données de messagerie d’état rendent son chemin vers le point de gestion et sont traitées dans la base de données.

Cet exemple utilise un client de test. Il commence par forcer le client à récupérer WMI pour toutes les informations de messagerie d’état, puis envoie ces informations au point de gestion lors de son prochain cycle d’interrogation.

Dans WMI, les messages d’état sont stockés dans l’espace root\ccm\statemsg de noms. Dans cet espace de noms, il existe deux classes d’intérêt : CCM_StateMsg_SerialNum et CCM_StateMsg.

La CCM_StateMsg_SerialNum classe est utilisée pour enregistrer le dernier numéro de série utilisé pour un message d’état. Chaque message d’état a un numéro de série unique, similaire à l’inventaire matériel. De cette façon, le serveur de site peut suivre s’il manque des messages d’état du système. Il est important, car les messages d’état manquants peuvent entraîner des rapports d’état incomplets ou incorrects.

Capture d’écran de la classe CCM_StateMsg_SerialNum.

La CCM_StateMsg classe contient les messages d’état eux-mêmes. Dans l’instance de classe, vous pouvez trouver tous les messages d’état enregistrés.

Capture d’écran de l’instance CCM_StateMsg.

Si vous ouvrez l’un de ces messages, vous trouverez les détails du message d’état et certaines données que nous avons abordées précédemment, comme illustré dans l’exemple suivant.

Capture d’écran montrant les détails du message d’état.

Nous pouvons renvoyer les données au point de gestion et suivre sa progression à l’aide des scripts de resynchronisation suivants.

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()

Ce script se trouve sur le web à différents emplacements. Il utilise le Kit de développement logiciel (SDK) Configuration Manager pour que le client renvoie ses données au point de gestion.

En règle générale, un script Visual Basic (VBScript) est exécuté à l’aide cscriptde . Notez que le script peut échouer si vous essayez de l’exécuter vous-même. Le problème est que Configuration Manager est une application 32 bits qui s’exécute sur un serveur 64 bits. La version par défaut est cscript la version 64 bits et fonctionne généralement correctement avec n’importe quel VBScript. Toutefois, dans ce cas, l’appel effectué nécessite la version 32 bits du cscript dossier syswow64.

Capture d’écran de l’invite de commandes d’administrateur exécutant cscript.

Lorsque le cycle d’interrogation des messages d’état suivant se produit, tous les messages d’état sont envoyés au point de gestion.

Dans le fichier Statemessage.log, vous pouvez voir que les informations de message d’état sont extraites, mises en forme en XML, puis envoyées au point de gestion. Les informations de message d’état doivent ressembler à l’exemple suivant :

<! [LOG[Corps StateMessage : <?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>>
<Date de date 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-4a61-9794-eb675bc743e5 » Type="500 » IDType="3"/><State ID="2 » Criticality="0"/><UserParameters Flags="0 » Count="1"><Param>102<</Param></UserParameters></StateMessageserParameters></StateMessage></ReportBody/ReportBody><>
]LOG< ![ LOG[CStateMsgManager ::GetSignEncyptMode]LOG] !><time="time » date="date » component="StateMessage » context=" » type="1 » thread="3592 » file="statemsg.cpp :1820 »>
<! [LOG[Messages d’état transférés avec succès au point de gestion]LOG] !><time="time » date="date » component="StateMessage » context=" » type="1 » thread="3592 » file="statemsg.cpp :1527 »>

Note

Cet exemple est tronqué à un seul message d’état en raison de la taille du fichier XML.

Bien que le fichier Statemessage.log enregistre que les messages sont envoyés au point de gestion, le système de messagerie d’état ne déplace pas réellement les données vers le point de gestion. Dans l’exemple suivant, vous pouvez voir que CCMMessaging cette opération est effectuée. Il y a plus qui passent en arrière-plan à ce stade. Toutefois, il est suffisant de savoir que CCMMessaging les données sont envoyées au point de gestion (dans ce cas, le MP_Relay composant).

<! [LOG[OutgoingMessage(Queue='mp_mp_relayendpoint', ID={A9E7A07D-223D-4F5D-93D5-15AF5B72E05C}) : remis avec succès à l’hôte ' host_name'.]LOG] !>

Lorsque les données arrivent à des fins de traitement MP_Relay, elles sont traitées et traduites au .smx format de fichier, puis placées dans le auth\statesys.box\incoming dossier.

Tâche Inv-Relay : traitement du corps du message
Relais : FileType= SMX
Relais : dir de boîte de réception : C :\Program Files (x86)\Microsoft Configuration Manager\inboxes\auth\statesys.box\incoming
Relais : 0 pièces jointes reçues
Relais : 0 sur 0 pièces jointes correctement traitées
Inv-Relay : tâche terminée avec succès

Dans le auth\statesys.box\incoming dossier, vous pouvez voir les .smx fichiers en cours de traitement. En règle générale, vous ne les verrez pas ici. Toutefois, si les fichiers restent dans ce dossier, vous devez examiner ce que sont les messages et pourquoi ils ne sont pas traités. Si vous trouvez un .smx fichier, vous pouvez l’ouvrir à l’aide d’un éditeur de texte tel que le Bloc-notes pour afficher les détails. Toutefois, la mise en forme du fichier peut être non lisible, comme dans l’exemple suivant :

Capture d’écran d’un exemple de fichier SMX dans le Bloc-notes.

Si vous renommez le .smx fichier en ajoutant l’extension .xml afin que le fichier soit nommé file_name.smx.xml, puis double-cliquez sur le nouveau nom de fichier, le fichier XML est ouvert dans Internet Explorer et est beaucoup plus facile à lire.

L’image suivante est un exemple de fichier XML ouvert dans Internet Explorer. Les détails de l’ordinateur et du message d’état sont mis en surbrillance. Il contient les informations que nous avons précédemment abordées, combinées à la valeur d’ID de message d’état unique.

Note

Si vous renommez ces fichiers, commencez par les copier dans un autre dossier afin de ne pas affecter le dossier Statesys.box .

Capture d’écran d’un exemple de fichier .smx.xml dans Internet Explorer.

Enfin, les messages d’état doivent être traités dans la base de données. Dans le fichier Statesys.log , vous pouvez voir ces messages similaires à l’exemple suivant :

Nouveaux messages d’état à traiter, en commençant le thread de traitement
Thread « State Message Processing Thread #0 » id :5076 démarré
CMessageProcessor - Site parent détecté « site_name »
CMessageProcessor - Fichier de traitement : mdlbp169. SMW
CMessageProcessor : 1 enregistrements traités avec 0 enregistrements non valides.
CMessageProcessor - Fichier répliqué avec succès « mdlbp169. SMW » vers le site parent site_name.
CMessageProcessor : 1 fichier de message traité dans ce lot, avec 0 fichiers incorrects.
Thread « State Message Processing Thread #0 » id :5076 terminé normalement

Le composant de traitement de base de données peut être rendu visible en activant le suivi SQL, mais cela n’aide pas beaucoup. Nous devons utiliser le profileur SQL à la place. Le profileur nous donne un aperçu de ce qui se passe en arrière-plan, mais pas complètement. Plusieurs procédures stockées SQL sont responsables du traitement des messages d’état. En outre, plusieurs tables de la base de données stockent les données de messagerie d’état. Les procédures stockées qui effectuent le traitement des messages d’état commencent généralement par le nom spProcess. Il y a beaucoup de procédures de ce genre.

Le serveur de site effectue le suivi des messages d’état à mesure qu’ils arrivent, afin qu’il puisse marquer les messages manquants et demander régulièrement une resynchronisation si nécessaire. Les messages d’état sont importants. Tu ne veux pas manquer.

À mesure que les messages d’état arrivent, l’ID unique est lu et stocké dans la base de données. À mesure que le traitement se poursuit, les données sont régulièrement mises à jour. Si un écart est détecté, ces données sont signalées et stockées en tant que messages d’état manquants dans la SR_MissingMessageRanges table. Dans l’idéal, cette table sera vide. Toutefois, en production, vous pouvez voir des données dans la table. Cette table permet de suivre les messages d’état qui nécessitent une resynchronisation.

Le fichier de contrôle de site se trouve dans la base de données. Pour obtenir les paramètres spécifiques pour STATE_MESSAGE_SYSTEM, exécutez la requête suivante sur un site principal 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))

paramètres de STATE_MESSAGE_SYSTEM

Nom Value1 Value2 Valeur3
Intervalle de msg de pulsation de pulsation 60
Intervalle d’interrogation de boîte de réception 900
Taille du bloc du chargeur 256
Threads du chargeur 4
Nombre maximal de blocs récupérés 100
Min Missing Message Age 2880
Resync Point terval 15
Nouvelle tentative de configuration REG_SZ <Config><Retry PatternID="0 » RetryQueue="0">7200,28800,86400</Retry></Config> 0

Note

  • La resynchronisation Point terval est définie sur 60 minutes. Il s’agit de la planification de la vérification des systèmes qui nécessitent une resynchronisation des messages d’état.
  • L’âge minimal du message manquant est défini sur 2880. Il s’agit de la durée pendant laquelle un message doit être manquant avant qu’une resynchronisation soit demandée.