Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Transformace ve službě Azure Monitor umožňují spustit dotaz KQL na příchozí data služby Azure Monitor, abyste mohli filtrovat nebo upravovat příchozí data před jejich uložením v pracovním prostoru služby Log Analytics. Tento článek obsahuje podrobnosti o aspektech KQL a podporovaných funkcích v transformačních dotazech kromě speciálních operátorů, které jsou dostupné pouze v transformacích.
Vzhledem k tomu, že transformace se u každého záznamu používají jednotlivě, nemůžou používat žádné operátory KQL, které pracují s více záznamy. Podporují se jenom operátory, které jako vstup přebírají jeden řádek a nevrací více než jeden řádek. Například souhrn není podporován, protože shrnuje více záznamů.
Transformace podporují pouze operátory uvedené v tomto článku. Všechny ostatní operátory, které se můžou použít v jiných dotazech protokolu, nejsou v transformacích podporované.
Zvláštní aspekty
Parsovat příkaz
Příkaz analýzy v transformaci je omezený na 10 sloupců na příkaz z důvodů výkonu. Pokud vaše transformace vyžaduje analýzu více než 10 sloupců, rozdělte ji na více příkazů, jak je popsáno v Rozdělení velkých příkazů analýzy.
Zpracování dynamických dat
Zvažte následující vstup s dynamickými daty:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Pokud chcete získat přístup k vlastnostem v AdditionalContext, definujte ho jako sloupec dynamického typu ve vstupním streamu:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Obsah sloupce AdditionalContext je teď možné analyzovat a používat v transformaci KQL:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Dynamické literály
parse_json
Funkce slouží ke zpracování dynamických literálů.
Například následující dotazy poskytují stejné funkce:
print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
Speciální funkce
Následující funkce jsou k dispozici pouze v transformacích. Nelze je použít v jiných dotazech protokolu.
parse_cef_dictionary
Vzhledem k řetězci, který obsahuje zprávu CEF, parse_cef_dictionary analyzuje vlastnost Extension této zprávy a převádí ji do objektu dynamického klíče/hodnoty. Středník je vyhrazený znak, který by měl být nahrazen před předáním nezpracované zprávy do metody, jak je znázorněno v příkladu.
| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage)
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage)
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension
geo_location
Vzhledem k tomu, že se podporuje řetězec obsahující IP adresu (podporuje se protokol IPv4 a IPv6), geo_location vrátí funkce přibližné zeměpisné umístění, včetně následujících atributů:
- Země
- Región
- Stát
- Město
- Zeměpisná šířka
- Zeměpisná délka
| extend GeoLocation = geo_location("1.0.0.5")
Důležité
Vzhledem k povaze služby geografické polohy IP, kterou tato funkce využívá, může při nadměrném použití zavádět latenci příjmu dat. Při použití této funkce více než několikrát pro každou transformaci buďte opatrní.
Podporované příkazy
Příkaz 'let'
Pravou stranou let může být skalární výraz, tabulkový výraz nebo uživatelsky definovaná funkce. Podporují se pouze uživatelem definované funkce s skalárními argumenty.
Příkazy vyjádření v tabulkovém formátu
Jediné podporované zdroje dat pro příkaz KQL v transformaci jsou následující:
zdroj, který představuje zdrojová data. Například:
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Messageprintoperátor, který vždy generuje jeden řádek. Například:print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Podporované tabulkové operátory
extendprojectprintwhereparseproject-awayproject-renamedatatable-
columnifexists(použijte columnifexists místo column_ifexists).
Podporované skalární operátory
Podporují se všechny číselné operátory .
Podporují se všechny aritmetické operátory Datetime a Timespan.
Podporovány jsou následující stringové operátory.
- `=
!==~!~contains!containscontains_cs!contains_cshas!hashas_cs!has_csstartswith!startswithstartswith_cs!startswith_csendswith!endswithendswith_cs!endswith_csmatches regexin!in
Následující bitové operátory se podporují.
binary_and()binary_or()binary_xor()binary_not()binary_shift_left()binary_shift_right()
Skalární funkce
Bitové funkce
Převodní funkce
Funkce DateTime a TimeSpan
Dynamické a maticové funkce
Matematické funkce
Podmíněné funkce
Řetězcové funkce
-
base64_encodestring(použijte base64_encodestring místo base64_encode_tostring) -
base64_decodestring(místo base64_decode_tostring použijte base64_decodestring) countofextractextract_allindexofisemptyisnotemptyparse_jsonsplitstrcatstrcat_delimstrlensubstringtolowertoupperhash_sha256
-
Typové funkce
Uvozování identifikátorů
Použijte uvozování identifikátorů, pokud je to potřeba.
Další kroky
- Vytvořte pravidlo shromažďování dat a přidružení k němu z virtuálního počítače pomocí agenta služby Azure Monitor.