Sdílet prostřednictvím


Podporované funkce KQL v transformacích služby Azure Monitor

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. Souhrn se například nepodporuje, 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é.

Speciální předpoklady

Parsovat příkaz

Příkaz analýzy v transformaci je omezený na 10 sloupců na příkaz z důvodů výkonu. Pokud transformace vyžaduje parsování více než 10 sloupců, rozdělte ho na několik příkazů, jak je popsáno v tématu 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 obsahujícímu zprávu parse_cef_dictionary CEF parsuje vlastnost Extension zprávy 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

Ukázkový výstup funkce parse_cef_dictionary

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ě
  • Oblast
  • State
  • City
  • Latitude
  • Longitude
| extend GeoLocation = geo_location("1.0.0.5")

Snímek obrazovky s ukázkovým výstupem funkce geo_location

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 tabulkových výrazů

Jediné podporované zdroje dat pro příkaz KQL v transformaci jsou následující:

  • zdroj, který představuje zdrojová data. Příklad:

    source
    | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41"
    | project PreciseTimeStamp, Message
    
  • print operátor, který vždy vytvoří jeden řádek. Příklad:

    print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
    

Podporované tabulkové operátory

Podporované skalární operátory

  • Podporují se všechny číselné operátory .
  • Podporují se všechny aritmetické operátory Datetime a Timespan.
  • Podporují se následující operátory string.
    • `=
    • !=
    • =~
    • !~
    • contains
    • !contains
    • contains_cs
    • !contains_cs
    • has
    • !has
    • has_cs
    • !has_cs
    • startswith
    • !startswith
    • startswith_cs
    • !startswith_cs
    • endswith
    • !endswith
    • endswith_cs
    • !endswith_cs
    • matches regex
    • in
    • !in
  • Podporují se následující bitové operátory .
    • binary_and()
    • binary_or()
    • binary_xor()
    • binary_not()
    • binary_shift_left()
    • binary_shift_right()

Skalární funkce

Uvozování identifikátorů

Podle potřeby použijte uvozování identifikátorů .

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.