Sdílet prostřednictvím


Kurz: Přidání transformace v pravidle shromažďování dat pracovního prostoru do služby Azure Monitor pomocí šablon Resource Manageru

Tento kurz vás provede konfigurací ukázkové transformace v pravidle shromažďování dat pracovního prostoru pomocí šablon Resource Manageru. Transformace ve službě Azure Monitor umožňují filtrovat nebo upravovat příchozí data před jejich odesláním do cíle. Transformace pracovních prostorů poskytují podporu pro transformace v čase příjmu dat pro pracovní postupy, které ještě nepoužívají kanál pro příjem dat služby Azure Monitor.

Transformace pracovních prostorů se ukládají společně v jednom pravidlu shromažďování dat (DCR) pro pracovní prostor označované jako DCR pracovního prostoru. Každá transformace je přidružená ke konkrétní tabulce. Transformace se použije na všechna data odesílaná do této tabulky z jakéhokoli pracovního postupu, který nepoužívá dcR.

Poznámka:

Tento kurz používá šablony Resource Manageru a rozhraní REST API ke konfiguraci transformace pracovního prostoru. Viz kurz: Přidání transformace v pravidle shromažďování dat pracovního prostoru do služby Azure Monitor pomocí webu Azure Portal pro stejný kurz pomocí webu Azure Portal.

V tomto kurzu se naučíte:

  • Nakonfigurujte transformaci pracovního prostoru pro tabulku v pracovním prostoru služby Log Analytics.
  • Napište dotaz protokolu pro transformaci v čase příjmu dat.

Poznámka:

Tento kurz používá PowerShell z Azure Cloud Shellu k volání rozhraní REST API pomocí rozhraní API pro tabulky služby Azure Monitor a webu Azure Portal k instalaci šablon Resource Manageru. K těmto voláním můžete použít jakoukoli jinou metodu.

Požadavky

K dokončení tohoto kurzu potřebujete:

  • Pracovní prostor služby Log Analytics, kde máte alespoň práva přispěvatele.
  • Oprávnění k vytváření objektů pravidla shromažďování dat v pracovním prostoru
  • Tabulka už musí obsahovat nějaká data.
  • Tabulka už nemůže být propojená s transformací DCR pracovního prostoru.

Přehled kurzu

V tomto kurzu snížíte požadavky na úložiště pro LAQueryLogs tabulku filtrováním určitých záznamů. Zároveň odeberete obsah sloupce a parsujete data sloupce a uložíte část dat do vlastního sloupce. Tabulka LAQueryLogs se vytvoří, když povolíte auditování dotazů protokolu v pracovním prostoru, ale použije se jenom jako ukázka pro kurz. Stejný základní proces můžete použít k vytvoření transformace pro libovolnou podporovanou tabulku v pracovním prostoru služby Log Analytics.

Povolení protokolů auditu dotazů

Abyste mohli vytvořit LAQueryLogs tabulku, se kterou budete pracovat, musíte pro svůj pracovní prostor povolit auditování dotazů. To není nutné pro všechny transformace doby příjmu dat. Stačí vygenerovat ukázková data, která tato ukázková transformace použije.

  1. V nabídce pracovních prostorů služby Log Analytics na webu Azure Portal vyberte Nastavení diagnostiky a pak přidejte nastavení diagnostiky.

    Snímek obrazovky s nastavením diagnostiky

  2. Zadejte název nastavení diagnostiky a vyberte pracovní prostor, aby se data auditování uložila do stejného pracovního prostoru. Vyberte kategorii Audit a potom kliknutím na Uložit uložte nastavení diagnostiky a zavřete stránku nastavení diagnostiky.

    Snímek obrazovky s novým nastavením diagnostiky

  3. Vyberte Protokoly a spusťte LAQueryLogs některé dotazy, které se naplní některými daty. Tyto dotazy nemusí skutečně vracet žádná data.

    Snímek obrazovky s ukázkovými dotazy na protokoly

Aktualizace schématu tabulky

Před vytvořením transformace je nutné v tabulce provést následující dvě změny:

  • Tabulka musí být povolena pro transformaci pracovního prostoru. To se vyžaduje pro všechny tabulky, které budou mít transformaci, i když transformace nezmění schéma tabulky.
  • Do tabulky musí být přidány všechny další sloupce naplněné transformací.

Pomocí tabulek – Aktualizovat rozhraní API nakonfigurujte tabulku s kódem PowerShellu níže. Volání rozhraní API umožňuje tabulku pro transformace pracovního prostoru bez ohledu na to, jestli jsou definované vlastní sloupce. V této ukázce obsahuje vlastní sloupec s názvem Resources_CF , který se naplní transformačním dotazem.

Důležité

Všechny vlastní sloupce přidané do předdefinované tabulky musí končit _CF. Sloupce přidané do vlastní tabulky (tabulka s názvem končící _CL) nemusí mít tuto příponu.

  1. Klikněte na tlačítko Cloud Shell na webu Azure Portal a ujistěte se, že je prostředí nastavené na PowerShell.

    Snímek obrazovky s otevřením Cloud Shellu

  2. Zkopírujte následující kód PowerShellu a nahraďte parametr Path podrobnostmi pro váš pracovní prostor.

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "LAQueryLogs",
                "columns": [
                    {
                        "name": "Resources_CF",
                        "description": "The list of resources, this query ran against",
                        "type": "string",
                        "isDefaultDisplay": true,
                        "isHidden": false
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/LAQueryLogs?api-version=2021-12-01-preview" -Method PUT -payload $tableParams
    
  3. Vložte kód do výzvy Cloud Shellu, abyste ho spustili.

    Snímek obrazovky se skriptem v Cloud Shellu

  4. Sloupec můžete ověřit tak, že přejdete do nabídky pracovního prostoru služby Log Analytics na webu Azure Portal. Výběrem možnosti Protokoly otevřete Log Analytics a rozbalte LAQueryLogs tabulku, aby se zobrazily její sloupce.

    Snímek obrazovky Log Analytics s novým sloupcem

Definování transformačního dotazu

Před přidáním do pravidla shromažďování dat použijte Log Analytics k otestování transformačního dotazu.

  1. Otevřete pracovní prostor v nabídce Pracovních prostorů služby Log Analytics na webu Azure Portal a výběrem možnosti Protokoly otevřete Log Analytics.

  2. Spuštěním následujícího dotazu zobrazte obsah LAQueryLogs tabulky. Všimněte si obsahu RequestContext sloupce. Transformace načte název pracovního prostoru z tohoto sloupce a odebere zbývající data v tomto sloupci.

    LAQueryLogs
    | take 10
    

    Snímek obrazovky s počátečním dotazem v Log Analytics

  3. Upravte dotaz na následující:

    LAQueryLogs
    | where QueryText !contains 'LAQueryLogs'
    | extend Context = parse_json(RequestContext)
    | extend Workspace_CF = tostring(Context['workspaces'][0])
    | project-away RequestContext, Context
    

    Provede se následující změny:

    • Zahoďte řádky související s dotazováním LAQueryLogs samotné tabulky, abyste ušetřili místo, protože tyto položky protokolu nejsou užitečné.
    • Přidejte sloupec pro název pracovního prostoru, který byl dotazován.
    • Pokud chcete ušetřit místo, odeberte data ze RequestContext sloupce.

    Snímek obrazovky s upraveným dotazem v Log Analytics

  4. Proveďte v dotazu následující změny, které ho mají použít v transformaci:

    • Místo zadání názvu tabulky (LAQueryLogs v tomto případě) jako zdroje dat pro tento dotaz použijte source klíčové slovo. Jedná se o virtuální tabulku, která vždy představuje příchozí data v transformačním dotazu.
    • Odeberte všechny operátory, které transformační dotazy nepodporují. Seznam podporovaných operátorů najdete v části Podporované funkce KQL.
    • Zploštěte dotaz na jeden řádek, aby se vešl do FORMÁTU JSON DCR.

    Následuje dotaz, který použijete v transformaci po těchto úpravách:

    source | where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''
    

Vytvoření pravidla shromažďování dat (DCR)

Vzhledem k tomu, že se jedná o první transformaci pracovního prostoru, musíte vytvořit dcR transformace pracovního prostoru. Pokud vytváříte transformace pracovního prostoru pro jiné tabulky ve stejném pracovním prostoru, musí být uloženy v tomto stejném řadiči domény.

  1. Do vyhledávacího pole webu Azure Portal zadejte šablonu a pak vyberte Nasadit vlastní šablonu.

    Snímek obrazovky pro nasazení vlastní šablony

  2. V editoru klikněte na Vytvořit vlastní šablonu.

    Snímek obrazovky pro sestavení šablony v editoru

  3. Vložte níže šablonu Resource Manageru do editoru a potom klikněte na Uložit. Tato šablona definuje dcR a obsahuje transformační dotaz. Tuto šablonu nemusíte upravovat, protože bude shromažďovat hodnoty pro její parametry.

    Snímek obrazovky pro úpravu šablony Resource Manageru

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionRuleName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the Data Collection Rule to create."
                }
            },
            "location": {
                "type": "string",
                "defaultValue": "westus2",
                "allowedValues": [
                    "westus2",
                    "eastus2",
                    "eastus2euap"
                ],
                "metadata": {
                    "description": "Specifies the location in which to create the Data Collection Rule."
                }
            },
            "workspaceResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Log Analytics workspace to use."
                }
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[parameters('location')]",
                "apiVersion": "2021-09-01-preview",
                "kind": "WorkspaceTransforms",
                "properties": {
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "clv2ws1"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Microsoft-Table-LAQueryLogs"
                            ],
                            "destinations": [
                                "clv2ws1"
                            ],
                            "transformKql": "source |where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''"
                        }
                    ]
                }
            }
        ],
        "outputs": {
            "dataCollectionRuleId": {
                "type": "string",
                "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
            }
        }
    }
    
  4. Na obrazovce Vlastní nasazení zadejte předplatné a skupinu prostředků, do které se uloží pravidlo shromažďování dat, a pak zadejte hodnoty definované v šabloně. To zahrnuje název pravidla shromažďování dat a ID prostředku pracovního prostoru, které jste shromáždili v předchozím kroku. Umístění by mělo být stejné jako pracovní prostor. Oblast se už naplní a použije se pro umístění pravidla shromažďování dat.

    Snímek obrazovky pro úpravu vlastních hodnot nasazení

  5. Klikněte na Zkontrolovat a vytvořit a potom vytvořit , až si prohlédnete podrobnosti.

  6. Po dokončení nasazení rozbalte pole Podrobnosti o nasazení a kliknutím na pravidlo shromažďování dat zobrazte jeho podrobnosti. Klikněte na zobrazení JSON.

    Snímek obrazovky s podrobnostmi pravidla shromažďování dat

  7. Zkopírujte ID prostředku pro pravidlo shromažďování dat. Použijete ho v dalším kroku.

    Snímek obrazovky se zobrazením JSON pravidla shromažďování dat

Posledním krokem pro povolení transformace je propojení DCR s pracovním prostorem.

Důležité

Pracovní prostor je možné připojit pouze k jednomu řadiči domény a propojený řadič domény musí tento pracovní prostor obsahovat jako cíl.

Pomocí pracovních prostorů – Aktualizujte rozhraní API ke konfiguraci tabulky s kódem PowerShellu níže.

  1. Dalším kliknutím na tlačítko Cloud Shell otevřete Cloud Shell. Zkopírujte následující kód PowerShellu a nahraďte parametry hodnotami pro váš pracovní prostor a DCR.

    $defaultDcrParams = @'
    {
        "properties": {
            "defaultDataCollectionRuleResourceId": "/subscriptions/{subscription}/resourceGroups/{resourcegroup}/providers/Microsoft.Insights/dataCollectionRules/{DCR}"
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}?api-version=2021-12-01-preview" -Method PATCH -payload $defaultDcrParams
    
  2. Vložte kód do výzvy Cloud Shellu, abyste ho spustili.

    Snímek obrazovky skriptu pro propojení pracovního prostoru s DCR

Testovací transformace

Počkejte přibližně 30 minut, než se transformace projeví, a pak ji můžete otestovat spuštěním dotazu na tabulku. Ovlivněna budou pouze data odeslaná do tabulky po použití transformace.

Pro účely tohoto kurzu spusťte několik ukázkových dotazů, které posílají data do LAQueryLogs tabulky. Zahrňte některé dotazy LAQueryLogs , abyste mohli ověřit, že transformace filtruje tyto záznamy. Všimněte si, že výstup obsahuje nový Workspace_CF sloupec a neexistují žádné záznamy pro LAQueryLogs.

Řešení problému

Tato část popisuje různé chybové stavy, které se mohou zobrazit a jak je opravit.

IntelliSense v Log Analytics nerozpoznává nové sloupce v tabulce

Aktualizace mezipaměti, která řídí technologii IntelliSense, může trvat až 24 hodin.

Transformace dynamického sloupce nefunguje

V současné době existuje známý problém ovlivňující dynamické sloupce. Dočasným alternativním řešením je explicitně analyzovat dynamická data sloupců před parse_json() provedením jakýchkoli operací s nimi.

Další kroky