Udostępnij za pośrednictwem


Opis komunikatów o stanie w Configuration Manager

W tym artykule opisano stan systemu obsługi komunikatów w Configuration Manager.

Oryginalna wersja produktu: Configuration Manager (bieżąca gałąź)
Oryginalny numer KB: 4459394

Omówienie komunikatów o stanie

Komunikaty stanu w Configuration Manager to mechanizm, który odzwierciedla warunek klienta w określonym momencie. Komunikaty o stanie pomagają natomiast administratorom śledzić przepływ pracy danych za pośrednictwem różnych składników Configuration Manager.

Przeglądarka komunikatów o stanie jest wbudowana bezpośrednio w konsolę, aby można było wyświetlać i śledzić komunikaty o stanie. Nie ma równorzędnej przeglądarki dla komunikatów o stanie. Wynik komunikatów o stanie jest widoczny w następujących elementach:

  • Raporty
  • różnych danych w konsoli, takich jak liczba systemów, które muszą zostać zaktualizowane
  • dzienniki klienta

Komunikaty o stanie zawierają zwięzłe informacje o warunkach na kliencie. System komunikatów o stanie jest używany przez określone składniki Configuration Manager, w tym:

  • aktualizacje oprogramowania
  • żądane zarządzanie konfiguracją
  • ochrona dostępu do sieci

Krytyczne dane aktualizacji oprogramowania opierają się na systemie komunikatów stanu w Configuration Manager. Zrozumienie komunikatów o stanie stanie stanie stanie się jeszcze ważniejsze w przyszłych wersjach Configuration Manager, ponieważ korzysta z niej więcej składników.

Na poniższym diagramie przedstawiono dobry opis działania systemu komunikatów o stanie.

Diagram przedstawia sposób działania systemu komunikatów o stanie.

Zielone pole reprezentuje system komunikatów o stanie. Składniki wewnątrz pola to składniki, które przesyłają informacje do systemu.

Po odebraniu komunikatów o stanie występują dwie rzeczy:

  1. Komunikaty o stanie są przechowywane w dostawcy instrumentacji zarządzania windows (WMI).
  2. System stanu zgarnia usługę WMI w 15-minutowym cyklu (domyślnie) dla wszystkich komunikatów o stanie, które nie zostały wysłane, a następnie przekazuje je do punktu zarządzania. Okres cyklu można zmienić.

Na diagramie element instalacji klienta jest wyświetlany oddzielnie, aby uzyskać przejrzystość. Podczas instalacji klienta punkt zarządzania znajduje się i jest przeznaczony dla komunikatów o stanie. Komunikaty o stanie instalacji klienta są przekazywane do rezerwowego punktu stanu (FSP) (jeśli jest skonfigurowany) w jednym z następujących warunków:

  • Punkt zarządzania nie jest osiągnięty.
  • Z jakiegoś powodu punkt zarządzania nie działa.

W przypadku wszystkich innych elementów ruch trafia bezpośrednio do punktu zarządzania.

Komunikaty o stanie, które docierają do punktu zarządzania, są przetwarzane do .smx plików przez składnik mp relay i umieszczane w folderze auth\statesys.box\incoming na serwerze lokacji. Następnie są one przetwarzane do bazy danych w celu ukończenia przepływu pracy.

Kopanie głębiej

Musimy upewnić się, że pełne rejestrowanie jest włączone dla:

  • klient
  • punkt zarządzania
  • składniki komunikatów o stanie na serwerze lokacji

Aby ustawić pełne lub debugowanie rejestrowania w Configuration Manager klienta lub punktu zarządzania, edytuj lub utwórz następujące wpisy rejestru:

Podklucz rejestru Nazwa DWORD Dane wartości
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CCM/Logging/@Global Loglevel 0
KEY_LOCAL_MACHINE/SOFTWARE /Microsoft/CCM/Logging/DebugLogging Włączone True

Na serwerze lokacji edytuj następujący wpis rejestru, aby włączyć pełne rejestrowanie, a następnie uruchom ponownie usługę SMS_Executive (lub składnik systemu stanu):

Podklucz rejestru Nazwa DWORD Dane wartości
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SMS/Components/SMS_STATE_SYSTEM Pełne rejestrowanie 1

Śledzenie poleceń SQL wymaga włączenia śledzenia SQL dla składników Configuration Manager. Ale niewiele przydatnych danych można uzyskać bezpośrednio z śledzenia. To prawda, nawet jeśli profiler jest włączony. Przeanalizujemy więc pliki Updatesdeployment.log i Statemessage.log na kliencie. Interpretując komunikaty o stanie w tych dziennikach, możemy uzyskać jasny obraz tego, co się dzieje w różnych krokach procesu.

Zanim przeanalizujemy przykłady kodu dziennika, musimy zrozumieć format komunikatu o stanie. Sam komunikat o stanie składa się z kilku części, w tym typu tematu i identyfikatora komunikatu o stanie. W niektórych lokalizacjach dzienników typ tematu wydaje się już interpretowany.

W tym samym dzienniku nie zawsze będzie widoczny typ tematu i identyfikator komunikatu o stanie . Jeden typ danych bez drugiego tak naprawdę nie pomaga określić, co jest potrzebne. Jednak nawet jeśli masz zarówno typ tematu , jak i identyfikator komunikatu o stanie, informacje nie są pomocne, chyba że można je zinterpretować.

Poniższy wykres może pomóc w interpretacji kombinacji i StateID uzyskaniu istotnych TopicType danych.

select * from v_StateNames  

Uwaga

Poniższy wykres zawiera kody typów tematów serii 300, 400 i 500.

Dane komunikatów o stanie

Typ tematu StateID StateName
300 0 Nieznany stan zgodności
300 1 Zgodny
300 2 Niezgodne
300 3 Wykryto konflikt
301 0 Nieznany stan wymuszania
301 1 Instalowanie aktualizacji
301 2 Oczekiwanie na ponowne uruchomienie
301 3 Oczekiwanie na ukończenie innej instalacji
301 4 Pomyślnie zainstalowano aktualizacje
301 5 Oczekiwanie na ponowne uruchomienie systemu
301 6 Nie można zainstalować aktualizacji
301 7 Pobieranie aktualizacji
301 8 Pobrane aktualizacje
301 9 Nie można pobrać aktualizacji
301 10 Oczekiwanie na okno obsługi przed zainstalowaniem
301 11 Oczekiwanie na zainicjowanie instalacji przez orkiestrator innej firmy
302 0 Nieznany stan oceny
302 1 Aktywowano ocenę
302 2 Ocena zakończyła się pomyślnie
302 3 Ocena nie powiodła się
400 0 Nieznany stan wykrywania
400 1 Niewymagane
400 2 Nie wykryto
400 3 Wykryte
401 0 Nieznany stan zgodności
401 1 Zgodny
401 2 Niezgodne
401 3 Wykryto konflikt
401 4 Error
401 5 Nie dotyczy
401 6 Nie wykryto
401 7 Wymuszane
402 0 Nieznany stan wymuszania
402 1 Rozpoczęto wymuszanie
402 2 Wymuszanie oczekujące na zawartość
402 3 Oczekiwanie na ukończenie innej instalacji
402 4 Oczekiwanie na okno obsługi przed zainstalowaniem
402 5 Przed zainstalowaniem wymagane jest ponowne uruchomienie
402 6 Błąd ogólny
402 7 Oczekująca instalacja
402 8 Instalowanie aktualizacji
402 9 Oczekiwanie na ponowne uruchomienie systemu
402 10 Pomyślnie zainstalowano aktualizację
402 11 Nie można zainstalować aktualizacji
402 12 Pobieranie aktualizacji
402 13 Pobrana aktualizacja
402 14 Nie można pobrać aktualizacji
500 0 Nieznany stan wykrywania
500 1 Aktualizacja nie jest wymagana
500 2 Aktualizacja jest wymagana
500 3 Aktualizacja jest zainstalowana
501 0 Nieznany stan skanowania
501 1 Skanowanie czeka na lokalizację wykazu
501 2 Skanowanie jest uruchomione
501 3 Ukończono skanowanie
501 4 Skanowanie oczekuje na ponowienie próby
501 5 Skanowanie nie powiodło się
501 6 Skanowanie zostało zakończone z błędami

Aby uzyskać więcej informacji, zobacz State messages in Configuration Manager (Komunikaty o stanie w Configuration Manager).

Poniższy przykład wyrównuje i porównuje pliki Updatesdeployment.log i Statemessage.log. Upewnij się, że dzienniki odwołują się do tego samego komunikatu o stanie, wyrównując ten sam TopicID (zielony tekst). Wyraźnie wskazuje, że dwa dzienniki odwołują się do tego samego komunikatu o stanie. Element TopicType jest wyświetlany w jasnoniebieskim tekście. Zwróć uwagę, że w jednym dzienniku może być wyświetlana rzeczywista liczba, którą można interpretować na wykresie danych komunikatów o stanie . Drugi może pokazywać wartość ogólną (już zinterpretowaną). Identyfikator komunikatu o stanie (StateId) jest wyświetlany w kolorze fioletowym.

Zrzut ekranu przedstawia szczegóły komunikatów dziennika.

TopicType Łącząc i State Message ID (StateId) z wykresu, można śledzić dokładnie, co się dzieje w dziennikach. W tym przykładzie te przykłady kodu zawierają następujące informacje:

  • Ocena aktualizacji
  • Wynik oceny
  • Pobierana aktualizacja
  • Instalowana aktualizacja
  • Oczekujące ponowne uruchomienie systemu

To tylko jeden z przykładów wysyłania komunikatów o stanie do systemu stanu.

Przepływ danych komunikatów o stanie

Na poniższej ilustracji przedstawiono rzeczywisty przykład sposobu, w jaki dane komunikatów stanu trafiają do punktu zarządzania i są przetwarzane do bazy danych.

W tym przykładzie użyto klienta testowego. Rozpoczyna się od wymuszenia na kliencie zeskrobania usługi WMI dla wszystkich informacji o komunikatach o stanie, a następnie wysłania tych informacji do punktu zarządzania w następnym cyklu sondowania.

W usłudze WMI komunikaty o stanie są przechowywane w root\ccm\statemsg przestrzeni nazw. W tej przestrzeni nazw istnieją dwie interesujące klasy: CCM_StateMsg_SerialNum i CCM_StateMsg.

Klasa CCM_StateMsg_SerialNum służy do rejestrowania ostatniego numeru seryjnego używanego dla komunikatu o stanie. Każdy komunikat o stanie ma unikatowy numer seryjny podobny do spisu sprzętu. W ten sposób serwer lokacji może śledzić, czy brakuje żadnych komunikatów o stanie z systemu. Jest to ważne, ponieważ brakujące komunikaty o stanie mogą powodować niekompletne lub niedokładne raportowanie stanu.

Zrzut ekranu przedstawiający klasę CCM_StateMsg_SerialNum.

Klasa CCM_StateMsg zawiera same komunikaty o stanie. W wystąpieniu klasy można znaleźć wszystkie zarejestrowane komunikaty o stanie.

Zrzut ekranu przedstawiający wystąpienie CCM_StateMsg.

Jeśli otworzysz jeden z tych komunikatów, znajdziesz szczegóły komunikatu o stanie i niektóre dane, które zostały wcześniej omówione, jak pokazano w poniższym przykładzie.

Zrzut ekranu przedstawia szczegóły komunikatu o stanie.

Możemy ponownie skierować dane do punktu zarządzania i śledzić ich postęp przy użyciu następujących skryptów ponownej synchronizacji.

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

Ten skrypt można znaleźć w internecie w różnych lokalizacjach. Używa zestawu SDK Configuration Manager, aby spowodować, że klient ponownie wysyła swoje dane do punktu zarządzania.

Zazwyczaj skrypt Języka Visual Basic (VBScript) jest uruchamiany przy użyciu polecenia cscript. Zwróć uwagę, że skrypt może zakończyć się niepowodzeniem, jeśli spróbujesz uruchomić go samodzielnie. Problem polega na tym, że Configuration Manager to aplikacja 32-bitowa działająca na serwerze 64-bitowym. Domyślna wersja cscript to wersja 64-bitowa i ogólnie działa prawidłowo z dowolnym językiem VBScript. Jednak w tym przypadku wywołanie, które jest wykonywane, wymaga 32-bitowej cscript wersji, która musi zabraknąć folderu syswow64.

Zrzut ekranu przedstawiający wiersz polecenia administratora z uruchomionym skryptem cscript.

Po zakończeniu następnego cyklu sondowania komunikatów o stanie wszystkie komunikaty o stanie są wysyłane do punktu zarządzania.

W pliku Statemessage.log widać, że informacje o komunikatach o stanie są ściągane, sformatowane w formacie XML, a następnie wysyłane do punktu zarządzania. Informacje o komunikatach o stanie powinny wyglądać podobnie do następującego przykładu:

<! [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><Nazwa< NetBIOSName>/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-24a61-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[Pomyślnie przekazano komunikaty o stanie do punktu zarządzania]LOG]!><time="time" date="date" component="StateMessage" context="" type="1" thread="3592" file="statemsg.cpp:1527">

Uwaga

Ten przykład jest obcinany do pojedynczego komunikatu o stanie ze względu na rozmiar pliku XML.

Mimo że plik Statemessage.log rejestruje, że komunikaty są wysyłane do punktu zarządzania, system komunikatów stanu w rzeczywistości nie przenosi danych do punktu zarządzania. W poniższym przykładzie widać, że CCMMessaging wykonuje tę operację. W tym momencie za kulisami dzieje się więcej. Wystarczy jednak wiedzieć, że CCMMessaging dane są wysyłane do punktu zarządzania (w tym przypadku składnika MP_Relay ).

<! [LOG[OutgoingMessage(Queue='mp_mp_relayendpoint', ID={A9E7A07D-223D-4F5D-93D5-15AF5B72E05C}): Pomyślnie dostarczono hosta "host_name".] DZIENNIK]!>

Po nadejściu danych do przetwarzania w programie MP_Relaysą przetwarzane i tłumaczone na .smx format pliku, a następnie umieszczane w folderze auth\statesys.box\incoming .

zadanie Inv-Relay: przetwarzanie treści komunikatu
Przekaźnik: FileType= SMX
Relay: Outbox dir: C:\Program Files (x86)\Microsoft Configuration Manager\inboxes\auth\statesys.box\incoming
Przekaźnik: Odebrano 0 załączników
Przekaźnik: 0 z 0 załączników pomyślnie przetworzonych
Inv-Relay: zadanie zostało ukończone pomyślnie

W folderze auth\statesys.box\incoming można zobaczyć .smx przetwarzane pliki. Zazwyczaj nie będą one widoczne w tym miejscu. Jeśli jednak pliki pozostaną w tym folderze, należy zbadać, czym są komunikaty i dlaczego nie są przetwarzane. Jeśli znajdziesz .smx plik, możesz go otworzyć za pomocą edytora tekstów, takiego jak Notatnik, aby wyświetlić szczegóły. Jednak formatowanie pliku może być nieczytelne, jak w poniższym przykładzie:

Zrzut ekranu przedstawiający przykładowy plik SMX w Notatniku.

Jeśli zmienisz nazwę .smx pliku, dodając .xml rozszerzenie tak, aby plik miał nazwę file_name.smx.xml, a następnie dwukrotnie klikniesz nową nazwę pliku, plik XML zostanie otwarty w programie Internet Explorer i będzie znacznie łatwiejszy do odczytania.

Poniższy obraz jest przykładem pliku XML otwartego w programie Internet Explorer. Szczegóły komputera i komunikat o stanie są wyróżnione. Zawiera informacje omówione wcześniej w połączeniu z unikatową wartością identyfikatora komunikatu o stanie .

Uwaga

Jeśli zmienisz nazwę tych plików, najpierw skopiuj je do innego folderu, aby nie wpływać na folder Statesys.box .

Zrzut ekranu przedstawiający przykładowy plik smx.xml w programie Internet Explorer.

Na koniec komunikaty o stanie muszą zostać przetworzone do bazy danych. W pliku Statesys.log takie komunikaty są podobne do następujących:

Znaleziono nowe komunikaty o stanie do przetworzenia, rozpoczynając przetwarzanie wątku
Wątek "State Message Processing Thread #0" id:5076 started
CMessageProcessor — wykryta witryna nadrzędna "site_name"
CMessageProcessor — plik przetwarzania: mdlbp169. SMW
CMessageProcessor — przetworzono 1 rekordy z 0 nieprawidłowymi rekordami.
CMessageProcessor — pomyślnie zreplikowaliśmy plik "mdlbp169. SMW" do site_name lokacji nadrzędnej.
CMessageProcessor — przetworzono 1 pliki komunikatów w tej partii z 0 nieprawidłowymi plikami.
Wątek "Wątek przetwarzania komunikatów o stanie #0" o identyfikatorze:5076 został normalnie zakończony

Składnik przetwarzania bazy danych może być widoczny, włączając śledzenie SQL, ale nie pomaga to zbytnio. Zamiast tego należy użyć profilera SQL. Profiler daje nam wskazówkę, co dzieje się za kulisami, ale nie do końca. Kilka procedur składowanych SQL jest odpowiedzialnych za przetwarzanie komunikatów o stanie. Poza tym kilka tabel w bazie danych przechowuje dane komunikatów o stanie. Procedury składowane, które wykonują przetwarzanie komunikatów o stanie, zwykle zaczynają się od nazwy spProcess. Istnieje wiele takich procedur.

Serwer lokacji śledzi komunikaty o stanie w miarę ich pojawiania się, dzięki czemu może flagować wszystkie brakujące komunikaty i okresowo żądać ponownej synchronizacji w razie potrzeby. Komunikaty o stanie są ważne. Nie chcesz przegapić żadnego.

Po nadejściu komunikatów o stanie unikatowy identyfikator jest odczytywany i przechowywany w bazie danych. W miarę kontynuowania przetwarzania dane są regularnie aktualizowane. W przypadku wykrycia luki te dane są oflagowane i przechowywane jako brakujące komunikaty o stanie w SR_MissingMessageRanges tabeli. Najlepiej, aby ta tabela była pusta. Jednak w środowisku produkcyjnym dane mogą być widoczne w tabeli. Ta tabela ułatwia śledzenie komunikatów o stanie, które wymagają ponownej synchronizacji.

Plik kontroli lokacji znajduje się w bazie danych. Aby uzyskać określone ustawienia dla STATE_MESSAGE_SYSTEMprogramu , uruchom następujące zapytanie w lokacji podstawowej lub 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))

ustawienia STATE_MESSAGE_SYSTEM

Name (Nazwa) Wartość1 Wartość 2 Wartość 3
Interwał msg pulsu 60
Interwał sondowania skrzynki odbiorczej 900
Rozmiar fragmentu modułu ładującego 256
Wątki modułu ładującego 4
Maksymalna liczba pobranych fragmentów 100
Minimalny brakujący wiek komunikatu 2880
Interwał sprawdzania ponownej synchronizacji 15
Ponów próbę konfiguracji REG_SZ <Config><Retry PatternID="0" RetryQueue="0">7200,28800,86400</Retry></Config> 0

Uwaga

  • Interwał sprawdzania ponownej synchronizacji jest ustawiony na 60 minut. Jest to harmonogram sprawdzania systemów, które wymagają ponownej synchronizacji komunikatów o stanie.
  • Minimalna liczba brakujących czasów komunikatów jest ustawiona na wartość 2880. Tak długo musi brakować komunikatu przed żądaniem ponownej synchronizacji.