Delen via


Beschrijving van statusberichten in Configuration Manager

In dit artikel wordt het systeem voor statusberichten in Configuration Manager beschreven.

Oorspronkelijke productversie: Configuration Manager (huidige vertakking)
Oorspronkelijk KB-nummer: 4459394

Informatie over statusberichten

Statusberichten in Configuration Manager zijn een mechanisme dat een clientvoorwaarde op een bepaald moment weergeeft. Statusberichten werken daarentegen om beheerders te helpen de werkstroom van gegevens bij te houden via verschillende Configuration Manager-onderdelen.

Een statusberichtviewer is rechtstreeks ingebouwd in de console, zodat statusberichten kunnen worden bekeken en bijgehouden. Er is geen equivalente viewer voor statusberichten. Het resultaat van statusberichten wordt weergegeven in:

  • rapporten
  • verschillende gegevens in de console, zoals het aantal systemen dat moet worden bijgewerkt
  • clientlogboeken

Statusberichten bevatten beknopte informatie over in-place voorwaarden op de client. Het systeem voor statusberichten wordt gebruikt door specifieke onderdelen van Configuration Manager, waaronder:

  • software-updates
  • gewenst configuratiebeheer
  • netwerktoegangsbeveiliging

Essentiële software-updategegevens zijn afhankelijk van het systeem voor statusberichten in Configuration Manager. Het begrijpen van statusberichten wordt nog belangrijker in toekomstige versies van Configuration Manager, omdat meer onderdelen hiervan profiteren.

In het volgende diagram ziet u een goede beschrijving van de werking van het systeem voor statusberichten.

Diagram laat zien hoe het systeem voor statusberichten werkt.

Het groene vak vertegenwoordigt het systeem voor statusberichten. De onderdelen in het vak zijn onderdelen die informatie aan het systeem invoeren.

Wanneer statusberichten worden ontvangen, treden er twee dingen op:

  1. Statusberichten worden opgeslagen in de WMI-provider (Windows Management Instrumentation).
  2. Het statussysteem scrapt WMI op een cyclus van 15 minuten (standaard) voor statusberichten die niet zijn verzonden en stuurt deze vervolgens door naar het beheerpunt. De cyclusperiode kan worden gewijzigd.

In het diagram wordt het installatiestuk van de client afzonderlijk weergegeven voor duidelijkheid. Tijdens de clientinstallatie bevindt het beheerpunt zich en is gericht op statusberichten. Statusberichten over de clientinstallatie worden doorgestuurd naar het terugvalstatuspunt (FSP) (als deze is geconfigureerd) onder een van de volgende voorwaarden:

  • Het beheerpunt is niet bereikt.
  • Het beheerpunt is om een of andere reden niet beschikbaar.

Voor al het andere gaat verkeer rechtstreeks naar het beheerpunt.

Statusberichten die bij het beheerpunt binnenkomen, worden door het MP Relay-onderdeel in de .smx bestanden verwerkt en in de auth\statesys.box\incoming map op de siteserver geplaatst. Vervolgens worden ze verwerkt in de database om de werkstroom te voltooien.

Dieper graven

We moeten ervoor zorgen dat uitgebreide logboekregistratie is ingeschakeld voor:

  • de client
  • het beheerpunt
  • de statusberichtenonderdelen op de siteserver

Als u uitgebreide logboekregistratie of foutopsporing wilt instellen op een Configuration Manager-client of -beheerpunt, bewerkt of maakt u de volgende registervermeldingen:

Registersubsleutel DWORD-naam Waardegegevens
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CCM/Logging/@Global Logniveau 0
KEY_LOCAL_MACHINE/SOFTWARE /Microsoft/CCM/Logging/DebugLogging Ingeschakeld Waar

Bewerk op de siteserver de volgende registervermelding om uitgebreide logboekregistratie in te schakelen en start vervolgens de SMS_Executive service (of het statussysteemonderdeel) opnieuw op:

Registersubsleutel DWORD-naam Waardegegevens
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SMS/Components/SMS_STATE_SYSTEM Uitgebreide logboekregistratie 1

Voor het traceren van SQL-opdrachten moet SQL-tracering zijn ingeschakeld voor Configuration Manager-onderdelen. Maar niet veel nuttige gegevens kunnen rechtstreeks worden verkregen via de tracering. Dit geldt zelfs als Profiler is ingeschakeld. Daarom onderzoeken we de Updatesdeployment.log en Statemessage.log bestanden op de client. Door de statusberichten in deze logboeken te interpreteren, kunnen we een duidelijk beeld krijgen van wat er gebeurt tijdens de verschillende stappen in het proces.

Voordat we voorbeelden van logboekcode bekijken, moeten we de indeling van het statusbericht begrijpen. Het statusbericht zelf bestaat uit verschillende onderdelen, waaronder onderwerptype en statusbericht-id. Op sommige locaties in de logboeken lijkt het onderwerptype al voor u te worden geïnterpreteerd.

U ziet onderwerptype en statusbericht-id niet altijd samen in hetzelfde logboek. Het ene type gegevens zonder het andere helpt u niet om te bepalen wat er nodig is. Zelfs als u zowel onderwerptype als statusbericht-id hebt, is de informatie niet nuttig, tenzij u deze kunt interpreteren.

De volgende grafiek kan u helpen bij het interpreteren van de combinatie van en StateID het verkrijgen van TopicType zinvolle gegevens.

select * from v_StateNames  

Notitie

De volgende grafiek bevat de codes voor het onderwerptype 300, 400 en 500.

Statusberichtengegevens

TopicType StateID StateName
300 0 Nalevingsstatus onbekend
300 1 compatibel
300 2 Niet-compatibel
300 3 Conflict gedetecteerd
301 0 Afdwingingsstatus onbekend
301 1 Update(s) installeren
301 2 Wachten op opnieuw opstarten
301 3 Wachten tot een andere installatie is voltooid
301 4 Update(s) zijn geïnstalleerd
301 5 Systeem opnieuw opstarten in behandeling
301 6 Kan update(s) niet installeren
301 7 Update(s) downloaden
301 8 Gedownloade update(s)
301 9 Kan update(s) niet downloaden
301 10 Wachten op onderhoudsvenster voordat u de installatie installeert
301 11 Wachten op een orchestrator van derden om de installatie te starten
302 0 Evaluatiestatus onbekend
302 1 Evaluatie geactiveerd
302 2 Evaluatie voltooid
302 3 Evaluatie is mislukt
400 0 Detectiestatus onbekend
400 1 Niet vereist
400 2 Niet gedetecteerd
400 3 Gedetecteerd
401 0 Nalevingsstatus onbekend
401 1 compatibel
401 2 Niet-compatibel
401 3 Conflict gedetecteerd
401 4 Error
401 5 Niet van toepassing
401 6 Niet gedetecteerd
401 7 Afgedwongen
402 0 Afdwingingsstatus onbekend
402 1 Afdwingen gestart
402 2 Afdwingen die wachten op inhoud
402 3 Wachten tot een andere installatie is voltooid
402 4 Wachten op onderhoudsvenster voordat u de installatie installeert
402 5 Opnieuw opstarten vereist voordat de installatie wordt uitgevoerd
402 6 Algemene fout
402 7 Installatie in behandeling
402 8 Update installeren
402 9 Systeem opnieuw opstarten in behandeling
402 10 Update is geïnstalleerd
402 11 Kan update niet installeren
402 12 Update downloaden
402 13 Gedownloade update
402 14 Kan update niet downloaden
500 0 Detectiestatus onbekend
500 1 Bijwerken is niet vereist
500 2 Update is vereist
500 3 Update is geïnstalleerd
501 0 Scanstatus onbekend
501 1 Scannen wacht op cataloguslocatie
501 2 Scan wordt uitgevoerd
501 3 Scan voltooid
501 4 Scannen is in behandeling voor opnieuw proberen
501 5 Scannen is mislukt
501 6 Scannen voltooid met fouten

Zie Statusberichten in Configuration Manager voor meer informatie.

In het volgende voorbeeld worden de Updatesdeployment.log- en Statemessage.log-bestanden uitgelijnd en vergeleken. Zorg ervoor dat de logboeken naar hetzelfde statusbericht verwijzen door hetzelfde TopicID uit te lijnen (groene tekst). Het geeft duidelijk aan dat de twee logboeken verwijzen naar hetzelfde statusbericht. De TopicType tekst wordt weergegeven in lichtblauwe tekst. U ziet dat in één logboek mogelijk het werkelijke getal wordt weergegeven dat kan worden geïnterpreteerd vanuit de gegevensgrafiek Statusberichten. De andere kan een algemene waarde weergeven (al geïnterpreteerd). De statusbericht-id (StateId) wordt weergegeven in paarse tekst.

Schermopname van de details van de logboekberichten.

Door de id van het TopicType statusbericht (StateId) uit de grafiek te combineren, kunt u precies bijhouden wat er in de logboeken gebeurt. In dit voorbeeld bevatten deze codevoorbeelden de volgende informatie:

  • Evaluatie bijwerken
  • Het resultaat van de evaluatie
  • De update die wordt gedownload
  • De update die wordt geïnstalleerd
  • Opnieuw opstarten van systeem in behandeling

Het is slechts één voorbeeld van hoe statusberichten naar het statussysteem worden verzonden.

Gegevensstroom voor statusberichten

De volgende afbeelding is een echt voorbeeld van hoe statusberichtengegevens naar het beheerpunt gaan en naar de database worden verwerkt.

In dit voorbeeld wordt een testclient gebruikt. Het begint met het afdwingen van de client om WMI te scrapen voor alle statusberichten en verzendt die informatie vervolgens naar het beheerpunt in de volgende pollingcyclus.

In WMI worden statusberichten opgeslagen in de root\ccm\statemsg naamruimte. In die naamruimte zijn er twee klassen van belang: CCM_StateMsg_SerialNum en CCM_StateMsg.

De CCM_StateMsg_SerialNum klasse wordt gebruikt om het laatste serienummer op te nemen dat wordt gebruikt voor een statusbericht. Elk statusbericht heeft een uniek serienummer, vergelijkbaar met de hardware-inventaris. Op deze manier kan de siteserver bijhouden of er statusberichten van het systeem ontbreken. Het is belangrijk omdat ontbrekende statusberichten onvolledige of onnauwkeurige statusrapportage kunnen veroorzaken.

Schermopname van de klasse CCM_StateMsg_SerialNum.

De CCM_StateMsg klasse bevat de statusberichten zelf. In het klasse-exemplaar vindt u alle statusberichten die worden vastgelegd.

Schermopname van het CCM_StateMsg exemplaar.

Als u een van deze berichten opent, vindt u de details van het statusbericht en enkele gegevens die we eerder hebben besproken, zoals wordt weergegeven in het volgende voorbeeld.

Schermopname van de details van het statusbericht.

We kunnen de gegevens opnieuw verzenden naar het beheerpunt en de voortgang bijhouden met behulp van de volgende hersynchronisatiescripts.

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

Dit script is te vinden op internet op verschillende locaties. Er wordt gebruikgemaakt van de Configuration Manager SDK om ervoor te zorgen dat de client de gegevens opnieuw verzendt naar het beheerpunt.

Normaal gesproken wordt een Visual Basic-script (VBScript) uitgevoerd met behulp van cscript. U ziet dat het script kan mislukken als u het zelf probeert uit te voeren. Het probleem is dat Configuration Manager een 32-bits toepassing is die wordt uitgevoerd op een 64-bits server. De standaardversie van cscript is de 64-bits versie en werkt over het algemeen prima met vbScript. In dit geval vereist de aanroep die wordt uitgevoerd echter de 32-bits versie waarvan cscript u de syswow64-map niet meer hebt.

Schermopname van de opdrachtprompt van de beheerder waarop cscript wordt uitgevoerd.

Wanneer de volgende pollingcyclus voor statusberichten plaatsvindt, worden alle statusberichten naar het beheerpunt verzonden.

In het bestand Statemessage.log ziet u dat de statusberichtgegevens worden opgehaald, opgemaakt in XML en vervolgens naar het beheerpunt worden verzonden. De informatie over het statusbericht moet er ongeveer uitzien als in het volgende voorbeeld:

<! [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-naam<>/NetBIOSName><CodePage>437</CodePage>
<SystemDefaultLCID>1033</SystemDefaultLCID></Machine></Identification><ReportDetails><ReportContent>State Message Data</ReportContent>
<Datum/datum< van 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/ReportBody></Report>
]LOG<![ LOG[CStateMsgManager::GetSignEncyptMode]LOG]!><time="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1820">
<! [LOG[Statusberichten doorgestuurd naar het beheerpunt]LOG]!><time="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1527">

Notitie

Dit voorbeeld wordt afgekapt tot één statusbericht vanwege de grootte van het XML-bestand.

Hoewel het Statemessage.log-bestand registreert dat de berichten naar het beheerpunt worden verzonden, worden gegevens niet daadwerkelijk naar het beheerpunt verplaatst. In het volgende voorbeeld ziet u dat CCMMessaging deze bewerking wordt uitgevoerd. Er is meer achter de schermen op dit moment. Het is echter voldoende om te weten dat CCMMessaging de gegevens naar het beheerpunt worden verzonden (in dit geval het MP_Relay onderdeel).

<! [LOG[OutgoingMessage(Queue='mp_mp_relayendpoint', ID={A9E7A07D-223D-4F5D-93D5-15AF5B72E05C}): geleverd om 'host_name' te hosten.]LOG]!>

Wanneer de gegevens binnenkomen voor verwerking MP_Relayop, worden deze verwerkt en vertaald naar de .smx bestandsindeling en vervolgens in de auth\statesys.box\incoming map geplaatst.

Inv-Relay-taak: berichttekst verwerken
Relay: FileType= SMX
Relay: Postvak UIT: C:\Program Files (x86)\Microsoft Configuration Manager\inboxes\auth\statesys.box\incoming
Relay: 0 bijlagen ontvangen
Relay: 0 van 0 bijlagen zijn verwerkt
Inv-Relay: taak is voltooid

In de auth\statesys.box\incoming map ziet u de .smx bestanden die worden verwerkt. Normaal gesproken ziet u ze hier niet. Maar als de bestanden in deze map blijven staan, moet u onderzoeken wat de berichten zijn en waarom ze niet worden verwerkt. Als u een .smx bestand vindt, kunt u het openen met behulp van een teksteditor zoals Kladblok om de details te bekijken. De opmaak van het bestand kan echter onleesbaar zijn, zoals in het volgende voorbeeld:

Schermopname van een voorbeeld van een SMX-bestand in Kladblok.

Als u de naam van het .smx bestand wijzigt door de .xml extensie toe te voegen, zodat het bestand file_name.smx.xml wordt genoemd en u dubbelklikt op de nieuwe bestandsnaam, wordt het XML-bestand geopend in Internet Explorer en is het veel gemakkelijker te lezen.

De volgende afbeelding is een voorbeeld van een XML-bestand dat is geopend in Internet Explorer. De details van het computer- en statusbericht zijn gemarkeerd. Het bevat de informatie die we eerder hebben besproken, gecombineerd met de unieke waarde voor statusbericht-id .

Notitie

Als u de naam van deze bestanden wijzigt, kopieert u ze eerst naar een andere map, zodat u geen invloed hebt op de map Statesys.box .

Schermopname van een voorbeeldbestand .smx.xml in Internet Explorer.

Ten slotte moeten de statusberichten in de database worden verwerkt. In het bestand Statesys.log ziet u dergelijke berichten die vergelijkbaar zijn met het volgende voorbeeld:

Nieuwe statusberichten gevonden die moeten worden verwerkt, thread wordt gestart
Thread "Thread verwerken statusbericht #0" id:5076 gestart
CMessageProcessor - Bovenliggende site 'site_name' gedetecteerd
CMessageProcessor - Verwerkingsbestand: mdlbp169. SMW
CMessageProcessor - Verwerkte 1 records met 0 ongeldige records.
CMessageProcessor : bestand mdlbp169 gerepliceerd. SMW" naar bovenliggende site site_name.
CMessageProcessor - Verwerkte 1 berichtbestanden in deze batch, met 0 ongeldige bestanden.
Thread 'Thread voor verwerking van statusberichten #0' id:5076 is normaal beëindigd

Het databaseverwerkingsonderdeel kan zichtbaar worden gemaakt door SQL-tracering in te schakelen, maar dit helpt niet veel. In plaats daarvan moeten we de SQL Profiler gebruiken. De profiler geeft ons een hint van wat er achter de schermen gebeurt, maar niet helemaal. Verschillende opgeslagen SQL-procedures zijn verantwoordelijk voor het verwerken van statusberichten. Bovendien slaan verschillende tabellen in de database de statusberichtengegevens op. De opgeslagen procedures die de verwerking van statusberichten uitvoeren, beginnen meestal met de naam spProcess. Er zijn veel van dergelijke procedures.

De siteserver houdt statusberichten bij wanneer ze binnenkomen, zodat deze eventuele ontbrekende berichten kunnen markeren en periodiek een hersynchronisatie kunnen aanvragen wanneer dat nodig is. Statusberichten zijn belangrijk. Je wilt niets missen.

Wanneer statusberichten binnenkomen, wordt de unieke id gelezen en opgeslagen in de database. Naarmate de verwerking zich blijft voordoen, worden de gegevens regelmatig bijgewerkt. Als er een hiaat wordt gedetecteerd, worden die gegevens gemarkeerd en opgeslagen als ontbrekende statusberichten in de SR_MissingMessageRanges tabel. Deze tabel is idealiter leeg. In productie ziet u echter mogelijk gegevens in de tabel. Deze tabel helpt statusberichten bij te houden waarvoor een hersynchronisatie is vereist.

Het sitebeheerbestand bevindt zich in de database. Als u de specifieke instellingen voor STATE_MESSAGE_SYSTEMwilt ophalen, voert u de volgende query uit op een primaire of CAS-site:

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

instellingen voor STATE_MESSAGE_SYSTEM

Naam Waarde1 Waarde2 Waarde3
Heartbeat msg-interval 60
Polling-interval voor Postvak IN 900
Grootte van segment van laadprogramma 256
Loaderthreads 4
Maximum aantal opgehaalde segmenten 100
Minimale ontbrekende berichtleeftijd 2880
Interval voor opnieuw synchroniseren van controle 15
Configuratie opnieuw proberen REG_SZ <Config><Retry PatternID="0" RetryQueue="0">7200,28800,86400</Retry></Config> 0

Notitie

  • Het interval voor opnieuw synchroniseren is ingesteld op 60 minuten. Dit is het schema voor het controleren van systemen waarvoor statusbericht opnieuw moet worden gesynchroniseerd.
  • Minimale ontbrekende berichtleeftijd is ingesteld op 2880. Dit is hoe lang een bericht moet ontbreken voordat een hersynchronisatie wordt aangevraagd.