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. 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

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ě
  • Región
  • Stát
  • Město
  • Zeměpisná šířka
  • Zeměpisná délka
| 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 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, Message
    
  • print operá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

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
    • !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
  • 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

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.