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.
W menu obszarów roboczych usługi Log Analytics w witrynie Azure Portal wybierz pozycję Ustawienia diagnostyczne, a następnie pozycję Dodaj ustawienie diagnostyczne.
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.
Wybierz pozycję Dzienniki , a następnie uruchom kilka zapytań, aby wypełnić
LAQueryLogs
niektóre dane. Te zapytania nie muszą faktycznie zwracać żadnych danych.
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.
Kliknij przycisk Cloud Shell w witrynie Azure Portal i upewnij się, że środowisko jest ustawione na program PowerShell.
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
Wklej kod w wierszu polecenia usługi Cloud Shell, aby go uruchomić.
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.
Definiowanie zapytania przekształcenia
Użyj usługi Log Analytics, aby przetestować zapytanie przekształcania przed dodaniem go do reguły zbierania danych.
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.
Uruchom następujące zapytanie, aby wyświetlić zawartość
LAQueryLogs
tabeli. Zwróć uwagę na zawartość kolumnyRequestContext
. Przekształcenie pobierze nazwę obszaru roboczego z tej kolumny i usunie pozostałe dane w niej.LAQueryLogs | take 10
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.
- Porzucanie wierszy związanych z wykonywaniem zapytań dotyczących samej tabeli w
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 kluczowegosource
. 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 = ''
- Zamiast określać nazwę tabeli (
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.
W polu wyszukiwania witryny Azure Portal wpisz szablon, a następnie wybierz pozycję Wdróż szablon niestandardowy.
Kliknij pozycję Utwórz własny szablon w edytorze.
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.
{ "$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'))]" } } }
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.
Kliknij pozycję Przejrzyj i utwórz , a następnie pozycję Utwórz po przejrzeniu szczegółów.
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.
Skopiuj identyfikator zasobu dla reguły zbierania danych. Użyjesz tego w następnym kroku.
Łączenie obszaru roboczego z kontrolerem domeny
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.
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
Wklej kod w wierszu polecenia usługi Cloud Shell, aby go uruchomić.
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.