Protokoly správy aktualizací dotazů
Důležité
Služba Automation Update Management se 31. srpna 2024 vyřadila z provozu a doporučujeme používat Azure Update Manager. Postupujte podle pokynů pro migraci ze služby Automation Update Management do Azure Update Manageru.
Kromě podrobností, které jsou k dispozici během nasazování řešení Update Management, můžete prohledávat protokoly uložené v pracovním prostoru služby Log Analytics. Pokud chcete prohledat protokoly z účtu Automation, vyberte Update Management a otevřete pracovní prostor služby Log Analytics přidružený k vašemu nasazení.
Dotazy na protokoly můžete také přizpůsobit nebo je používat z různých klientů. Viz dokumentace k rozhraní API služby Log Analytics pro vyhledávání.
Aktualizace záznamů dotazu
Update Management shromažďuje záznamy pro virtuální počítače s Windows a Linuxem a datové typy, které se zobrazují ve výsledcích hledání v protokolu. Tyto záznamy jsou popsané v následujících částech.
Záznam aktualizace dotazu
Vytvoří se záznam s typem Update
, který představuje dostupné aktualizace a stav instalace počítače. Tyto záznamy mají vlastnosti v následující tabulce:
Vlastnost | Popis |
---|---|
TenantId | Jedinečný identifikátor představující instanci Microsoft Entra ID vaší organizace |
SourceSystem | Zdrojový systém záznamu. Hodnota je OperationsManager . |
TimeGenerated | Datum a čas vytvoření záznamu |
SourceComputerId | Jedinečný identifikátor představující zdrojový počítač. |
Nadpis | Název aktualizace. |
Klasifikace | Klasifikace schválení. Hodnota je Updates. |
PublishedDate (UTC) | Datum, kdy je aktualizace připravená ke stažení a instalaci z služba Windows Update. |
Počítač | Plně kvalifikovaný název domény počítače pro vytváření sestav. |
UpdateState | Aktuální stav aktualizace. |
Produkt | Produkty, pro které je aktualizace použitelná. |
OSType | Typ operačního systému. Hodnoty jsou Windows nebo Linux. |
ProductVersion | Verze aktualizace. |
Arch produktu | Použitelná architektura počítačů |
CVENumbers | Běžná ohrožení zabezpečení a číslo ohrožení zabezpečení |
BulletinUrl | Adresa URL bulletinu |
ID bulletinu | Číslo ID bulletinu. |
PackageRepository | Informace o úložišti balíčku |
PackageSeverity | Závažnost aktualizace |
OSName | Typ operačního systému. Hodnoty jsou Windows nebo Linux. |
OSVersion | Verze operačního systému. |
OSFullName | Název operačního systému. |
SubscriptionId | Jedinečný identifikátor předplatného Azure. |
ResourceGroup | Název skupiny prostředků, do které prostředek patří. |
ResourceProvider | Poskytovatel prostředků. |
Prostředek | Název prostředku. |
ResourceId | Jedinečný identifikátor prostředku přidruženého k záznamu |
ResourceType | Typ zdroje. |
ComputerEnvironment | Životní prostředí. Možné hodnoty jsou Azure nebo Jiné než Azure. |
VMUUID | Jedinečný identifikátor virtuálního počítače. |
MG | Jedinečný identifikátor skupiny pro správu nebo pracovního prostoru služby Log Analytics. |
ManagementGroupName | Název skupiny pro správu Operations Manageru nebo pracovního prostoru služby Log Analytics |
MSRCSeverity | Hodnocení závažnosti ohrožení zabezpečení Hodnoty jsou: Kritické Důležité Střední Nízká |
KBID | ID článku znalostní báze pro aktualizaci Windows |
UpdateID | Jedinečný identifikátor aktualizace softwaru. |
RevisionNumber | Číslo revize konkrétní revize aktualizace. |
Volitelné | Hodnota True, pokud je záznam nepovinný, nebo false jinak. |
RebootBehavior | Chování při restartování po instalaci nebo odinstalaci aktualizace. |
MSRCBulletinID | Číslo ID bulletinu zabezpečení. |
Schválený | Hodnota True, pokud je záznam schválen, nebo false jinak. |
ApprovalSource | Platí jenom pro operační systém Windows. Zdroj schválení záznamu Hodnota je Microsoft Update. |
InstallTimePredictionSeconds | |
InstallTimeDeviationRangeSeconds | |
InstallTimeAvailable | |
Typ | Typ záznamu. Hodnota je Update. |
Záznam stavu nasazení aktualizace dotazu
Vytvoří se záznam s typem UpdateRunProgress
, který poskytuje stav nasazení aktualizací naplánovaného nasazení podle počítače. Tyto záznamy mají vlastnosti v následující tabulce:
Vlastnost | Popis |
---|---|
TenantId | Jedinečný identifikátor představující instanci Microsoft Entra ID vaší organizace |
SourceSystem | Zdrojový systém záznamu. Hodnota je OperationsManager . |
TimeGenerated | Datum a čas vytvoření záznamu |
MG | Jedinečný identifikátor skupiny pro správu nebo pracovního prostoru služby Log Analytics. |
ManagementGroupName | Název skupiny pro správu Operations Manageru nebo pracovního prostoru služby Log Analytics |
SourceComputerId | Jedinečný identifikátor představující zdrojový počítač. |
KBID | ID článku znalostní báze pro aktualizaci Windows |
UpdateId | Jedinečný identifikátor aktualizace softwaru. |
SucceededOnRetry | Hodnota označující, jestli se spuštění aktualizace při prvním pokusu nezdařilo a aktuální operace je pokus o opakování. |
ErrorResult | služba Windows Update kód chyby vygenerovaný, pokud se aktualizace nepodaří nainstalovat. |
UpdateRunName | Název plánu aktualizace |
Stav instalace | Možné stavy instalace aktualizace v klientském počítači,NotStarted – úloha se ještě neaktivovala.Failed – úloha byla spuštěna, ale selhala s výjimkou.InProgress - probíhá úloha.MaintenanceWindowExceeded - pokud se zbylo spuštění, ale dosáhl intervalu časového období údržby.Succeeded - úloha byla úspěšná.Install Failed – aktualizace se nepovedla úspěšně nainstalovat.NotIncluded – odpovídající klasifikace aktualizace se neshoduje s položkami zákazníka v seznamu vstupní klasifikace.Excluded – uživatel zadá do vyloučeného seznamu KBID. Při opravách se kód KBID v vyloučených názvech shoduje s ID aktualizace KB zjištěné systémem, je označen jako vyloučený. |
Počítač | Plně kvalifikovaný název domény počítače pro vytváření sestav. |
Nadpis | Název aktualizace. |
Produkt | Produkty, pro které je aktualizace použitelná. |
OSType | Typ operačního systému. Hodnoty jsou Windows nebo Linux. |
StartTime (UTC) | Čas, kdy je naplánovaná instalace aktualizace. Tato vlastnost se aktuálně nepoužívá. Viz TimeGenerated. |
EndTime (UTC) | Čas ukončení procesu synchronizace. Tato vlastnost se aktuálně nepoužívá. Viz TimeGenerated. |
CorrelationId | Jedinečný identifikátor spuštění úlohy runbooku pro aktualizaci. |
SubscriptionId | Jedinečný identifikátor předplatného Azure. |
ResourceGroup | Název skupiny prostředků, do které prostředek patří. |
ResourceProvider | Poskytovatel prostředků. |
Prostředek | Název prostředku. |
ResourceId | Jedinečný identifikátor prostředku přidruženého k záznamu |
ResourceType | Typ prostředku. |
ComputerEnvironment | Životní prostředí. Hodnoty jsou Azure nebo jiné než Azure. |
VMUUID | Jedinečný identifikátor virtuálního počítače. |
Typ | Typ aktualizace: Hodnota je UpdateRunProgress . |
_ResourceId | Jedinečný identifikátor prostředku přidruženého k záznamu |
Záznam souhrnu aktualizace dotazu
Vytvoří se záznam s typem UpdateSummary
, který poskytuje souhrn aktualizací podle počítače. Tyto záznamy mají vlastnosti v následující tabulce:
Vlastnost | Popis |
---|---|
TenantId | Jedinečný identifikátor představující instanci Microsoft Entra ID vaší organizace |
SourceSystem | Zdrojový systém záznamu. Hodnota je OpsManager . |
TimeGenerated | Datum a čas vytvoření záznamu |
MG | Jedinečný identifikátor skupiny pro správu nebo pracovního prostoru služby Log Analytics. |
ManagementGroupName | Název skupiny pro správu Operations Manageru nebo pracovního prostoru služby Log Analytics |
SourceComputerId | Jedinečný identifikátor virtuálního počítače. |
LastUpdateApplied (UTC) | |
OldestMissingSecurityUpdateInDays | Celkový počet dnů nejstarší aktualizace se zjistil jako použitelný, který nebyl nainstalován. |
OldestMissingSecurityUpdateBucket | Specifikátor nejstaršího chybějícího kontejneru zabezpečení Hodnoty jsou: Poslední hodnota, pokud je hodnota menší než 30 dnů před 30 dny před 60 dny před 90 dny před 120 dny před 150 dny před 180 dny Starší, pokud je hodnota větší než 180 dnů. |
WindowsUpdateSetting | Stav agenta služba Windows Update Možné hodnoty jsou:Scheduled installation Notify before installation Error returned from unhealthy WUA agent |
WindowsUpdateAgentVersion | Verze agenta služba Windows Update |
WSUSServer | Chyby, pokud má agent služba Windows Update problém, který vám pomůže s řešením potíží. |
Počítač | Plně kvalifikovaný název domény počítače pro vytváření sestav. |
OsVersion | Verze operačního systému. |
NETRuntimeVersion | Verze rozhraní .NET Framework nainstalovaná v počítači s Windows. |
CriticalUpdatesMissing | Počet platných důležitých aktualizací, které chybí |
SecurityUpdatesMissing | Počet chybějících aktualizací zabezpečení, které jsou použitelné. |
OtherUpdatesMissing | Počet nalezených aktualizací chybí. |
TotalUpdatesMissing | Celkový počet chybějících aktualizací, které jsou použitelné. |
RestartPending | Hodnota True, pokud restartování čeká na vyřízení, nebo false jinak. |
SubscriptionId | Jedinečný identifikátor předplatného Azure. |
ResourceGroup | Název skupiny prostředků obsahující prostředek |
ResourceProvider | Poskytovatel prostředků. |
Prostředek | Název prostředku záznamu |
ResourceId | Jedinečný identifikátor prostředku přidruženého k záznamu |
ResourceType | Typ prostředku. |
ComputerEnvironment | Životní prostředí. Hodnoty jsou Azure nebo jiné než Azure. |
VMUUID | Jedinečný identifikátor virtuálního počítače. |
Typ | Typ záznamu. Hodnota je UpdateSummary . |
_ResourceId | Jedinečný identifikátor prostředku přidruženého k záznamu |
Vzorové dotazy
Následující části obsahují ukázkové dotazy na protokoly pro záznamy aktualizací, které se shromažďují pro Řešení Update Management.
Ověřte, že jsou pro Řešení Update Management povolené počítače mimo Azure.
Pokud chcete ověřit, že přímo připojené počítače komunikují s protokoly služby Azure Monitor, spusťte jedno z následujících prohledávání protokolů.
Linux
Heartbeat
| where OSType == "Linux" | summarize arg_max(TimeGenerated, *) by SourceComputerId | top 500000 by Computer asc | render table
Windows
Heartbeat
| where OSType == "Windows" | summarize arg_max(TimeGenerated, *) by SourceComputerId | top 500000 by Computer asc | render table
Na počítači s Windows můžete zkontrolovat následující informace a ověřit připojení agenta k protokolům služby Azure Monitor:
V Ovládací panely otevřete microsoft Monitoring Agent. Na kartě Azure Log Analytics zobrazí agent následující zprávu: Agent Microsoft Monitoring Agent se úspěšně připojil ke službě Log Analytics.
Otevřete protokol událostí systému Windows. Přejděte do protokolů aplikací a služeb\Operations Manager a vyhledejte ID události 3000 a ID události 5002 ze zdrojového konektoru služby. Tyto události znamenají, že se počítač zaregistroval do pracovního prostoru služby Log Analytics a přijímá konfiguraci.
Pokud agent nemůže komunikovat s protokoly služby Azure Monitor a je nakonfigurovaný tak, aby komunikoval s internetem přes bránu firewall nebo proxy server, ověřte, že je brána firewall nebo proxy server správně nakonfigurovaná. Informace o tom, jak ověřit, jestli je brána firewall nebo proxy server správně nakonfigurovaná, najdete v tématu Konfigurace sítě pro agenta Windows nebo konfigurace sítě pro agenta s Linuxem.
Poznámka:
Pokud jsou vaše systémy Linux nakonfigurované tak, aby komunikovaly s proxy serverem nebo bránou Log Analytics a povolujete Update Management, aktualizujte proxy.conf
oprávnění k udělení oprávnění ke čtení skupiny omiuser v souboru pomocí následujících příkazů:
sudo chown omsagent:omiusers /etc/opt/microsoft/omsagent/proxy.conf
sudo chmod 644 /etc/opt/microsoft/omsagent/proxy.conf
Nově přidaní agenti Linuxu zobrazují stav Aktualizace po provedení posouzení. Tento proces může trvat až 6 hodin.
Pokud chcete ověřit, že skupina pro správu Operations Manageru komunikuje s protokoly služby Azure Monitor, přečtěte si téma Ověření integrace Operations Manageru s protokoly služby Azure Monitor.
Dotazy na posouzení jednotlivých virtuálních počítačů Azure (Windows)
Hodnotu VMUUID nahraďte identifikátorem GUID virtuálního počítače virtuálního počítače, který dotazujete. Id VMUUID, které by se mělo použít, najdete spuštěním následujícího dotazu v protokolech služby Azure Monitor: Update | where Computer == "<machine name>" | summarize by Computer, VMUUID
Souhrn chybějících aktualizací
Update
| where TimeGenerated>ago(14h) and OSType!="Linux" and (Optional==false or Classification has "Critical" or Classification has "Security") and VMUUID=~"b08d5afa-1471-4b52-bd95-a44fea6e4ca8"
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, Approved) by Computer, SourceComputerId, UpdateID
| where UpdateState=~"Needed" and Approved!=false
| summarize by UpdateID, Classification
| summarize allUpdatesCount=count(), criticalUpdatesCount=countif(Classification has "Critical"), securityUpdatesCount=countif(Classification has "Security"), otherUpdatesCount=countif(Classification !has "Critical" and Classification !has "Security")
Chybějící seznam aktualizací
Update
| where TimeGenerated>ago(14h) and OSType!="Linux" and (Optional==false or Classification has "Critical" or Classification has "Security") and VMUUID=~"8bf1ccc6-b6d3-4a0b-a643-23f346dfdf82"
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, Title, KBID, PublishedDate, Approved) by Computer, SourceComputerId, UpdateID
| where UpdateState=~"Needed" and Approved!=false
| project-away UpdateState, Approved, TimeGenerated
| summarize computersCount=dcount(SourceComputerId, 2), displayName=any(Title), publishedDate=min(PublishedDate), ClassificationWeight=max(iff(Classification has "Critical", 4, iff(Classification has "Security", 2, 1))) by id=strcat(UpdateID, "_", KBID), classification=Classification, InformationId=strcat("KB", KBID), InformationUrl=iff(isnotempty(KBID), strcat("https://support.microsoft.com/kb/", KBID), ""), osType=2
| sort by ClassificationWeight desc, computersCount desc, displayName asc
| extend informationLink=(iff(isnotempty(InformationId) and isnotempty(InformationUrl), toobject(strcat('{ "uri": "', InformationUrl, '", "text": "', InformationId, '", "target": "blank" }')), toobject('')))
| project-away ClassificationWeight, InformationId, InformationUrl
Dotazy na posouzení jednotlivých virtuálních počítačů Azure (Linux)
U některých distribucí Linuxu dochází k neshodě endianness s hodnotou VMUUID, která pochází z Azure Resource Manageru a co je uložené v protokolech služby Azure Monitor. Následující dotaz zkontroluje shodu u obou endianness. Nahraďte hodnoty VMUUID velkým endianem a malým endianem identifikátoru GUID, aby se výsledky správně vrátily. Id VMUUID, které by se mělo použít, najdete spuštěním následujícího dotazu v protokolech služby Azure Monitor: Update | where Computer == "<machine name>" | summarize by Computer, VMUUID
Souhrn chybějících aktualizací
Update
| where TimeGenerated>ago(5h) and OSType=="Linux" and (VMUUID=~"625686a0-6d08-4810-aae9-a089e68d4911" or VMUUID=~"a0865662-086d-1048-aae9-a089e68d4911")
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification) by Computer, SourceComputerId, Product, ProductArch
| where UpdateState=~"Needed"
| summarize by Product, ProductArch, Classification
| summarize allUpdatesCount=count(), criticalUpdatesCount=countif(Classification has "Critical"), securityUpdatesCount=countif(Classification has "Security"), otherUpdatesCount=countif(Classification !has "Critical" and Classification !has "Security")
Chybějící seznam aktualizací
Update
| where TimeGenerated>ago(5h) and OSType=="Linux" and (VMUUID=~"625686a0-6d08-4810-aae9-a089e68d4911" or VMUUID=~"a0865662-086d-1048-aae9-a089e68d4911")
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, BulletinUrl, BulletinID) by Computer, SourceComputerId, Product, ProductArch
| where UpdateState=~"Needed"
| project-away UpdateState, TimeGenerated
| summarize computersCount=dcount(SourceComputerId, 2), ClassificationWeight=max(iff(Classification has "Critical", 4, iff(Classification has "Security", 2, 1))) by id=strcat(Product, "_", ProductArch), displayName=Product, productArch=ProductArch, classification=Classification, InformationId=BulletinID, InformationUrl=tostring(split(BulletinUrl, ";", 0)[0]), osType=1
| sort by ClassificationWeight desc, computersCount desc, displayName asc
| extend informationLink=(iff(isnotempty(InformationId) and isnotempty(InformationUrl), toobject(strcat('{ "uri": "', InformationUrl, '", "text": "', InformationId, '", "target": "blank" }')), toobject('')))
| project-away ClassificationWeight, InformationId, InformationUrl
Dotazy na posouzení více virtuálních počítačů
Souhrn počítačů
Heartbeat
| where TimeGenerated>ago(12h) and OSType=~"Windows" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId
| join kind=leftouter
(
Update
| where TimeGenerated>ago(14h) and OSType!="Linux"
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Approved, Optional, Classification) by SourceComputerId, UpdateID
| distinct SourceComputerId, Classification, UpdateState, Approved, Optional
| summarize WorstMissingUpdateSeverity=max(iff(UpdateState=~"Needed" and (Optional==false or Classification has "Critical" or Classification has "Security") and Approved!=false, iff(Classification has "Critical", 4, iff(Classification has "Security", 2, 1)), 0)) by SourceComputerId
)
on SourceComputerId
| extend WorstMissingUpdateSeverity=coalesce(WorstMissingUpdateSeverity, -1)
| summarize computersBySeverity=count() by WorstMissingUpdateSeverity
| union (Heartbeat
| where TimeGenerated>ago(12h) and OSType=="Linux" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId
| join kind=leftouter
(
Update
| where TimeGenerated>ago(5h) and OSType=="Linux"
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification) by SourceComputerId, Product, ProductArch
| distinct SourceComputerId, Classification, UpdateState
| summarize WorstMissingUpdateSeverity=max(iff(UpdateState=~"Needed", iff(Classification has "Critical", 4, iff(Classification has "Security", 2, 1)), 0)) by SourceComputerId
)
on SourceComputerId
| extend WorstMissingUpdateSeverity=coalesce(WorstMissingUpdateSeverity, -1)
| summarize computersBySeverity=count() by WorstMissingUpdateSeverity)
| summarize assessedComputersCount=sumif(computersBySeverity, WorstMissingUpdateSeverity>-1), notAssessedComputersCount=sumif(computersBySeverity, WorstMissingUpdateSeverity==-1), computersNeedCriticalUpdatesCount=sumif(computersBySeverity, WorstMissingUpdateSeverity==4), computersNeedSecurityUpdatesCount=sumif(computersBySeverity, WorstMissingUpdateSeverity==2), computersNeedOtherUpdatesCount=sumif(computersBySeverity, WorstMissingUpdateSeverity==1), upToDateComputersCount=sumif(computersBySeverity, WorstMissingUpdateSeverity==0)
| summarize assessedComputersCount=sum(assessedComputersCount), computersNeedCriticalUpdatesCount=sum(computersNeedCriticalUpdatesCount), computersNeedSecurityUpdatesCount=sum(computersNeedSecurityUpdatesCount), computersNeedOtherUpdatesCount=sum(computersNeedOtherUpdatesCount), upToDateComputersCount=sum(upToDateComputersCount), notAssessedComputersCount=sum(notAssessedComputersCount)
| extend allComputersCount=assessedComputersCount+notAssessedComputersCount
Souhrn chybějících aktualizací
Update
| where TimeGenerated>ago(5h) and OSType=="Linux" and SourceComputerId in ((Heartbeat
| where TimeGenerated>ago(12h) and OSType=="Linux" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId))
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification) by Computer, SourceComputerId, Product, ProductArch
| where UpdateState=~"Needed"
| summarize by Product, ProductArch, Classification
| union (Update
| where TimeGenerated>ago(14h) and OSType!="Linux" and (Optional==false or Classification has "Critical" or Classification has "Security") and SourceComputerId in ((Heartbeat
| where TimeGenerated>ago(12h) and OSType=~"Windows" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId))
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, Approved) by Computer, SourceComputerId, UpdateID
| where UpdateState=~"Needed" and Approved!=false
| summarize by UpdateID, Classification )
| summarize allUpdatesCount=count(), criticalUpdatesCount=countif(Classification has "Critical"), securityUpdatesCount=countif(Classification has "Security"), otherUpdatesCount=countif(Classification !has "Critical" and Classification !has "Security")
Seznam počítačů
Heartbeat
| where TimeGenerated>ago(12h) and OSType=="Linux" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions, Computer, ResourceId, ComputerEnvironment, VMUUID) by SourceComputerId
| where Solutions has "updates"
| extend vmuuId=VMUUID, azureResourceId=ResourceId, osType=1, environment=iff(ComputerEnvironment=~"Azure", 1, 2), scopedToUpdatesSolution=true, lastUpdateAgentSeenTime=""
| join kind=leftouter
(
Update
| where TimeGenerated>ago(5h) and OSType=="Linux" and SourceComputerId in ((Heartbeat
| where TimeGenerated>ago(12h) and OSType=="Linux" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId))
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, Product, Computer, ComputerEnvironment) by SourceComputerId, Product, ProductArch
| summarize Computer=any(Computer), ComputerEnvironment=any(ComputerEnvironment), missingCriticalUpdatesCount=countif(Classification has "Critical" and UpdateState=~"Needed"), missingSecurityUpdatesCount=countif(Classification has "Security" and UpdateState=~"Needed"), missingOtherUpdatesCount=countif(Classification !has "Critical" and Classification !has "Security" and UpdateState=~"Needed"), lastAssessedTime=max(TimeGenerated), lastUpdateAgentSeenTime="" by SourceComputerId
| extend compliance=iff(missingCriticalUpdatesCount > 0 or missingSecurityUpdatesCount > 0, 2, 1)
| extend ComplianceOrder=iff(missingCriticalUpdatesCount > 0 or missingSecurityUpdatesCount > 0 or missingOtherUpdatesCount > 0, 1, 3)
)
on SourceComputerId
| project id=SourceComputerId, displayName=Computer, sourceComputerId=SourceComputerId, scopedToUpdatesSolution=true, missingCriticalUpdatesCount=coalesce(missingCriticalUpdatesCount, -1), missingSecurityUpdatesCount=coalesce(missingSecurityUpdatesCount, -1), missingOtherUpdatesCount=coalesce(missingOtherUpdatesCount, -1), compliance=coalesce(compliance, 4), lastAssessedTime, lastUpdateAgentSeenTime, osType=1, environment=iff(ComputerEnvironment=~"Azure", 1, 2), ComplianceOrder=coalesce(ComplianceOrder, 2)
| union(Heartbeat
| where TimeGenerated>ago(12h) and OSType=~"Windows" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions, Computer, ResourceId, ComputerEnvironment, VMUUID) by SourceComputerId
| where Solutions has "updates"
| extend vmuuId=VMUUID, azureResourceId=ResourceId, osType=2, environment=iff(ComputerEnvironment=~"Azure", 1, 2), scopedToUpdatesSolution=true, lastUpdateAgentSeenTime=""
| join kind=leftouter
(
Update
| where TimeGenerated>ago(14h) and OSType!="Linux" and SourceComputerId in ((Heartbeat
| where TimeGenerated>ago(12h) and OSType=~"Windows" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId))
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, Title, Optional, Approved, Computer, ComputerEnvironment) by Computer, SourceComputerId, UpdateID
| summarize Computer=any(Computer), ComputerEnvironment=any(ComputerEnvironment), missingCriticalUpdatesCount=countif(Classification has "Critical" and UpdateState=~"Needed" and Approved!=false), missingSecurityUpdatesCount=countif(Classification has "Security" and UpdateState=~"Needed" and Approved!=false), missingOtherUpdatesCount=countif(Classification !has "Critical" and Classification !has "Security" and UpdateState=~"Needed" and Optional==false and Approved!=false), lastAssessedTime=max(TimeGenerated), lastUpdateAgentSeenTime="" by SourceComputerId
| extend compliance=iff(missingCriticalUpdatesCount > 0 or missingSecurityUpdatesCount > 0, 2, 1)
| extend ComplianceOrder=iff(missingCriticalUpdatesCount > 0 or missingSecurityUpdatesCount > 0 or missingOtherUpdatesCount > 0, 1, 3)
)
on SourceComputerId
| project id=SourceComputerId, displayName=Computer, sourceComputerId=SourceComputerId, scopedToUpdatesSolution=true, missingCriticalUpdatesCount=coalesce(missingCriticalUpdatesCount, -1), missingSecurityUpdatesCount=coalesce(missingSecurityUpdatesCount, -1), missingOtherUpdatesCount=coalesce(missingOtherUpdatesCount, -1), compliance=coalesce(compliance, 4), lastAssessedTime, lastUpdateAgentSeenTime, osType=2, environment=iff(ComputerEnvironment=~"Azure", 1, 2), ComplianceOrder=coalesce(ComplianceOrder, 2) )
| order by ComplianceOrder asc, missingCriticalUpdatesCount desc, missingSecurityUpdatesCount desc, missingOtherUpdatesCount desc, displayName asc
| project-away ComplianceOrder
Chybějící seznam aktualizací
Update
| where TimeGenerated>ago(5h) and OSType=="Linux" and SourceComputerId in ((Heartbeat
| where TimeGenerated>ago(12h) and OSType=="Linux" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId))
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, BulletinUrl, BulletinID) by SourceComputerId, Product, ProductArch
| where UpdateState=~"Needed"
| project-away UpdateState, TimeGenerated
| summarize computersCount=dcount(SourceComputerId, 2), ClassificationWeight=max(iff(Classification has "Critical", 4, iff(Classification has "Security", 2, 1))) by id=strcat(Product, "_", ProductArch), displayName=Product, productArch=ProductArch, classification=Classification, InformationId=BulletinID, InformationUrl=tostring(split(BulletinUrl, ";", 0)[0]), osType=1
| union(Update
| where TimeGenerated>ago(14h) and OSType!="Linux" and (Optional==false or Classification has "Critical" or Classification has "Security") and SourceComputerId in ((Heartbeat
| where TimeGenerated>ago(12h) and OSType=~"Windows" and notempty(Computer)
| summarize arg_max(TimeGenerated, Solutions) by SourceComputerId
| where Solutions has "updates"
| distinct SourceComputerId))
| summarize hint.strategy=partitioned arg_max(TimeGenerated, UpdateState, Classification, Title, KBID, PublishedDate, Approved) by Computer, SourceComputerId, UpdateID
| where UpdateState=~"Needed" and Approved!=false
| project-away UpdateState, Approved, TimeGenerated
| summarize computersCount=dcount(SourceComputerId, 2), displayName=any(Title), publishedDate=min(PublishedDate), ClassificationWeight=max(iff(Classification has "Critical", 4, iff(Classification has "Security", 2, 1))) by id=strcat(UpdateID, "_", KBID), classification=Classification, InformationId=strcat("KB", KBID), InformationUrl=iff(isnotempty(KBID), strcat("https://support.microsoft.com/kb/", KBID), ""), osType=2)
| sort by ClassificationWeight desc, computersCount desc, displayName asc
| extend informationLink=(iff(isnotempty(InformationId) and isnotempty(InformationUrl), toobject(strcat('{ "uri": "', InformationUrl, '", "text": "', InformationId, '", "target": "blank" }')), toobject('')))
| project-away ClassificationWeight, InformationId, InformationUrl
Další kroky
- Podrobnosti o protokolech služby Azure Monitor najdete v protokolech služby Azure Monitor.
- Nápovědu k upozorněním najdete v tématu Konfigurace výstrah.