Zelfstudie: Gegevens verzenden naar Azure Monitor met behulp van logboekopname-API (Resource Manager-sjablonen)

Met de Logboekopname-API in Azure Monitor kunt u aangepaste gegevens verzenden naar een Log Analytics-werkruimte. In deze zelfstudie wordt gebruikgemaakt van Azure Resource Manager-sjablonen (ARM-sjablonen) om de configuratie te doorlopen van de onderdelen die nodig zijn voor de ondersteuning van de API en biedt vervolgens een voorbeeldtoepassing met behulp van zowel de REST API als clientbibliotheken voor .NET, Go, Java, JavaScript en Python.

Notitie

In deze zelfstudie worden ARM-sjablonen gebruikt om de vereiste onderdelen te configureren voor de ondersteuning van de LOGBOEKopname-API. Zie Zelfstudie: Gegevens verzenden naar Azure Monitor-logboeken met logboekopname-API (Azure Portal) voor een vergelijkbare zelfstudie die gebruikmaakt van de gebruikersinterface van Azure Portal om deze onderdelen te configureren.

De stappen die nodig zijn om de logboekopname-API te configureren, zijn als volgt:

  1. Maak een Microsoft Entra-toepassing om te verifiëren bij de API.
  2. Maak een eindpunt voor gegevensverzameling (DCE) om gegevens te ontvangen.
  3. Maak een aangepaste tabel in een Log Analytics-werkruimte. Dit is de tabel waarnaar u gegevens verzendt.
  4. Maak een regel voor gegevensverzameling (DCR) om de gegevens naar de doeltabel te leiden.
  5. Geef de Microsoft Entra-toepassing toegang tot de DCR.
  6. Zie Voorbeeldcode voor het verzenden van gegevens naar Azure Monitor met behulp van logboekopname-API voor voorbeeldcode voor het verzenden van gegevens naar de logboekopname-API.

Vereisten

U hebt het volgende nodig om deze zelfstudie te voltooien:

Werkruimtegegevens verzamelen

Begin met het verzamelen van informatie die u nodig hebt vanuit uw werkruimte.

Ga naar uw werkruimte in het menu Log Analytics-werkruimten in Azure Portal. Kopieer op de pagina Eigenschappen de resource-id en sla deze op voor later gebruik.

Schermopname van de resource-id van de werkruimte.

Microsoft Entra-toepassing maken

Begin met het registreren van een Microsoft Entra-toepassing om te verifiëren bij de API. Elk Resource Manager-verificatieschema wordt ondersteund, maar in deze zelfstudie wordt het schema clientreferentiestroom gevolgd.

  1. Selecteer in het menu Microsoft Entra ID in Azure Portal App-registraties> Nieuwe registratie.

    Schermopname van het scherm voor app-registratie.

  2. Geef de toepassing een naam en wijzig het tenantbereik als de standaardwaarde niet geschikt is voor uw omgeving. Een omleidings-URI is niet vereist.

    Schermopname van app-details.

  3. Na de registratie kunt u de details van de toepassing bekijken. Noteer de toepassings-id (client) en de map-id (tenant). U hebt deze waarden later in het proces nodig.

    Schermopname van de app-id.

  4. Genereer een clientgeheim van een toepassing. Dit is vergelijkbaar met het maken van een wachtwoord voor gebruik met een gebruikersnaam. Selecteer Certificaten en geheimen>Nieuw clientgeheim. Geef het geheim een naam om het doel ervan te identificeren en selecteer de duur verloopt . De optie 12 maanden is hier geselecteerd. Voor een productie-implementatie volgt u de aanbevolen procedures voor een procedure voor het rouleren van geheimen of gebruikt u een veiligere verificatiemodus, zoals een certificaat.

    Schermopname van het geheim voor de nieuwe app.

  5. Selecteer Toevoegen om het geheim op te slaan en noteer de waarde. Zorg ervoor dat u deze waarde opneemt omdat u deze niet kunt herstellen nadat u deze pagina hebt verlaten. Gebruik dezelfde beveiligingsmaatregelen als voor het bewaren van een wachtwoord, omdat dit het functionele equivalent is.

    Schermopname van de geheime waarde voor de nieuwe app.

Eindpunt voor gegevensverzameling maken

Een DCE is vereist om de gegevens te accepteren die naar Azure Monitor worden verzonden. Nadat u de DCE hebt geconfigureerd en deze hebt gekoppeld aan een DCR, kunt u gegevens verzenden via HTTP vanuit uw toepassing. De DCE moet zich in dezelfde regio bevinden als de DCR en de Log Analytics-werkruimte waar de gegevens worden verzonden.

  1. Voer in het zoekvak van Azure Portal een sjabloon in en selecteer vervolgens Een aangepaste sjabloon implementeren.

    Schermopname van het implementeren van een aangepaste sjabloon.

  2. Selecteer Bouw uw eigen sjabloon in de editor.

    Schermopname van het bouwen van een sjabloon in de editor.

  3. Plak de volgende ARM-sjabloon in de editor en selecteer Opslaan. U hoeft deze sjabloon niet te wijzigen omdat u waarden voor de parameters opgeeft.

    Schermopname van het bewerken van een ARM-sjabloon.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dataCollectionEndpointName": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the name of the Data Collection Endpoint to create."
                }
            },
            "location": {
                "type": "string",
                "defaultValue": "westus2",
                "metadata": {
                    "description": "Specifies the location for the Data Collection Endpoint."
                }
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionEndpoints",
                "name": "[parameters('dataCollectionEndpointName')]",
                "location": "[parameters('location')]",
                "apiVersion": "2021-04-01",
                "properties": {
                    "networkAcls": {
                    "publicNetworkAccess": "Enabled"
                    }
                }
            }
        ],
        "outputs": {
            "dataCollectionEndpointId": {
                "type": "string",
                "value": "[resourceId('Microsoft.Insights/dataCollectionEndpoints', parameters('dataCollectionEndpointName'))]"
            }
        }
    }
    
  4. Geef in het scherm Aangepaste implementatie een abonnement en resourcegroep op om de DCR op te slaan en geef vervolgens waarden op zoals een naam voor de DCE. De locatie moet dezelfde locatie zijn als de werkruimte. De regio wordt al ingevuld en wordt gebruikt voor de locatie van de DCE.

    Schermopname van het bewerken van aangepaste implementatiewaarden.

  5. Selecteer Beoordelen en maken en selecteer Vervolgens Maken nadat u de details hebt bekeken.

  6. Selecteer de JSON-weergave om andere details voor de DCE weer te geven. Kopieer de resource-id en het logsIngestion-eindpunt dat u in een latere stap nodig hebt.

    Schermopname van de DCE-resource-id.

Nieuwe tabel maken in Log Analytics-werkruimte

De aangepaste tabel moet worden gemaakt voordat u er gegevens naar kunt verzenden. De tabel voor deze zelfstudie bevat vijf kolommen die worden weergegeven in het onderstaande schema. De name, typeen description eigenschappen zijn verplicht voor elke kolom. De eigenschappen isHidden en isDefaultDisplay beide false worden standaard ingesteld als deze niet expliciet zijn opgegeven. Mogelijke gegevenstypen zijnstring, , int, long, real, boolean, dateTime, , en guid.dynamic

Notitie

In deze zelfstudie wordt PowerShell van Azure Cloud Shell gebruikt om REST API-aanroepen te maken met behulp van de Azure Monitor Tables-API . U kunt elke andere geldige methode gebruiken om deze aanroepen uit te voeren.

Belangrijk

Aangepaste tabellen moeten een achtervoegsel van _CL.

  1. Selecteer de knop Cloud Shell in Azure Portal en zorg ervoor dat de omgeving is ingesteld op PowerShell.

    Schermopname van het openen van Cloud Shell.

  2. Kopieer de volgende PowerShell-code en vervang de variabelen in de parameter Path door de juiste waarden voor uw werkruimte in de Invoke-AzRestMethod opdracht. Plak deze in de Cloud Shell-prompt om deze uit te voeren.

    $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
    

Regel voor gegevensverzameling maken

De DCR definieert hoe de gegevens worden verwerkt zodra deze zijn ontvangen. Dit zijn onder andere de nieuwe mogelijkheden:

  • Schema van gegevens die naar het eindpunt worden verzonden
  • Transformatie die wordt toegepast op de gegevens voordat deze naar de werkruimte worden verzonden
  • Doelwerkruimte en tabel waarnaar de getransformeerde gegevens worden verzonden
  1. Voer in het zoekvak van Azure Portal een sjabloon in en selecteer vervolgens Een aangepaste sjabloon implementeren.

    Schermopname van het implementeren van een aangepaste sjabloon.

  2. Selecteer Bouw uw eigen sjabloon in de editor.

    Schermopname van het bouwen van een sjabloon in de editor.

  3. Plak de volgende ARM-sjabloon in de editor en selecteer Opslaan.

    Schermopname van het bewerken van een ARM-sjabloon.

    Let op de volgende details in de DCR die in deze sjabloon is gedefinieerd:

    • dataCollectionEndpointId: Resource-id van het eindpunt voor gegevensverzameling.
    • streamDeclarations: Kolomdefinities van de binnenkomende gegevens.
    • destinations: doelwerkruimte.
    • dataFlows: komt overeen met de stream met de doelwerkruimte en geeft de transformatiequery en de doeltabel op. De uitvoer van de doelquery is wat naar de doeltabel wordt verzonden.
    {
        "$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",
                "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."
                }
            },
            "endpointResourceId": {
                "type": "string",
                "metadata": {
                    "description": "Specifies the Azure resource ID of the Data Collection Endpoint to use."
                }
            }
        },
        "resources": [
            {
                "type": "Microsoft.Insights/dataCollectionRules",
                "name": "[parameters('dataCollectionRuleName')]",
                "location": "[parameters('location')]",
                "apiVersion": "2021-09-01-preview",
                "properties": {
                    "dataCollectionEndpointId": "[parameters('endpointResourceId')]",
                    "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'))]"
            }
        }
    }
    
  4. Geef in het scherm Aangepaste implementatie een abonnement en resourcegroep op om de DCR op te slaan. Geef vervolgens waarden op die zijn gedefinieerd in de sjabloon. De waarden bevatten een naam voor de DCR en de resource-id van de werkruimte die u in een vorige stap hebt verzameld. De locatie moet dezelfde locatie zijn als de werkruimte. De regio wordt al ingevuld en wordt gebruikt voor de locatie van de DCR.

    Schermopname van het bewerken van aangepaste implementatiewaarden.

  5. Selecteer Beoordelen en maken en selecteer Vervolgens Maken nadat u de details hebt bekeken.

  6. Wanneer de implementatie is voltooid, vouwt u het vak Implementatiedetails uit en selecteert u uw DCR om de details ervan weer te geven. Selecteer de JSON-weergave.

    Schermopname van DCR-details.

  7. Kopieer de onveranderbare id voor de DCR. U gebruikt deze in een latere stap wanneer u voorbeeldgegevens verzendt met behulp van de API.

    Schermopname van de DCR JSON-weergave.

    Notitie

    Alle eigenschappen van de DCR, zoals de transformatie, worden mogelijk niet weergegeven in Azure Portal, ook al is de DCR met deze eigenschappen gemaakt.

Machtigingen toewijzen aan een DCR

Nadat de DCR is gemaakt, moet de toepassing hiervoor toestemming krijgen. Met de machtiging kunnen toepassingen met de juiste toepassings-id en toepassingssleutel gegevens verzenden naar de nieuwe DCE en DCR.

  1. Selecteer in de DCR in Azure Portal toegangsbeheer (IAM)>Roltoewijzing toevoegen.

    Schermopname van het toevoegen van een aangepaste roltoewijzing aan DCR.

  2. Selecteer Monitoring Metrics Publisher en selecteer Volgende. U kunt in plaats daarvan een aangepaste actie maken met de Microsoft.Insights/Telemetry/Write gegevensactie.

    Schermopname van het selecteren van een rol voor DCR-roltoewijzing.

  3. Selecteer Gebruiker, groep of service-principal voor Toegang toewijzen aan en kies Leden selecteren. Selecteer de toepassing die u hebt gemaakt en kies Selecteren.

    Schermopname van het selecteren van leden voor de DCR-roltoewijzing.

  4. Selecteer Beoordelen en toewijzen en de details controleren voordat u uw roltoewijzing opslaat.

    Schermopname van het opslaan van de DCR-roltoewijzing.

Voorbeeldcode

Zie Voorbeeldcode voor het verzenden van gegevens naar Azure Monitor met behulp van logboekopname-API voor voorbeeldcode met behulp van de onderdelen die in deze zelfstudie zijn gemaakt.

Volgende stappen