Samouczek: dodawanie przekształcenia w regule zbierania danych obszaru roboczego do usługi Azure Monitor przy użyciu szablonów usługi Resource Manager

W tym samouczku przedstawiono konfigurację przykładowej transformacji w regule zbierania danych obszaru roboczego przy użyciu szablonów usługi Resource Manager. Przekształcenia w usłudze Azure Monitor umożliwiają filtrowanie lub modyfikowanie danych przychodzących przed wysłaniem ich do miejsca docelowego. Przekształcenia obszarów roboczych zapewniają obsługę przekształceń czasu pozyskiwania dla przepływów pracy, które nie korzystają jeszcze z potoku pozyskiwania danych usługi Azure Monitor.

Przekształcenia obszaru roboczego są przechowywane razem w jednej regule zbierania danych (DCR) dla obszaru roboczego o nazwie DCR obszaru roboczego. Każde przekształcenie jest skojarzone z określoną tabelą. Przekształcenie jest stosowane do wszystkich danych wysyłanych do tej tabeli z dowolnego przepływu pracy, który nie korzysta z kontrolera DOMENY.

Uwaga

W tym samouczku użyto szablonów usługi Resource Manager i interfejsu API REST do skonfigurowania przekształcenia obszaru roboczego. Zobacz Samouczek: dodawanie przekształcenia w regule zbierania danych obszaru roboczego do usługi Azure Monitor przy użyciu witryny Azure Portal , aby zapoznać się z tym samym samouczkiem przy użyciu witryny Azure Portal.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Konfigurowanie przekształcenia obszaru roboczego dla tabeli w obszarze roboczym usługi Log Analytics.
  • Napisz zapytanie dziennika dotyczące przekształcenia czasu pozyskiwania.

Uwaga

W tym samouczku użyto programu PowerShell z usługi Azure Cloud Shell do tworzenia wywołań interfejsu API REST przy użyciu interfejsu API tabel usługi Azure Monitor i witryny Azure Portal w celu zainstalowania szablonów usługi Resource Manager. Do wykonania tych wywołań można użyć dowolnej innej metody.

Wymagania wstępne

Do ukończenia tego samouczka są potrzebne są następujące elementy:

  • Obszar roboczy usługi Log Analytics, w którym masz co najmniej prawa współautora.
  • Uprawnienia do tworzenia obiektów reguły zbierania danych w obszarze roboczym.
  • Tabela musi zawierać już jakieś dane.
  • Tabela nie może być jeszcze połączona z przekształceniem obszaru roboczego DCR.

Omówienie samouczka

W tym samouczku zmniejszysz wymagania dotyczące magazynu dla LAQueryLogs tabeli, filtrując niektóre rekordy. Usuniesz również zawartość kolumny podczas analizowania danych kolumny w celu przechowywania fragmentu danych w kolumnie niestandardowej. Tabela LAQueryLogs jest tworzona podczas włączania inspekcji zapytań dzienników w obszarze roboczym, ale jest ona używana tylko jako przykład dla tego samouczka. Ten sam podstawowy proces umożliwia utworzenie przekształcenia dla dowolnej obsługiwanej tabeli w obszarze roboczym usługi Log Analytics.

Włączanie dzienników inspekcji zapytań

Należy włączyć inspekcję zapytań dla obszaru roboczego, aby utworzyć tabelę LAQueryLogs , z którą będziesz pracować. Nie jest to wymagane dla wszystkich przekształceń czasu pozyskiwania. Wystarczy wygenerować przykładowe dane, których użyje ta przykładowa transformacja.

  1. W menu obszarów roboczych usługi Log Analytics w witrynie Azure Portal wybierz pozycję Ustawienia diagnostyczne, a następnie pozycję Dodaj ustawienie diagnostyczne.

    Zrzut ekranu przedstawiający ustawienia diagnostyczne.

  2. Podaj nazwę ustawienia diagnostycznego i wybierz obszar roboczy, aby dane inspekcji przechowywane w tym samym obszarze roboczym. Wybierz kategorię Inspekcja, a następnie kliknij przycisk Zapisz, aby zapisać ustawienie diagnostyczne i zamknąć stronę ustawienia diagnostycznego.

    Zrzut ekranu przedstawiający nowe ustawienie diagnostyczne.

  3. Wybierz pozycję Dzienniki , a następnie uruchom kilka zapytań, aby wypełnić LAQueryLogs niektóre dane. Te zapytania nie muszą faktycznie zwracać żadnych danych.

    Zrzut ekranu przedstawiający przykładowe zapytania dziennika.

Aktualizowanie schematu tabeli

Przed utworzeniem przekształcenia należy wprowadzić następujące dwie zmiany w tabeli:

  • Aby można było przekształcać obszar roboczy, należy włączyć tabelę. Jest to wymagane w przypadku każdej tabeli, która będzie miała przekształcenie, nawet jeśli przekształcenie nie modyfikuje schematu tabeli.
  • Wszystkie dodatkowe kolumny wypełnione przez przekształcenie muszą zostać dodane do tabeli.

Użyj interfejsu API tabel — aktualizowanie , aby skonfigurować tabelę przy użyciu poniższego kodu programu PowerShell. Wywoływanie interfejsu API umożliwia przekształcenie tabeli dla przekształceń obszaru roboczego, niezależnie od tego, czy są zdefiniowane kolumny niestandardowe. W tym przykładzie zawiera on kolumnę niestandardową o nazwie Resources_CF , która zostanie wypełniona zapytaniem przekształcenia.

Ważne

Wszystkie kolumny niestandardowe dodane do wbudowanej tabeli muszą kończyć się _CF. Kolumny dodane do tabeli niestandardowej (tabela o nazwie kończącej się _CL) nie muszą mieć tego sufiksu.

  1. Kliknij przycisk Cloud Shell w witrynie Azure Portal i upewnij się, że środowisko jest ustawione na program PowerShell.

    Zrzut ekranu przedstawiający otwieranie usługi Cloud Shell.

  2. Skopiuj poniższy kod programu PowerShell i zastąp parametr Path szczegółami obszaru roboczego.

    $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. Wklej kod w wierszu polecenia usługi Cloud Shell, aby go uruchomić.

    Zrzut ekranu przedstawiający skrypt w usłudze Cloud Shell.

  4. Możesz sprawdzić, czy kolumna została dodana, przechodząc do menu obszaru roboczego usługi Log Analytics w witrynie Azure Portal. Wybierz pozycję Dzienniki , aby otworzyć usługę Log Analytics, a następnie rozwiń tabelę LAQueryLogs , aby wyświetlić jej kolumny.

    Zrzut ekranu usługi Log Analytics z nową kolumną.

Definiowanie zapytania przekształcenia

Użyj usługi Log Analytics, aby przetestować zapytanie przekształcania przed dodaniem go do reguły zbierania danych.

  1. Otwórz obszar roboczy w menu obszarów roboczych usługi Log Analytics w witrynie Azure Portal i wybierz pozycję Dzienniki , aby otworzyć usługę Log Analytics.

  2. Uruchom następujące zapytanie, aby wyświetlić zawartość LAQueryLogs tabeli. Zwróć uwagę na zawartość kolumny RequestContext . Przekształcenie pobierze nazwę obszaru roboczego z tej kolumny i usunie pozostałe dane w niej.

    LAQueryLogs
    | take 10
    

    Zrzut ekranu przedstawiający początkowe zapytanie w usłudze Log Analytics.

  3. Zmodyfikuj zapytanie w następujący sposób:

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

    Spowoduje to następujące zmiany:

    • Porzucanie wierszy związanych z wykonywaniem zapytań dotyczących samej tabeli w LAQueryLogs celu zaoszczędzenia miejsca, ponieważ te wpisy dziennika nie są przydatne.
    • Dodaj kolumnę dla nazwy obszaru roboczego, którego dotyczy zapytanie.
    • Usuń dane z kolumny, RequestContext aby zaoszczędzić miejsce.

    Zrzut ekranu przedstawiający zmodyfikowane zapytanie w usłudze Log Analytics.

  4. Wprowadź następujące zmiany w zapytaniu, aby używać go w transformacji:

    • Zamiast określać nazwę tabeli (LAQueryLogs w tym przypadku) jako źródło danych dla tego zapytania, użyj słowa kluczowego source . Jest to tabela wirtualna, która zawsze reprezentuje dane przychodzące w zapytaniu przekształcenia.
    • Usuń wszystkie operatory, które nie są obsługiwane przez zapytania przekształcania. Zobacz Obsługiwane funkcje języka KQL, aby uzyskać szczegółową listę obsługiwanych operatorów.
    • Spłaszczanie zapytania do pojedynczego wiersza, aby można było dopasować je do formatu JSON dcR.

    Poniżej przedstawiono zapytanie, które będzie używane w transformacji po tych modyfikacjach:

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

Tworzenie reguły zbierania danych (DCR)

Ponieważ jest to pierwsze przekształcenie w obszarze roboczym, należy utworzyć przekształcenie obszaru roboczego DCR. Jeśli tworzysz przekształcenia obszaru roboczego dla innych tabel w tym samym obszarze roboczym, muszą one być przechowywane w tym samym kontrolerze domeny.

  1. W polu wyszukiwania witryny Azure Portal wpisz szablon, a następnie wybierz pozycję Wdróż szablon niestandardowy.

    Zrzut ekranu przedstawiający wdrażanie szablonu niestandardowego.

  2. Kliknij pozycję Utwórz własny szablon w edytorze.

    Zrzut ekranu przedstawiający tworzenie szablonu w edytorze.

  3. Wklej poniższy szablon usługi Resource Manager do edytora, a następnie kliknij przycisk Zapisz. Ten szablon definiuje kontroler domeny i zawiera zapytanie przekształcenia. Nie musisz modyfikować tego szablonu, ponieważ będzie on zbierał wartości dla jego parametrów.

    Zrzut ekranu przedstawiający edytowanie szablonu usługi Resource Manager.

    {
        "$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 ekranie Wdrożenie niestandardowe określ subskrypcję i grupę zasobów do przechowywania reguły zbierania danych, a następnie podaj wartości zdefiniowane w szablonie. Obejmuje to nazwę reguły zbierania danych i identyfikator zasobu obszaru roboczego zebrany w poprzednim kroku. Lokalizacja powinna być tą samą lokalizacją co obszar roboczy. Region zostanie już wypełniony i będzie używany do lokalizacji reguły zbierania danych.

    Zrzut ekranu przedstawiający edytowanie niestandardowych wartości wdrożenia.

  5. Kliknij pozycję Przejrzyj i utwórz , a następnie pozycję Utwórz po przejrzeniu szczegółów.

  6. Po zakończeniu wdrażania rozwiń pole Szczegóły wdrożenia i kliknij regułę zbierania danych, aby wyświetlić jego szczegóły. Kliknij pozycję Widok JSON.

    Zrzut ekranu przedstawiający szczegóły reguły zbierania danych.

  7. Skopiuj identyfikator zasobu dla reguły zbierania danych. Użyjesz tego w następnym kroku.

    Zrzut ekranu przedstawiający widok JSON reguły zbierania danych.

Ostatnim krokiem umożliwiającym włączenie transformacji jest połączenie kontrolera domeny z obszarem roboczym.

Ważne

Obszar roboczy można połączyć tylko z pojedynczym kontrolerem domeny, a połączony kontroler domeny musi zawierać ten obszar roboczy jako miejsce docelowe.

Użyj interfejsu API aktualizacji obszarów roboczych , aby skonfigurować tabelę przy użyciu poniższego kodu programu PowerShell.

  1. Kliknij przycisk Cloud Shell, aby ponownie otworzyć usługę Cloud Shell . Skopiuj poniższy kod programu PowerShell i zastąp parametry wartościami obszaru roboczego i kontrolera domeny.

    $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. Wklej kod w wierszu polecenia usługi Cloud Shell, aby go uruchomić.

    Zrzut ekranu przedstawiający skrypt umożliwiający połączenie obszaru roboczego z usługą DCR.

Testowanie transformacji

Poczekaj około 30 minut na zastosowanie przekształcenia, a następnie możesz ją przetestować, uruchamiając zapytanie względem tabeli. Dotyczy to tylko danych wysyłanych do tabeli po zastosowaniu przekształcenia.

Na potrzeby tego samouczka uruchom kilka przykładowych zapytań, aby wysłać dane do LAQueryLogs tabeli. Uwzględnij niektóre zapytania, LAQueryLogs aby sprawdzić, czy przekształcenia filtruje te rekordy. Zwróć uwagę, że dane wyjściowe zawierają nową Workspace_CF kolumnę i nie ma żadnych rekordów dla elementu LAQueryLogs.

Rozwiązywanie problemów

W tej sekcji opisano różne warunki błędu, które mogą zostać odebrane i jak je poprawić.

Funkcja IntelliSense w usłudze Log Analytics nie rozpoznaje nowych kolumn w tabeli

Aktualizacja pamięci podręcznej obsługującej funkcję IntelliSense może potrwać do 24 godzin.

Przekształcanie w kolumnie dynamicznej nie działa

Obecnie istnieje znany problem wpływający na kolumny dynamiczne. Tymczasowe obejście polega na jawnym przeanalizowaniu danych kolumn dynamicznych przy użyciu parse_json() polecenia przed wykonaniem jakichkolwiek operacji na nich.

Następne kroki