Självstudie: Skicka data till Azure Monitor med hjälp av API för logginmatning (Resource Manager-mallar)

Med API för logginmatning i Azure Monitor kan du skicka anpassade data till en Log Analytics-arbetsyta. Den här självstudien använder Azure Resource Manager-mallar (ARM-mallar) för att gå igenom konfigurationen av de komponenter som krävs för att stödja API:et och tillhandahåller sedan ett exempelprogram med både REST API och klientbibliotek för .NET, Go, Java, JavaScript och Python.

Kommentar

I den här självstudien används ARM-mallar för att konfigurera de komponenter som krävs för att stödja API:et för logginmatning. Se Självstudie: Skicka data till Azure Monitor-loggar med API för logginmatning (Azure-portalen) för en liknande självstudiekurs som använder användargränssnittet för Azure-portalen för att konfigurera dessa komponenter.

Stegen som krävs för att konfigurera API:et för logginmatning är följande:

  1. Skapa ett Microsoft Entra-program för att autentisera mot API:et.
  2. Skapa en datainsamlingsslutpunkt (DCE) för att ta emot data.
  3. Skapa en anpassad tabell på en Log Analytics-arbetsyta. Det här är tabellen som du ska skicka data till.
  4. Skapa en datainsamlingsregel (DCR) för att dirigera data till måltabellen.
  5. Ge Microsoft Entra-programmet åtkomst till DCR.
  6. Se Exempelkod för att skicka data till Azure Monitor med hjälp av LOGS-inmatnings-API för exempelkod för att skicka data till med hjälp av API:et för logginmatning.

Förutsättningar

För att slutföra självstudierna behöver du:

Samla in information om arbetsytan

Börja med att samla in information som du behöver från din arbetsyta.

Gå till din arbetsyta på menyn Log Analytics-arbetsytor i Azure-portalen. På sidan Egenskaper kopierar du resurs-ID :t och sparar det för senare användning.

Skärmbild som visar arbetsytans resurs-ID.

Skapa Microsoft Entra-program

Börja med att registrera ett Microsoft Entra-program för att autentisera mot API:et. Alla Resource Manager-autentiseringsscheman stöds, men den här självstudien följer schemat För beviljande av klientautentiseringsuppgifter.

  1. På Menyn Microsoft Entra-ID i Azure-portalen väljer du Appregistreringar> Ny registrering.

    Skärmbild som visar skärmen för appregistrering.

  2. Ge programmet ett namn och ändra innehavaromfånget om standardvärdet inte är lämpligt för din miljö. En omdirigerings-URI krävs inte.

    Skärmbild som visar appinformation.

  3. Efter registreringen kan du visa information om programmet. Observera program-ID:t (klient)-ID:t och katalog-ID:t (klientorganisation). Du behöver dessa värden senare i processen.

    Skärmbild som visar app-ID:t.

  4. Generera en programklienthemlighet som liknar att skapa ett lösenord som ska användas med ett användarnamn. Välj Certifikat och hemligheter>Ny klienthemlighet. Ge hemligheten ett namn för att identifiera dess syfte och välj varaktigheten Upphör att gälla . Alternativet 12 månader väljs här. För en produktionsimplementering följer du metodtipsen för en hemlig rotationsprocedur eller använder ett säkrare autentiseringsläge, till exempel ett certifikat.

    Skärmbild som visar hemligheten för den nya appen.

  5. Välj Lägg till för att spara hemligheten och notera sedan Värdet. Se till att du registrerar det här värdet eftersom du inte kan återställa det när du har lämnat den här sidan. Använd samma säkerhetsåtgärder som för att skydda ett lösenord eftersom det är den funktionella motsvarigheten.

    Skärmbild som visar det hemliga värdet för den nya appen.

Skapa slutpunkt för datainsamling

En DCE krävs för att acceptera att data skickas till Azure Monitor. När du har konfigurerat DCE och länkat den till en domänkontrollant kan du skicka data via HTTP från ditt program. DCE måste finnas i samma region som DCR och Log Analytics-arbetsytan där data skickas.

  1. I sökrutan i Azure-portalen anger du mallen och väljer sedan Distribuera en anpassad mall.

    Skärmbild som visar hur du distribuerar en anpassad mall.

  2. Välj alternativet för att skapa din egen mall i redigeringsprogrammet.

    Skärmbild som visar hur du skapar en mall i redigeraren.

  3. Klistra in följande ARM-mall i redigeraren och välj sedan Spara. Du behöver inte ändra den här mallen eftersom du anger värden för dess parametrar.

    Skärmbild som visar hur du redigerar en ARM-mall.

    {
        "$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. På skärmen Anpassad distribution anger du en prenumeration och resursgrupp för att lagra DCR och anger sedan värden som ett namn för DCE. Platsen ska vara samma plats som arbetsytan. Regionen kommer redan att fyllas i och kommer att användas för platsen för DCE.

    Skärmbild för att redigera anpassade distributionsvärden.

  5. Välj Granska + skapa och välj sedan Skapa när du har granskat informationen.

  6. Välj JSON-vy för att visa annan information för DCE. Kopiera resurs-IDoch den logsIngestion-slutpunkt som du behöver i ett senare steg.

    Skärmbild som visar DCE-resurs-ID:t.

Skapa ny tabell på Log Analytics-arbetsytan

Den anpassade tabellen måste skapas innan du kan skicka data till den. Tabellen för den här självstudien innehåller fem kolumner som visas i schemat nedan. Egenskaperna name, typeoch description är obligatoriska för varje kolumn. Egenskaperna isHidden och isDefaultDisplay båda standardvärdena är false om de inte uttryckligen anges. Möjliga datatyper är string, int, long, real, boolean, dateTime, guidoch dynamic.

Kommentar

I den här självstudien används PowerShell från Azure Cloud Shell för att göra REST API-anrop med hjälp av API:et För Azure Monitor-tabeller. Du kan använda valfri annan giltig metod för att göra dessa anrop.

Viktigt!

Anpassade tabeller måste använda suffixet _CL.

  1. Välj knappen Cloud Shell i Azure-portalen och se till att miljön är inställd på PowerShell.

    Skärmbild som visar hur du öppnar Cloud Shell.

  2. Kopiera följande PowerShell-kod och ersätt variablerna i parametern Path med lämpliga värden för din arbetsyta i Invoke-AzRestMethod kommandot . Klistra in den i Cloud Shell-prompten för att köra den.

    $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
    

Skapa datainsamlingsregel

DCR definierar hur data ska hanteras när de tas emot. Detta omfattar:

  • Schema för data som skickas till slutpunkten
  • Transformering som ska tillämpas på data innan den skickas till arbetsytan
  • Målarbetsyta och tabell som transformerade data skickas till
  1. I sökrutan i Azure-portalen anger du mallen och väljer sedan Distribuera en anpassad mall.

    Skärmbild som visar hur du distribuerar en anpassad mall.

  2. Välj alternativet för att skapa din egen mall i redigeringsprogrammet.

    Skärmbild som visar hur du skapar en mall i redigeraren.

  3. Klistra in följande ARM-mall i redigeraren och välj sedan Spara.

    Skärmbild som visar hur du redigerar en ARM-mall.

    Observera följande information i DCR som definierats i den här mallen:

    • dataCollectionEndpointId: Resurs-ID för datainsamlingens slutpunkt.
    • streamDeclarations: Kolumndefinitioner för inkommande data.
    • destinations: Målarbetsyta.
    • dataFlows: Matchar strömmen med målarbetsytan och anger transformeringsfrågan och måltabellen. Utdata från målfrågan är vad som ska skickas till måltabellen.
    {
        "$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. På skärmen Anpassad distribution anger du en prenumerations- och resursgrupp för att lagra DCR. Ange sedan värden som definierats i mallen. Värdena innehåller ett namn för DCR och arbetsytans resurs-ID som du samlade in i ett tidigare steg. Platsen ska vara samma plats som arbetsytan. Regionen kommer redan att fyllas i och kommer att användas för platsen för DCR.

    Skärmbild som visar hur du redigerar anpassade distributionsvärden.

  5. Välj Granska + skapa och välj sedan Skapa när du har granskat informationen.

  6. När distributionen är klar expanderar du rutan Distributionsinformation och väljer din DCR för att visa dess information. Välj JSON-vy.

    Skärmbild som visar DCR-information.

  7. Kopiera det oföränderliga ID :t för DCR. Du använder den i ett senare steg när du skickar exempeldata med hjälp av API:et.

    Skärmbild som visar DCR JSON-vyn.

    Kommentar

    Alla egenskaper för DCR, till exempel omvandlingen, kanske inte visas i Azure-portalen trots att DCR har skapats med dessa egenskaper.

Tilldela behörigheter till en DCR

När DCR har skapats måste programmet ges behörighet till det. Behörighet tillåter alla program som använder rätt program-ID och programnyckel för att skicka data till den nya DCE och DCR.

  1. Från DCR i Azure-portalen väljer du Åtkomstkontroll (IAM)>Lägg till rolltilldelning.

    Skärmbild som visar hur du lägger till en anpassad rolltilldelning i DCR.

  2. Välj Monitoring Metrics Publisher (Övervaka måttutgivare ) och välj Nästa. Du kan i stället skapa en anpassad åtgärd med dataåtgärden Microsoft.Insights/Telemetry/Write .

    Skärmbild som visar hur du väljer en roll för DCR-rolltilldelning.

  3. Välj Användare, grupp eller tjänstens huvudnamn för Tilldela åtkomst till och välj Välj medlemmar. Välj det program som du skapade och välj Välj.

    Skärmbild som visar hur du väljer medlemmar för DCR-rolltilldelningen.

  4. Välj Granska + tilldela och verifiera informationen innan du sparar rolltilldelningen.

    Skärmbild som visar hur du sparar DCR-rolltilldelningen.

Exempelkod

Se Exempelkod för att skicka data till Azure Monitor med hjälp av LOGGinmatnings-API för exempelkod med hjälp av komponenterna som skapades i den här självstudien.

Nästa steg