Megosztás a következőn keresztül:


Adatok korrelálása az Azure Data Explorerben és az Azure Resource Graphban egy Log Analytics-munkaterület adataival

Az Azure Monitor-naplók elemzésének továbbfejlesztése az Azure Data Explorer és az Azure Resource Graph adatainak a Log Analytics-munkaterületen és az Application Insights-erőforrásokban lévő adatokkal való korrelációjával. Ez a cikk bemutatja, hogyan futtathat szolgáltatásközi lekérdezéseket bármely olyan szolgáltatásból, amely adatokat tárol egy Log Analytics-munkaterületen. Bár a Microsoft Sentinel Log Analytics-munkaterületeken tárolja az adatokat, és támogatja az Azure Data Explorer szolgáltatásközi lekérdezéseit, a Microsoft Sentinel nem minden funkciója támogatja az Azure Resource Graphba történő lekérdezéseket.

Szolgáltatásközi lekérdezések futtatása a Kusto Query Language (KQL) lekérdezéseket támogató ügyféleszközökkel, beleértve a Log Analyticst az Azure Portalon, a munkafüzeteket, a PowerShellt és a REST API-t.

Előfeltételek

Erőforrás Engedély szükséges
Log Analytics-munkaterület Microsoft.OperationalInsights/workspaces/query/*/read A Log Analytics munkaterületeken lekérdezéseket végezhet, amelyeket például a
biztosít.
Azure Resource Graph Az Azure Resource Graphban lekérdezett erőforrásokra vonatkozó engedélyek olvasása
Azure Data Explorer Az Azure Data Explorerben lekérdezett táblák engedélyeinek megtekintése

Implementálási szempontok

A szolgáltatásközi lekérdezések nem támogatottak a következő esetekben:

Általános keresztszolgáltatás-szempontok

  • Az adatbázisnevek megkülönböztetik a kis- és nagybetűket.
  • Olyan nem paraméteres függvényeket és függvényeket használjon, amelyek definíciója nem tartalmaz más munkaterületek közötti vagy szolgáltatásközi kifejezéseket. Az elfogadható függvények közé tartozik a adx(), arg(), resource()workspace()és app()a .
  • A szolgáltatásközi lekérdezések csak az adatlekérést támogatják.
  • A szolgáltatásközi lekérdezések csak parancsokat támogatnak. Ez a funkció lehetővé teszi a fürtök közötti lekérdezések számára, hogy közvetlenül hivatkozzanak egy Azure Monitor, egy Azure Data Explorer vagy egy Azure Resource Graph táblázatos függvényére.

    .show a szolgáltatásközi lekérdezés által támogatott parancsok:

    .show functions
    .show function {FunctionName}
    .show database {DatabaseName} schema as json

  • A fürtben lévő Időbélyeg oszlopának azonosítása nem támogatott. A Log Analytics Query API nem adja át az időszűrőt.
  • mv-expand legfeljebb 2000 rekordot támogat.
  • Az Azure Monitor-naplók nem támogatják a external_table() függvényt, így külső táblákat kérdezhet le az Azure Data Explorerben. Külső tábla lekérdezéséhez definiáljon external_table(<external-table-name>) paraméter nélküli függvényt az Azure Data Explorerben. Ezután meghívhatja a függvényt a kifejezéssel adx("").<function-name>.
  • Ha a operátort használja egyesítés helyett, akkor a segítségével kell kombinálnia az Azure Data Explorer vagy az Azure Resource Graph adatokat a Log Analytics munkaterület adataival. Használja az Hint.remote={direction of the Log Analytics workspace} parancsot.
    Például:
    AzureDiagnostics
    | join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)
    

Az Azure Resource Graph szolgáltatásközi lekérdezési szempontjai

  • A arg lekérdezés része csak az első 1000 rekordot adja vissza. Tartsa ezt szem előtt, ha join-tal kombinálja, mert előfordulhat, hogy a korlát elérésekor hiányoznak bejegyzések.
  • Az join operátor lehetővé teszi, hogy egyetlen Azure Resource Graph-táblából származó adatokat kombináljon egy táblával a Log Analytics-munkaterületen.
  • Az Azure Monitor nem ad vissza Azure Resource Graph-lekérdezési hibákat.
  • A Log Analytics lekérdezésszerkesztője szintaxishibákként jelöli meg az érvényes Azure Resource Graph-lekérdezéseket. Egy érvényes lekérdezés például a következőhöz hasonló hibát jelezhet: "Az érvényes név <> nem hivatkozik ismert oszlopra, táblára, változóra vagy függvényre."
  • Ezek az operátorok nem támogatottak: smv-apply(), rand(), , arg_max(), arg_min(), avg()avg_if(), countif(), sumif(), percentile(), percentiles(), percentilew(), percentilesw(), stdev()stdevif()stdevp()variance()variancep()varianceif()bin_at.
  • A Microsoft Sentinel nem támogatja a szolgáltatásközi lekérdezéseket minden olyan funkcióban, amelyben a KQL-t használják.

Adatok lekérdezése az Azure Data Explorerben az adx() használatával

Adja meg az Azure Data Explorer-fürt azonosítóját, a lekérdezés adx mintáján belül, majd az adatbázis nevét és a táblát.

adx('https://help.kusto.windows.net/Samples').StormEvents

Azure Data Explorer-fürttáblák kombinálása Log Analytics-munkaterülettel

Használja a union parancsot a fürttáblák Log Analytics-munkaterülettel való kombinálásához.

Példa:

union customEvents, adx('https://help.kusto.windows.net/Samples').StormEvents
| take 10
let CL1 = adx('https://help.kusto.windows.net/Samples').StormEvents;
union customEvents, CL1 | take 10

Tipp.

A rövidített formátum engedélyezett: ClusterName/InitialCatalog. Például adx('help/Samples') a következőre adx('help.kusto.windows.net/Samples')van lefordítva: .

Adatok összekapcsolása egy Azure Data Explorer fürtből az egyik bérlőnél egy másik bérlő Azure Monitor-erőforrásával.

A szolgáltatások közötti bérlőközi lekérdezések nem támogatottak. Ön egyetlen bérlőhöz van bejelentkezve egy olyan lekérdezés futtatásához, amely mindkét erőforrást lefedi.

Ha az Azure Data Explorer-erőforrás az A bérlőben van, és a Log Analytics-munkaterület a B bérlőben található, használja az alábbi módszerek egyikét:

  • Az Azure Data Explorer használatával szerepköröket adhat hozzá a különböző bérlőkben lévő tagokhoz. A felhasználói azonosítóját jogosult felhasználóként adja hozzá a B bérlőnél az Azure Data Explorer-fürtön. Ellenőrizze, hogy az Azure Data Explorer-fürt TrustedExternalTenant tulajdonsága tartalmazza-e a B bérlőt. Futtassa a kereszt lekérdezést teljes mértékben a B bérlőben.
  • A Lighthouse használatával kivetítheti az Azure Monitor-erőforrást az A bérlőbe.

Csatlakozás különböző bérlőkből származó Azure Data Explorer-fürtökhöz

A Kusto Explorer automatikusan bejelentkeztet arra a bérlői fiókra, amelyhez eredetileg a felhasználói fiók tartozik. Ha más bérlők erőforrásait szeretné elérni ugyanazzal a felhasználói fiókkal, egyértelműen meg kell adnia TenantId a kapcsolati sztringben:

Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId

Adatok lekérdezése az Azure Resource Graphban az arg() (előzetes verzió) használatával

Adja meg a arg("") mintát, majd az Azure Resource Graph-tábla nevét.

Példa:

arg("").<Azure-Resource-Graph-table-name>

Tipp.

Az arg() operátor mostantól a Microsoft Defender portálon is elérhető a speciális kereséshez. Ez a funkció lehetővé teszi a Microsoft Sentinel-táblák lekérdezését lehetővé tevő eredményeket. További információ: Azure Resource Graph-lekérdezések a speciális keresésben.

Íme néhány minta Azure Log Analytics-lekérdezés, amelyek az új Azure Resource Graph szolgáltatásközi lekérdezési képességeket használják:

Példa: Log Analytics-lekérdezés szűrése egy Azure Resource Graph-lekérdezés eredményei alapján

arg("").Resources 
| where type == "microsoft.compute/virtualmachines" and properties.hardwareProfile.vmSize startswith "Standard_D"
| join (
   Heartbeat
   | where TimeGenerated > ago(1d)
   | distinct Computer
)
on $left.name == $right.Computer

Példák: Olyan riasztási szabály létrehozása, amely csak az arg() lekérdezésből származó egyes erőforrásokra vonatkozik

Címkék alapján zárja ki az erőforrásokat. Ne aktiváljon például címkével ellátott Test virtuális gépekre vonatkozó riasztásokat.

arg("").Resources
| where tags.environment=~'Test'
| project name 

Kérje le a processzorkihasználtsággal kapcsolatos teljesítményadatokat, és szűrjön az erőforrásokra a prod címkével.

InsightsMetrics
| where Name == "UtilizationPercentage"
| lookup (
   arg("").Resources 
   | where type == 'microsoft.compute/virtualmachines' 
   | project _ResourceId=tolower(id), tags
)
on _ResourceId
| where tostring(tags.Env) == "Prod"

További példahasználati esetek

  • Címkével állapítsa meg, hogy a virtuális gépek 24x7-et futnak-e, vagy éjszaka le kell-e állítani.
  • Riasztások megjelenítése minden olyan kiszolgálón, amely meghatározott számú magot tartalmaz.

Riasztás létrehozása szolgáltatásközi lekérdezés alapján a Log Analytics-munkaterületről

Ha szolgáltatásközi lekérdezés alapján szeretne riasztási szabályt létrehozni a Log Analytics-munkaterületről, kövesse a Naplókeresési riasztási szabály létrehozása vagy szerkesztése, a Log Analytics-munkaterület kiválasztásának lépéseit a Hatókör lapon.

Tipp.

Futtasson szolgáltatásközi lekérdezéseket az Azure Data Explorerből és az Azure Resource Graphból egy Log Analytics-munkaterületre úgy, hogy kiválasztja a megfelelő erőforrást a riasztás hatóköreként.

Azure Resource Graph-táblák kombinálása Log Analytics-munkaterülettel

Használja a union parancsot a fürttáblák Log Analytics-munkaterülettel való kombinálásához.

Példa:

union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10

Amikor az join operátort használja az egyesítés helyett, az Azure Resource Graph adatainak a Log Analytics-munkaterületen lévő adatokkal való kombinálásához egy hint-t kell használnia. Használja az Hint.remote={Direction of the Log Analytics Workspace} parancsot. Példa:

Perf | where ObjectName == "Memory" and (CounterName == "Available MBytes Memory")
| extend _ResourceId = replace_string(replace_string(replace_string(_ResourceId, 'microsoft.compute', 'Microsoft.Compute'), 'virtualmachines','virtualMachines'),"resourcegroups","resourceGroups")
| join hint.remote=left (arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=id, tags) on _ResourceId | project-away _ResourceId1 | where tostring(tags.env) == "prod"