Udostępnij za pośrednictwem


Samouczek: wysyłanie danych do usługi Azure Monitor przy użyciu interfejsu API pozyskiwania dzienników (szablony usługi Resource Manager)

Interfejs API pozyskiwania dzienników w usłudze Azure Monitor umożliwia wysyłanie niestandardowych danych do obszaru roboczego usługi Log Analytics. W tym samouczku użyto szablonów usługi Azure Resource Manager (szablonów usługi ARM), aby zapoznać się z konfiguracją składników wymaganych do obsługi interfejsu API, a następnie udostępnia przykładową aplikację przy użyciu interfejsu API REST i bibliotek klienckich dla platform .NET, Go, Java, JavaScript i Python.

Uwaga

W tym samouczku użyto szablonów usługi ARM do skonfigurowania składników wymaganych do obsługi interfejsu API pozyskiwania dzienników. Zobacz Samouczek: wysyłanie danych do dzienników usługi Azure Monitor przy użyciu interfejsu API pozyskiwania dzienników (Azure Portal), aby zapoznać się z podobnym samouczkiem, który używa interfejsu użytkownika witryny Azure Portal do konfigurowania tych składników.

Kroki wymagane do skonfigurowania interfejsu API pozyskiwania dzienników są następujące:

  1. Utwórz aplikację Firmy Microsoft Entra w celu uwierzytelnienia względem interfejsu API.
  2. Utwórz tabelę niestandardową w obszarze roboczym usługi Log Analytics. Jest to tabela, do której będziesz wysyłać dane.
  3. Utwórz regułę zbierania danych (DCR), aby skierować dane do tabeli docelowej.
  4. Nadaj aplikacji Microsoft Entra dostęp do kontrolera domeny.
  5. Zobacz Przykładowy kod do wysyłania danych do usługi Azure Monitor przy użyciu interfejsu API pozyskiwania dzienników, aby uzyskać przykładowy kod do wysyłania danych przy użyciu interfejsu API pozyskiwania dzienników.

Uwaga

Ten artykuł zawiera opcje korzystania z punktu końcowego pozyskiwania dcR lub punktu końcowego zbierania danych (DCE). Możesz wybrać użytkownika jedną z nich, ale kontroler domeny jest wymagany z interfejsem API pozyskiwania dzienników, jeśli jest używany link prywatny. Zobacz Kiedy jest wymagany kontroler domeny?.

Wymagania wstępne

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

Zbieranie szczegółów obszaru roboczego

Zacznij od zebrania informacji potrzebnych w obszarze roboczym.

Przejdź do obszaru roboczego w menu Obszarów roboczych usługi Log Analytics w witrynie Azure Portal. Na stronie Właściwości skopiuj identyfikator zasobu i zapisz go do późniejszego użycia.

Zrzut ekranu przedstawiający identyfikator zasobu obszaru roboczego.

Tworzenie aplikacji Microsoft Entra

Zacznij od zarejestrowania aplikacji Firmy Microsoft Entra w celu uwierzytelnienia w interfejsie API. Każdy schemat uwierzytelniania usługi Resource Manager jest obsługiwany, ale ten samouczek jest zgodny ze schematem przepływu udzielania poświadczeń klienta.

  1. W menu Microsoft Entra ID w witrynie Azure Portal wybierz pozycję Rejestracje aplikacji> Nowa rejestracja.

    Zrzut ekranu przedstawiający ekran rejestracji aplikacji.

  2. Nadaj aplikacji nazwę i zmień zakres dzierżawy, jeśli wartość domyślna nie jest odpowiednia dla danego środowiska. Identyfikator URI przekierowania nie jest wymagany.

    Zrzut ekranu przedstawiający szczegóły aplikacji.

  3. Po rejestracji możesz wyświetlić szczegóły aplikacji. Zanotuj identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawy). Te wartości będą potrzebne w dalszej części procesu.

    Zrzut ekranu przedstawiający identyfikator aplikacji.

  4. Wygeneruj wpis tajny klienta aplikacji podobny do tworzenia hasła do użycia z nazwą użytkownika. Wybierz pozycję Certyfikaty i wpisy tajne>Nowy klucz tajny klienta. Nadaj wpisowi tajnemu nazwę, aby zidentyfikować jej przeznaczenie i wybrać czas trwania Wygasa . Opcja 12 miesięcy jest zaznaczona tutaj. W przypadku implementacji produkcyjnej należy postępować zgodnie z najlepszymi rozwiązaniami dotyczącymi procedury rotacji wpisów tajnych lub użyć bardziej bezpiecznego trybu uwierzytelniania, takiego jak certyfikat.

    Zrzut ekranu przedstawiający wpis tajny nowej aplikacji.

  5. Wybierz pozycję Dodaj , aby zapisać wpis tajny, a następnie zanotuj wartość. Upewnij się, że rejestrujesz tę wartość, ponieważ nie można jej odzyskać po opuszczeniu tej strony. Użyj tych samych środków zabezpieczeń, co w przypadku bezpiecznego przechowywania hasła, ponieważ jest to funkcjonalny odpowiednik.

    Zrzut ekranu przedstawiający wartość wpisu tajnego dla nowej aplikacji.

Tworzenie punktu końcowego zbierania danych

Kontroler domeny nie jest wymagany, jeśli używasz punktu końcowego pozyskiwania dcR.

Tworzenie nowej tabeli w obszarze roboczym usługi Log Analytics

Przed wysłaniem do niej danych należy utworzyć tabelę niestandardową. Tabela dla tego samouczka będzie zawierać pięć kolumn pokazanych w poniższym schemacie. Właściwości name, typei description są obowiązkowe dla każdej kolumny. Właściwości i obie wartości isHidden domyślne, false jeśli nie zostaną jawnie isDefaultDisplay określone. Możliwe typy danych to string, , int, reallongdateTimeboolean, , guidi .dynamic

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. Do wykonania tych wywołań można użyć dowolnej innej prawidłowej metody.

Ważne

Tabele niestandardowe muszą używać sufiksu _CL.

  1. Wybierz 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 zmienne w parametrze Path odpowiednimi wartościami obszaru roboczego w poleceniu Invoke-AzRestMethod . Wklej go w wierszu polecenia usługi Cloud Shell, aby go uruchomić.

    $tableParams = @'
    {
        "properties": {
            "schema": {
                "name": "MyTable_CL",
                "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "datetime",
                        "description": "The time at which the data was generated"
                    },
                   {
                        "name": "Computer",
                        "type": "string",
                        "description": "The computer that generated the data"
                    },
                    {
                        "name": "AdditionalContext",
                        "type": "dynamic",
                        "description": "Additional message properties"
                    },
                    {
                        "name": "CounterName",
                        "type": "string",
                        "description": "Name of the counter"
                    },
                    {
                        "name": "CounterValue",
                        "type": "real",
                        "description": "Value collected for the counter"
                    }
                ]
            }
        }
    }
    '@
    
    Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2022-10-01" -Method PUT -payload $tableParams
    

Tworzenie reguły zbierania danych

Kontroler domeny definiuje sposób obsługi danych po ich odebraniu. Obejmuje to:

  • Schemat danych wysyłanych do punktu końcowego
  • Przekształcenie , które zostanie zastosowane do danych przed wysłaniem ich do obszaru roboczego
  • Docelowy obszar roboczy i tabela przekształcone dane zostaną wysłane do
  1. W polu wyszukiwania witryny Azure Portal wprowadź szablon , a następnie wybierz pozycję Wdróż szablon niestandardowy.

    Zrzut ekranu przedstawiający sposób wdrażania szablonu niestandardowego.

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

    Zrzut ekranu przedstawiający sposób tworzenia szablonu w edytorze.

  3. Wklej następujący szablon usługi ARM do edytora, a następnie wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający sposób edytowania szablonu usługi ARM.

    Zwróć uwagę na następujące szczegóły w kontrolerze domeny zdefiniowanym w tym szablonie:

    • streamDeclarations: definicje kolumn danych przychodzących.
    • destinations: Docelowy obszar roboczy.
    • dataFlows: pasuje do strumienia z docelowym obszarem roboczym i określa zapytanie przekształcenia i tabelę docelową. Dane wyjściowe zapytania docelowego są wysyłane do tabeli docelowej.
    {
        "$schema": "https://schema.management.azure.com/schemas/2019-08-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",
                "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": "2023-03-11",
                "kind": "Direct",
                "properties": {
                    "streamDeclarations": {
                        "Custom-MyTableRawData": {
                            "columns": [
                                {
                                    "name": "Time",
                                    "type": "datetime"
                                },
                                {
                                    "name": "Computer",
                                    "type": "string"
                                },
                                {
                                    "name": "AdditionalContext",
                                    "type": "string"
                                },
                                {
                                    "name": "CounterName",
                                    "type": "string"
                                },
                                {
                                    "name": "CounterValue",
                                    "type": "real"
                                }
                            ]
                        }
                    },
                    "destinations": {
                        "logAnalytics": [
                            {
                                "workspaceResourceId": "[parameters('workspaceResourceId')]",
                                "name": "myworkspace"
                            }
                        ]
                    },
                    "dataFlows": [
                        {
                            "streams": [
                                "Custom-MyTableRawData"
                            ],
                            "destinations": [
                                "myworkspace"
                            ],
                            "transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, CounterName=tostring(jsonContext.CounterName), CounterValue=toreal(jsonContext.CounterValue)",
                            "outputStream": "Custom-MyTable_CL"
                        }
                    ]
                }
            }
        ],
        "outputs": {
            "dataCollectionRuleId": {
                "type": "string",
                "value": "[resourceId('Microsoft.Insights/dataCollectionRules', parameters('dataCollectionRuleName'))]"
            }
        }
    }
    

  1. Na ekranie Wdrożenie niestandardowe określ subskrypcję i grupę zasobów do przechowywania kontrolera domeny. Następnie podaj wartości zdefiniowane w szablonie. Wartości obejmują nazwę kontrolera domeny i identyfikator zasobu obszaru roboczego, który został 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 kontrolera domeny.

    Zrzut ekranu przedstawiający sposób edytowania niestandardowych wartości wdrożenia.

  2. Wybierz pozycję Przejrzyj i utwórz , a następnie wybierz pozycję Utwórz po przejrzeniu szczegółów.

  3. Po zakończeniu wdrażania rozwiń pole Szczegóły wdrożenia i wybierz kontroler domeny, aby wyświetlić jego szczegóły. Wybierz pozycję Widok JSON.

    Zrzut ekranu przedstawiający szczegóły kontrolera domeny.

  4. Skopiuj identyfikator niezmienialny i identyfikator URI pozyskiwania dzienników dla kontrolera DOMENY. Będą one używane podczas wysyłania danych do usługi Azure Monitor przy użyciu interfejsu API.

    Zrzut ekranu przedstawiający widok JSON dcR.

Przypisywanie uprawnień do kontrolera domeny

Po utworzeniu kontrolera domeny aplikacja musi mieć do niej uprawnienia. Uprawnienie umożliwi wszystkim aplikacjom używanie poprawnego identyfikatora aplikacji i klucza aplikacji do wysyłania danych do nowego kontrolera domeny.

  1. W usłudze DCR w witrynie Azure Portal wybierz pozycję Kontrola dostępu (IAM)>Dodaj przypisanie roli.

    Zrzut ekranu przedstawiający dodawanie niestandardowego przypisania roli do usługi DCR.

  2. Wybierz pozycję Wydawca metryk monitorowania i wybierz przycisk Dalej. Zamiast tego można utworzyć akcję niestandardową z akcją Microsoft.Insights/Telemetry/Write danych.

    Zrzut ekranu przedstawiający wybieranie roli przypisania roli DCR.

  3. Wybierz pozycję Użytkownik, grupa lub jednostka usługi dla pozycji Przypisz dostęp do , a następnie wybierz pozycję Wybierz członków. Wybierz utworzoną aplikację, a następnie wybierz pozycję Wybierz.

    Zrzut ekranu przedstawiający wybieranie członków przypisania roli DCR.

  4. Wybierz pozycję Przejrzyj i przypisz i zweryfikuj szczegóły przed zapisaniem przypisania roli.

    Zrzut ekranu przedstawiający zapisywanie przypisania roli DCR.

Przykładowy kod

Zobacz Przykładowy kod do wysyłania danych do usługi Azure Monitor przy użyciu interfejsu API pozyskiwania dzienników, aby uzyskać przykładowy kod przy użyciu składników utworzonych w tym samouczku.

Następne kroki