Freigeben über


Beschreibung der Statusnachrichten in Configuration Manager

In diesem Artikel wird das Statusnachrichtensystem in Configuration Manager beschrieben.

Ursprüngliche Produktversion: Configuration Manager (Current Branch)
Ursprüngliche KB-Nummer: 4459394

Grundlegendes zu Statusnachrichten

Statusnachrichten in Configuration Manager sind ein Mechanismus, der eine Clientbedingung zu einem bestimmten Zeitpunkt widerspiegelt. Statusmeldungen funktionieren dagegen, damit Administratoren den Workflow von Daten über verschiedene Configuration Manager-Komponenten nachverfolgen können.

Eine Statusmeldungsanzeige ist direkt in die Konsole integriert, sodass Statusmeldungen angezeigt und nachverfolgt werden können. Für Statusmeldungen gibt es keinen entsprechenden Viewer. Das Ergebnis von Statusmeldungen wird in:

  • reports
  • verschiedene Daten in der Konsole, z. B. die Anzahl der Systeme, die aktualisiert werden müssen
  • Clientprotokolle

Statusmeldungen enthalten präzise Informationen zu Bedingungen, die auf dem Client vorhanden sind. Das Statusnachrichtensystem wird von bestimmten Komponenten von Configuration Manager verwendet, einschließlich:

  • Softwareupdates
  • Gewünschte Konfigurationsverwaltung
  • Netzwerkzugriffsschutz

Kritische Softwareupdatedaten basieren auf dem Statusnachrichtensystem in Configuration Manager. Das Verständnis von Statusnachrichten wird in zukünftigen Versionen von Configuration Manager noch wichtiger, da mehr Komponenten davon profitieren.

Das folgende Diagramm enthält eine gute Beschreibung der Funktionsweise des Statusnachrichtensystems.

Diagramm zeigt, wie das Statusnachrichtensystem funktioniert.

Das grüne Feld stellt das Statusnachrichtensystem dar. Die Komponenten innerhalb des Felds sind Komponenten, die Informationen an das System weitergeben.

Wenn Statusmeldungen empfangen werden, treten zwei Dinge auf:

  1. Statusmeldungen werden im WMI-Anbieter (Windows Management Instrumentation) gespeichert.
  2. Das Zustandssystem verschrottet WMI auf einem 15-Minuten-Zyklus (Standard) für alle Statusmeldungen, die nicht gesendet wurden, und leitet sie dann an den Verwaltungspunkt weiter. Der Zykluszeitraum kann geändert werden.

Im Diagramm wird das Clientinstallationsstück separat zur Übersichtlichkeit angezeigt. Während der Clientinstallation befindet sich der Verwaltungspunkt und richtet sich an Statusmeldungen. Statusmeldungen zur Clientinstallation werden unter einer der folgenden Bedingungen an den Fallbackstatuspunkt (FSP) weitergeleitet (sofern er konfiguriert ist):

  • Der Verwaltungspunkt ist nicht erreicht.
  • Der Verwaltungspunkt ist aus irgendeinem Grund ausgefallen.

Für alles andere geht der Datenverkehr direkt an den Verwaltungspunkt.

Statusmeldungen, die am Verwaltungspunkt eingehen, werden von der MP Relay-Komponente in die .smx Dateien verarbeitet und in den auth\statesys.box\incoming Ordner auf dem Standortserver abgelegt. Anschließend werden sie in die Datenbank verarbeitet, um den Workflow abzuschließen.

Tiefergehen

Wir müssen sicherstellen, dass die ausführliche Protokollierung für Folgendes aktiviert ist:

  • der Client
  • der Verwaltungspunkt
  • die Statusnachrichtenkomponenten auf dem Standortserver

Zum Festlegen ausführlicher oder Debugprotokollierung auf einem Configuration Manager-Client oder Verwaltungspunkt bearbeiten oder erstellen Sie die folgenden Registrierungseinträge:

Registrierungsunterschlüssel DWORD-Name Wertdaten
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CCM/Logging/@Global LogLevel 0
KEY_LOCAL_MACHINE/SOFTWARE /Microsoft/CCM/Logging/DebugLogging Aktiviert Richtig

Bearbeiten Sie auf dem Standortserver den folgenden Registrierungseintrag, um ausführliche Protokollierung zu aktivieren, und starten Sie dann den SMS_Executive Dienst neu (oder die Zustandssystemkomponente):

Registrierungsunterschlüssel DWORD-Name Wertdaten
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SMS/Components/SMS_STATE_SYSTEM Ausführliche Protokollierung 1

Die Ablaufverfolgung von SQL-Befehlen erfordert, dass die SQL-Ablaufverfolgung für Configuration Manager-Komponenten aktiviert ist. Aber nicht viel nützliche Daten können direkt aus der Ablaufverfolgung abgerufen werden. Dies gilt auch dann, wenn Profiler aktiviert ist. Daher untersuchen wir die dateien Updatesdeployment.log und Statemessage.log auf dem Client. Durch die Interpretation der Statusmeldungen in diesen Protokollen können wir ein klares Bild davon erhalten, was bei den verschiedenen Schritten des Prozesses geschieht.

Bevor wir Protokollcodebeispiele untersuchen, müssen wir das Statusmeldungsformat verstehen. Die Statusnachricht selbst besteht aus mehreren Teilen, einschließlich Thementyp und Statusnachrichten-ID. An einigen Stellen in den Protokollen scheint der Thementyp für Sie bereits interpretiert zu werden.

Im selben Protokoll wird der Thementyp und die Statusnachrichten-ID nicht immer angezeigt. Eine Art von Daten ohne den anderen hilft Ihnen nicht wirklich zu bestimmen, was erforderlich ist. Selbst wenn Sie jedoch sowohl über die Thementyp - als auch über die Statusnachrichten-ID verfügen, sind die Informationen nicht hilfreich, es sei denn, Sie können sie interpretieren.

Das folgende Diagramm kann Ihnen dabei helfen, die Kombination von TopicType und StateID zum Abrufen aussagekräftiger Daten zu interpretieren.

select * from v_StateNames  

Notiz

Das folgende Diagramm enthält die Codes 300, 400 und 500 Datenreihe Thementyp .

Statusnachrichtendaten

TopicType StateID StateName
300 0 Compliancestatus unbekannt
300 1 Konform
300 2 Nicht konform
300 3 Konflikt erkannt
301 0 Erzwingungsstatus unbekannt
301 1 Installieren von Updates
301 2 Warten auf neustarten
301 3 Warten auf den Abschluss einer weiteren Installation
301 4 Erfolgreich installierte Updates
301 5 Ausstehender Systemneustart
301 6 Fehler beim Installieren von Update(en)
301 7 Herunterladen von Updates
301 8 Heruntergeladene Updates
301 9 Fehler beim Herunterladen von Updates.
301 10 Warten auf Wartungsfenster vor der Installation
301 11 Warten auf den Orchestrator eines Drittanbieters, um die Installation zu initiieren
302 0 Auswertungsstatus unbekannt
302 1 Auswertung aktiviert
302 2 Die Auswertung war erfolgreich.
302 3 Fehler bei der Auswertung
400 0 Erkennungsstatus unbekannt
400 1 Nicht erforderlich
400 2 Nicht erkannt
400 3 Erkannt
401 0 Compliancestatus unbekannt
401 1 Konform
401 2 Nicht konform
401 3 Konflikt erkannt
401 4 Fehler
401 5 Nicht zutreffend
401 6 Nicht erkannt
401 7 Erzwungen
402 0 Erzwingungsstatus unbekannt
402 1 Erzwingung gestartet
402 2 Erzwingung wartet auf Inhalt
402 3 Warten auf den Abschluss einer weiteren Installation
402 4 Warten auf Wartungsfenster vor der Installation
402 5 Neu starten erforderlich vor der Installation
402 6 Allgemeiner Fehler
402 7 Ausstehende Installation
402 8 Update wird installiert.
402 9 Ausstehender Systemneustart
402 10 Erfolgreich installiertes Update
402 11 Update konnte nicht installiert werden.
402 12 Herunterladen eines Updates
402 13 Herunterladen eines Updates
402 14 Update kann nicht heruntergeladen werden
500 0 Erkennungsstatus unbekannt
500 1 Update ist nicht erforderlich
500 2 Update ist erforderlich
500 3 Update ist installiert
501 0 Scanstatus unbekannt
501 1 Scan wartet auf den Katalogspeicherort
501 2 Scan wird ausgeführt
501 3 Überprüfung abgeschlossen
501 4 Überprüfung steht noch aus
501 5 Fehler beim Scannen.
501 6 Überprüfung mit Fehlern abgeschlossen

Weitere Informationen finden Sie unter Statusmeldungen in Configuration Manager.

Im folgenden Beispiel werden die dateien Updatesdeployment.log und Statemessage.log ausgerichtet und verglichen. Stellen Sie sicher, dass die Protokolle auf dieselbe Statusmeldung verweisen, indem Sie denselben TopicID (grünen Text) ausrichten. Es weist eindeutig darauf hin, dass die beiden Protokolle auf dieselbe Statusmeldung verweisen. Dies TopicType wird in hellblauem Text angezeigt. Beachten Sie, dass ein Protokoll möglicherweise die tatsächliche Zahl anzeigt, die aus dem Statusnachrichtendatendiagramm interpretiert werden kann. Die andere kann einen generischen Wert (bereits interpretiert) anzeigen. Die Statusmeldungs-ID (StateId) wird in lila Text angezeigt.

Der Screenshot zeigt die Details der Protokollnachrichten.

Indem Sie die ID und die TopicType Statusmeldung (StateId) aus dem Diagramm kombinieren, können Sie genau verfolgen, was in den Protokollen passiert. In diesem Beispiel zeigen diese Codebeispiele die folgenden Informationen:

  • Aktualisieren der Auswertung
  • Das Ergebnis der Auswertung
  • Das heruntergeladene Update
  • Das update, das installiert wird
  • Ein ausstehender Systemneustart

Es ist nur ein Beispiel dafür, wie Statusmeldungen in das Zustandssystem gesendet werden.

Statusnachrichtendatenfluss

Die folgende Abbildung ist ein tatsächliches Beispiel dafür, wie Statusnachrichtendaten an den Verwaltungspunkt gehen und an die Datenbank verarbeitet werden.

In diesem Beispiel wird ein Testclient verwendet. Zunächst wird der Client gezwungen, WMI für alle Statusnachrichteninformationen zu verschrotten und diese Informationen dann an den Verwaltungspunkt im nächsten Abrufzyklus zu senden.

In WMI werden Statusmeldungen im root\ccm\statemsg Namespace gespeichert. In diesem Namespace gibt es zwei Interessante Klassen: CCM_StateMsg_SerialNum und CCM_StateMsg.

Die CCM_StateMsg_SerialNum Klasse wird verwendet, um die letzte Seriennummer aufzuzeichnen, die für eine Statusmeldung verwendet wird. Jede Statusnachricht weist eine eindeutige Seriennummer auf, ähnlich der Hardwareinventur. Auf diese Weise kann der Standortserver nachverfolgen, ob statusmeldungen aus dem System fehlen. Es ist wichtig, dass fehlende Statusmeldungen unvollständige oder ungenaue Zustandsberichte verursachen können.

Screenshot der CCM_StateMsg_SerialNum Klasse.

Die CCM_StateMsg Klasse enthält die Statusmeldungen selbst. In der Klasseninstanz finden Sie alle Zustandsmeldungen, die aufgezeichnet werden.

Screenshot der CCM_StateMsg Instanz.

Wenn Sie eine dieser Nachrichten öffnen, finden Sie die Details der Statusmeldung und einige Daten, die wir zuvor behandelt haben, wie im folgenden Beispiel gezeigt.

Der Screenshot zeigt die Details der Statusmeldung.

Wir können die Daten erneut an den Verwaltungspunkt senden und den Fortschritt mithilfe der folgenden resync-Skripts nachverfolgen.

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

Dieses Skript befindet sich im Web an verschiedenen Speicherorten. Es verwendet das Configuration Manager SDK, um zu bewirken, dass der Client seine Daten an den Verwaltungspunkt erneut sendet.

In der Regel wird ein Visual Basic-Skript (VBScript) mithilfe von cscript. Beachten Sie, dass das Skript möglicherweise fehlschlägt, wenn Sie versuchen, es selbst auszuführen. Das Problem besteht darin, dass Configuration Manager eine 32-Bit-Anwendung ist, die auf einem 64-Bit-Server ausgeführt wird. Die Standardversion von 64-Bit ist die 64-Bit-Version und funktioniert in der Regel mit jedem VBScript.The default version of cscript is the 64-bit version and generally works fine with any VBScript. In diesem Fall erfordert der aufruf, der ausgeführt wird, dass die 32-Bit-Version des cscript Syswow64-Ordners nicht mehr verfügbar ist.

Screenshot der Administrator-Eingabeaufforderung mit Cscript.

Wenn der nächste Statusmeldungsabfragungszyklus auftritt, werden alle Statusmeldungen an den Verwaltungspunkt gesendet.

In der datei Statemessage.log können Sie sehen, dass die Statusmeldungsinformationen abgerufen, in XML formatiert und dann an den Verwaltungspunkt gesendet werden. Die Statusmeldungsinformationen sollten dem folgenden Beispiel ähneln:

<! [LOG[StateMessage body: <?xml version="1.0" encoding="UTF-16"?>
<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<>/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="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1820">
<! [LOG[Erfolgreich weitergeleitete Statusmeldungen an den Verwaltungspunkt]LOG]!><time="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1527">

Notiz

Dieses Beispiel wird aufgrund der Größe der XML-Datei auf eine einzelne Statusmeldung abgeschnitten.

Obwohl die Statemessage.log Dateieinträge, die die Nachrichten an den Verwaltungspunkt verteilt werden, werden die Daten vom Statusnachrichtensystem nicht tatsächlich an den Verwaltungspunkt verschoben. Im folgenden Beispiel können Sie sehen, dass CCMMessaging dieser Vorgang ausgeführt wird. Es gibt mehr, die sich an diesem Punkt hinter den Kulissen befinden. Es reicht jedoch aus, zu wissen, dass CCMMessaging die Daten an den Verwaltungspunkt (in diesem Fall die MP_Relay Komponente) gesendet werden.

<! [LOG[OutgoingMessage(Queue='mp_mp_relayendpoint', ID={A9E7A07D-223D-4F5D-93D5-15AF5B72E05C}): Erfolgreich an den Host "host_name" übermittelt.]LOG]!>

Wenn die Daten zur Verarbeitung MP_Relayantreffen, wird sie verarbeitet und in das .smx Dateiformat übersetzt und dann in den auth\statesys.box\incoming Ordner eingefügt.

Inv-Relay-Aufgabe: Verarbeiten des Nachrichtentexts
Relay: FileType= SMX
Relay: Postausgangsverzeichnis: C:\Programme (x86)\Microsoft Configuration Manager\Posteingänge\auth\statesys.box\incoming
Relay: Empfangene 0 Anlagen
Relay: 0 von 0 Anlagen erfolgreich verarbeitet
Inv-Relay: Aufgabe erfolgreich abgeschlossen

auth\statesys.box\incoming Im Ordner können Sie die .smx verarbeiteten Dateien sehen. In der Regel werden sie hier nicht angezeigt. Wenn die Dateien jedoch in diesem Ordner verbleiben, müssen Sie untersuchen, was die Nachrichten sind und warum sie nicht verarbeitet werden. Wenn Sie eine .smx Datei finden, können Sie sie mit einem Texteditor wie Editor öffnen, um die Details anzuzeigen. Die Formatierung der Datei kann jedoch nicht lesbar sein, wie im folgenden Beispiel gezeigt:

Screenshot einer Beispiel-SMX-Datei im Editor.

Wenn Sie die Datei umbenennen, indem Sie die .smx .xml Erweiterung so hinzufügen, dass die Datei file_name.smx.xml heißt, und Doppelklicken Sie dann auf den neuen Dateinamen, wird die XML-Datei in Internet Explorer geöffnet und ist viel einfacher zu lesen.

Die folgende Abbildung ist ein Beispiel für eine XML-Datei, die in Internet Explorer geöffnet wird. Die Details der Computer- und Statusmeldung werden hervorgehoben. Sie enthält die Informationen, die wir zuvor erläutert haben, kombiniert mit dem eindeutigen Statusnachrichten-ID-Wert .

Notiz

Wenn Sie diese Dateien umbenennen, kopieren Sie sie zuerst in einen anderen Ordner, sodass Sie sich nicht auf den Ordner Statesys.box auswirken.

Screenshot eines Beispiels .smx.xml Datei in Internet Explorer.

Schließlich müssen die Statusmeldungen in der Datenbank verarbeitet werden. In der datei Statesys.log können Sie solche Meldungen wie im folgenden Beispiel sehen:

Es wurden neue Statusmeldungen gefunden, die verarbeitet werden sollen, und der Verarbeitungsthread wurde gestartet.
Thread "State Message Processing Thread #0" id:5076 started
CMessageProcessor – Erkannte übergeordnete Website "site_name"
CMessageProcessor - Verarbeitungsdatei: mdlbp169. SMW
CMessageProcessor – Verarbeitete 1 Datensätze mit 0 ungültigen Datensätzen.
CMessageProcessor - Erfolgreich replizierte Datei "mdlbp169. SMW" zur übergeordneten Website site_name.
CMessageProcessor – Verarbeitete 1 Nachrichtendateien in diesem Batch mit 0 ungültigen Dateien.
Thread "State Message Processing Thread #0" id:5076 wurde normal beendet

Die Datenbankverarbeitungskomponente kann durch Aktivieren der SQL-Ablaufverfolgung sichtbar gemacht werden, hilft aber nicht viel. Stattdessen müssen wir den SQL-Profiler verwenden. Der Profiler gibt uns einen Hinweis darauf, was hinter den Kulissen passiert, aber nicht vollständig. Mehrere gespeicherte SQL-Prozeduren sind für die Verarbeitung von Statusmeldungen verantwortlich. Außerdem speichern mehrere Tabellen in der Datenbank die Statusnachrichtendaten. Die gespeicherten Prozeduren, die Statusnachrichtenverarbeitung durchführen, beginnen im Allgemeinen mit dem Namen spProcess. Es gibt viele solcher Verfahren.

Der Websiteserver verfolgt Statusmeldungen während der Ankunft nach, sodass alle fehlenden Nachrichten gekennzeichnet und bei Bedarf eine erneute Synchronisierung angefordert werden können. Statusmeldungen sind wichtig. Sie möchten keines verpassen.

Wenn Statusmeldungen eingehen, wird die eindeutige ID gelesen und in der Datenbank gespeichert. Wenn die Verarbeitung fortgesetzt wird, werden die Daten regelmäßig aktualisiert. Wenn eine Lücke erkannt wird, werden diese Daten gekennzeichnet und als fehlende Statusmeldungen in der SR_MissingMessageRanges Tabelle gespeichert. Im Idealfall ist diese Tabelle leer. In der Produktion werden jedoch möglicherweise Daten in der Tabelle angezeigt. Diese Tabelle hilft beim Nachverfolgen von Statusmeldungen, die eine erneute Synchronisierung erfordern.

Die Websitesteuerelementdatei befindet sich in der Datenbank. Um die spezifischen Einstellungen für STATE_MESSAGE_SYSTEMabzurufen, führen Sie die folgende Abfrage auf einer primären oder CAS-Website aus:

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

einstellungen für STATE_MESSAGE_SYSTEM

Name Wert1 Wert2 Wert3
Takt-Msg-Intervall 60
Abfrageintervall für Posteingang 900
Ladeblockgröße 256
Ladethreads 4
Max. Blöcke abgerufen 100
Min. Alter der fehlenden Nachricht 2880
Resync Check Interval 15
Wiederholungskonfiguration REG_SZ <Config><Retry PatternID="0" RetryQueue="0">7200,28800,86400</Retry></Config> 0

Notiz

  • Das Intervall für die erneute Synchronisierung wird auf 60 Minuten festgelegt. Dies ist der Zeitplan für die Überprüfung von Systemen, die Zustandsnachrichten-Neusynchronisierungen erfordern.
  • "Min Missing Message Age " ist auf 2880 festgelegt. So lange muss eine Nachricht fehlen, bevor eine erneute Synchronisierung angefordert wird.