Transformace shromažďování dat ve službě Azure Monitor

Pomocí transformací ve službě Azure Monitor můžete filtrovat nebo upravovat příchozí data před jejich odesláním do pracovního prostoru služby Log Analytics. Tento článek obsahuje základní popis transformací a způsob jejich implementace. Obsahuje odkazy na další obsah pro vytvoření transformace.

Transformace se ve službě Azure Monitor provádějí v kanálu příjmu dat poté, co zdroj dat doručí data a před odesláním do cíle. Zdroj dat může před odesláním dat provádět vlastní filtrování, ale před odesláním do cíle se spoléhá na transformaci pro další manipulaci.

Transformace jsou definovány v pravidle shromažďování dat (DCR) a používají příkaz dotazovací jazyk Kusto (KQL), který se použije jednotlivě pro každou položku příchozích dat. Musí pochopit formát příchozích dat a vytvořit výstup ve struktuře očekávané v cíli.

Následující diagram znázorňuje proces transformace příchozích dat a ukazuje ukázkový dotaz, který se dá použít. Podrobnosti o vytváření transformačních dotazů najdete v tématu Struktura transformace ve službě Azure Monitor .

Diagram znázorňující transformaci času příjmu dat pro příchozí data

Proč používat transformace

Následující tabulka popisuje různé cíle, které můžete dosáhnout pomocí transformací.

Kategorie Podrobnosti
Odebrání citlivých dat Je možné, že máte zdroj dat, který odesílá informace, které nechcete ukládat z důvodů ochrany osobních údajů nebo kompliancy.

Filtrování citlivých informací Vyfiltrujte celé řádky nebo konkrétní sloupce, které obsahují citlivé informace.

Obfuscate citlivé informace. Nahraďte informace, jako jsou číslice v IP adrese nebo telefonním čísle, běžným znakem.

Odeslat do alternativní tabulky. Odesílání citlivých záznamů do alternativní tabulky s jinou konfigurací řízení přístupu na základě role
Obohacení dat o více nebo počítaných informací Transformace slouží k přidání informací do dat, která poskytují obchodní kontext nebo usnadňují pozdější dotazování na data.

Přidejte sloupec s dalšími informacemi. Můžete například přidat sloupec, který identifikuje, jestli je IP adresa v jiném sloupci interní nebo externí.

Přidání informací specifických pro firmy Můžete například přidat sloupec označující oddělení společnosti na základě informací o poloze v jiných sloupcích.
Snížení nákladů na data Protože se vám účtují poplatky za příjem dat za všechna data odesílaná do pracovního prostoru služby Log Analytics, chcete vyfiltrovat všechna data, která nepotřebujete ke snížení nákladů.

Odeberte celé řádky. Můžete mít například nastavení diagnostiky pro shromažďování protokolů prostředků z konkrétního prostředku, ale nemusíte vyžadovat všechny položky protokolu, které generuje. Vytvořte transformaci, která filtruje záznamy, které odpovídají určitým kritériím.

Odeberte sloupec z každého řádku. Data můžou například obsahovat sloupce s daty, která jsou redundantní nebo mají minimální hodnotu. Vytvořte transformaci, která filtruje sloupce, které nejsou povinné.

Parsování důležitých dat ze sloupce Můžete mít tabulku s cennými daty uloženými v určitém sloupci. Pomocí transformace parsujte cenná data do nového sloupce a odeberte původní.

Odešle určité řádky do základních protokolů. Odesílání řádků v datech, které vyžadují základní možnosti dotazů do základních tabulek protokolů za účelem snížení nákladů na příjem dat.
Formátování dat pro cíl Můžete mít zdroj dat, který odesílá data ve formátu, který neodpovídá struktuře cílové tabulky. Transformace slouží k přeformátování dat na požadované schéma.

Podporované tabulky

Seznam tabulek, které se dají použít s transformacemi, najdete v tabulkách, které podporují transformace v protokolech služby Azure Monitor. Můžete také použít odkaz na data služby Azure Monitor, který uvádí atributy pro každou tabulku, včetně toho, jestli podporuje transformace. Kromě těchto tabulek se podporují také všechny vlastní tabulky (přípona _CL).

  • Všechny tabulky Azure uvedené v tabulkách, které podporují transformace v protokolech služby Azure Monitor. Můžete také použít odkaz na data služby Azure Monitor, který uvádí atributy pro každou tabulku, včetně toho, jestli podporuje transformace.
  • Jakákoli vlastní tabulka vytvořená pro agenta služby Azure Monitor (Vlastní tabulka MMA nemůže používat transformace)

Vytvoření transformace

Existuje několik metod pro vytváření transformací v závislosti na metodě shromažďování dat. Následující tabulka obsahuje pokyny pro různé metody vytváření transformací.

Shromažďování dat Reference
Rozhraní API pro příjem protokolů Odesílání dat do protokolů služby Azure Monitor pomocí rozhraní REST API (Azure Portal)
Odesílání dat do protokolů služby Azure Monitor pomocí rozhraní REST API (šablony Azure Resource Manageru)
Virtuální počítač s agentem Azure Monitoru Přidání transformace do protokolu služby Azure Monitor
Cluster Kubernetes se službou Container Insights Transformace dat v Přehledech kontejnerů
Azure Event Hubs Kurz: Ingestování událostí ze služby Azure Event Hubs do protokolů služby Azure Monitor (Public Preview)

Více cílů

Pomocí transformací můžete odesílat data do více cílů v pracovním prostoru služby Log Analytics pomocí jediného řadiče domény. Zadáte dotaz KQL pro každý cíl a výsledky každého dotazu se odešlou do odpovídajícího umístění. Do různých tabulek můžete odesílat různé sady dat nebo pomocí více dotazů odesílat různé sady dat do stejné tabulky.

Můžete například odesílat data událostí do služby Azure Monitor pomocí rozhraní API pro příjem protokolů. Většina událostí by měla být odeslána analytickou tabulku, kde by se mohla pravidelně dotazovat, zatímco události auditu by se měly odesílat do vlastní tabulky nakonfigurované pro základní protokoly, aby se snížily náklady.

Pokud chcete použít více cílů, musíte v současné době buď ručně vytvořit nový řadič domény, nebo upravit existující. Příklady řadičů domény, které používají více cílů, najdete v části Ukázky .

Důležité

V současné době musí být tabulky v DCR ve stejném pracovním prostoru služby Log Analytics. Pokud chcete odesílat do více pracovních prostorů z jednoho zdroje dat, použijte více řadičů domény a nakonfigurujte aplikaci tak, aby do každého z nich odesílala data.

Diagram znázorňující transformaci odesílající data do více tabulek

Monitorování transformací

Podrobnosti o protokolech a metrikách, které monitorují stav a výkon transformací, najdete v tématu Monitorování a řešení potíží se shromažďováním dat DCR ve službě Azure Monitor . To zahrnuje identifikaci všech chyb, ke kterým dochází v KQL, a metriky ke sledování jejich doby trvání.

Náklady na transformace

I když samotné transformace neúčtují přímé náklady, následující scénáře můžou mít za následek další poplatky:

  • Pokud transformace zvětšuje velikost příchozích dat, například přidáním počítaného sloupce, bude se vám účtovat standardní míra příjmu dat navíc.
  • Pokud transformace sníží ingestovaná data o více než 50 %, bude se vám účtovat množství filtrovaných dat nad 50 %.

K výpočtu poplatku za zpracování dat vyplývajících z transformací použijte následující vzorec:
[GB vyfiltrované podle transformací] – ([GB ingestovaná daty podle kanálu] / 2). Následující tabulka uvádí příklady.

Ingestování dat podle kanálu Data vyřazená transformací Data ingestována pracovním prostorem Služby Log Analytics Poplatek za zpracování dat Poplatek za příjem dat
20 GB 12 GB 8 GB 2 GB 1 8 GB
20 GB 8 GB 12 GB 0 GB 12 GB

1 Tento poplatek vylučuje poplatky za data ingestována pracovním prostorem služby Log Analytics.

Abyste se tomuto poplatku vyhnuli, měli byste před použitím transformací filtrovat ingestované data pomocí alternativních metod. Tímto způsobem můžete snížit množství dat zpracovávaných transformacemi, a tím minimalizovat případné další náklady.

Informace o aktuálních poplatcích za příjem a uchovávání dat protokolů ve službě Azure Monitor najdete v cenách služby Azure Monitor.

Důležité

Pokud je pro pracovní prostor služby Log Analytics povolená služba Azure Sentinel, neúčtují se žádné poplatky za příjem dat bez ohledu na to, kolik dat filtry transformace.

Ukázky

Následující šablony Resource Manageru ukazují ukázkové řadiče domény s různými vzory. Tyto šablony můžete použít jako výchozí bod k vytváření dcr s transformacemi pro vaše vlastní scénáře.

Jeden cíl

Následující příklad je DCR pro agenta Azure Monitoru, který odesílá data do Syslog tabulky. V tomto příkladu transformace filtruje data pro záznamy se error zprávou.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        {
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "singleDestinationDCR", 
            "apiVersion": "2021-09-01-preview", 
            "location": "eastus", 
            "properties": { 
              "dataSources": { 
                "syslog": [ 
                  { 
                    "name": "sysLogsDataSource", 
                    "streams": [ 
                      "Microsoft-Syslog" 
                    ], 
                    "facilityNames": [ 
                      "auth",
                      "authpriv",
                      "cron",
                      "daemon",
                      "mark",
                      "kern",
                      "mail",
                      "news",
                      "syslog",
                      "user",
                      "uucp"
                    ], 
                    "logLevels": [ 
                      "Debug", 
                      "Critical", 
                      "Emergency" 
                    ] 
                  } 
                ] 
              }, 
              "destinations": { 
                "logAnalytics": [ 
                  { 
                    "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                    "name": "centralWorkspace" 
                  } 
                ] 
              }, 
              "dataFlows": [ 
                { 
                  "streams": [ 
                    "Microsoft-Syslog" 
                  ], 
                  "transformKql": "source | where message has 'error'", 
                  "destinations": [ 
                    "centralWorkspace" 
                  ] 
                } 
              ] 
            }
        }
    ]
} 

Několik tabulek Azure

Následující příklad je DCR pro data z rozhraní API pro příjem protokolů, která odesílá data do tabulek i SecurityEvent do Syslog tabulek. Tento řadič domény vyžaduje pro dataFlow každou samostatnou a pro každou jinou transformKqlOutputStream . V tomto příkladu Syslog se do tabulky odesílají všechna příchozí data, zatímco do SecurityEvent tabulky se odesílají také škodlivá data. Pokud jste nechtěli replikovat škodlivá data v obou tabulkách, můžete přidat where příkaz pro první dotaz, který tyto záznamy odebere.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        { 
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "multiDestinationDCR", 
            "location": "eastus", 
            "apiVersion": "2021-09-01-preview", 
            "properties": { 
                "dataCollectionEndpointId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers//Microsoft.Insights/dataCollectionEndpoints/my-dce",
                "streamDeclarations": { 
                    "Custom-MyTableRawData": { 
                        "columns": [ 
                            { 
                                "name": "Time", 
                                "type": "datetime" 
                            }, 
                            { 
                                "name": "Computer", 
                                "type": "string" 
                            }, 
                            { 
                                "name": "AdditionalContext", 
                                "type": "string" 
                            } 
                        ] 
                    } 
                }, 
                "destinations": { 
                    "logAnalytics": [ 
                        { 
                            "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                            "name": "clv2ws1" 
                        }, 
                    ] 
                }, 
                "dataFlows": [ 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | project TimeGenerated = Time, Computer, Message = AdditionalContext", 
                        "outputStream": "Microsoft-Syslog" 
                    }, 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | where (AdditionalContext has 'malicious traffic!' | project TimeGenerated = Time, Computer, Subject = AdditionalContext", 
                        "outputStream": "Microsoft-SecurityEvent" 
                    } 
                ] 
            } 
        }
    ]
}

Kombinace Azure a vlastních tabulek

Následující příklad je DCR pro data z rozhraní API pro příjem protokolů, která odesílá data do Syslog tabulky i vlastní tabulky s daty v jiném formátu. Tento řadič domény vyžaduje pro dataFlow každou samostatnou a pro každou jinou transformKqlOutputStream . Při použití vlastních tabulek je důležité zajistit, aby schéma cíle (vlastní tabulka) obsahovalo vlastní sloupce (přidání nebo odstranění vlastních sloupců), které odpovídají schématu odesílaných záznamů. Pokud má například záznam pole s názvem SyslogMessage, ale cílová vlastní tabulka obsahuje pouze TimeGenerated a RawData, obdržíte ve vlastní tabulce událost s vyplněným pouze polem TimeGenerated a pole RawData bude prázdné. Pole SyslogMessage se zahodí, protože schéma cílové tabulky neobsahuje řetězcové pole s názvem SyslogMessage.

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources" : [
        { 
            "type": "Microsoft.Insights/dataCollectionRules", 
            "name": "multiDestinationDCR", 
            "location": "eastus", 
            "apiVersion": "2021-09-01-preview", 
            "properties": { 
                "dataCollectionEndpointId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers//Microsoft.Insights/dataCollectionEndpoints/my-dce",
                "streamDeclarations": { 
                    "Custom-MyTableRawData": { 
                        "columns": [ 
                            { 
                                "name": "Time", 
                                "type": "datetime" 
                            }, 
                            { 
                                "name": "Computer", 
                                "type": "string" 
                            }, 
                            { 
                                "name": "AdditionalContext", 
                                "type": "string" 
                            } 
                        ] 
                    } 
                }, 
                "destinations": { 
                    "logAnalytics": [ 
                        { 
                            "workspaceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace", 
                            "name": "clv2ws1" 
                        }, 
                    ] 
                }, 
                "dataFlows": [ 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | project TimeGenerated = Time, Computer, SyslogMessage = AdditionalContext", 
                        "outputStream": "Microsoft-Syslog" 
                    }, 
                    { 
                        "streams": [ 
                            "Custom-MyTableRawData" 
                        ], 
                        "destinations": [ 
                            "clv2ws1" 
                        ], 
                        "transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, ExtendedColumn=tostring(jsonContext.CounterName)", 
                        "outputStream": "Custom-MyTable_CL" 
                    } 
                ] 
            } 
        }
    ]
}

Další kroky