Delen via


Gegevens exporteren uit een Log Analytics-werkruimte naar een opslagaccount met behulp van Logic Apps

In dit artikel wordt een methode beschreven voor het gebruik van Azure Logic Apps om query's uit te voeren op gegevens uit een Log Analytics-werkruimte in Azure Monitor en deze naar Azure Storage te verzenden. Gebruik dit proces wanneer u uw Azure Monitor-logboekgegevens wilt exporteren voor controle- en nalevingsscenario's of als u wilt toestaan dat een andere service deze gegevens ophaalt.

Andere exportmethoden

De methode die in dit artikel wordt besproken, beschrijft een geplande export vanuit een logboekquery met behulp van een logische app. Andere opties voor het exporteren van gegevens voor bepaalde scenario's zijn:

Overzicht

Deze procedure maakt gebruik van de Azure Monitor Logs-connector, waarmee u een logboekquery kunt uitvoeren vanuit een logische app en de uitvoer ervan kunt gebruiken in andere acties in de werkstroom. De Azure Blob Storage-connector wordt in deze procedure gebruikt om de queryuitvoer naar de opslag te verzenden.

Screenshot that shows a Logic Apps overview.

Wanneer u gegevens uit een Log Analytics-werkruimte exporteert, beperkt u de hoeveelheid gegevens die door uw Logic Apps-werkstroom worden verwerkt. Filter en aggreger uw logboekgegevens in de query om de vereiste gegevens te verminderen. Als u bijvoorbeeld aanmeldingsgebeurtenissen wilt exporteren, filtert u op vereiste gebeurtenissen en projectt u alleen de vereiste velden. Bijvoorbeeld:

SecurityEvent
| where EventID == 4624 or EventID == 4625
| project TimeGenerated , Account , AccountType , Computer

Wanneer u de gegevens volgens een planning exporteert, gebruikt u de ingestion_time() functie in uw query om ervoor te zorgen dat u geen gegevens mist die te laat binnenkomen. Als gegevens worden vertraagd vanwege netwerk- of platformproblemen, zorgt het gebruik van de opnametijd ervoor dat gegevens worden opgenomen in de volgende Logic Apps-uitvoering. Zie voor een voorbeeld de stap 'Actie Azure Monitor-logboeken toevoegen' in de sectie Logic Apps-procedure .

Vereisten

De volgende vereisten moeten worden voltooid voordat u met deze procedure begint:

  • Log Analytics-werkruimte: de gebruiker die de logische app maakt, moet ten minste leesmachtigingen hebben voor de werkruimte.
  • Opslagaccount: het opslagaccount hoeft zich niet in hetzelfde abonnement te bevinden als uw Log Analytics-werkruimte. De gebruiker die de logische app maakt, moet schrijfmachtigingen hebben voor het opslagaccount.

Verbinding maken orlimieten

Log Analytics-werkruimte- en logboekquery's in Azure Monitor zijn multitenancyservices met limieten voor het beveiligen en isoleren van klanten en het onderhouden van de kwaliteit van de service. Wanneer u een query uitvoert op een grote hoeveelheid gegevens, moet u rekening houden met de volgende limieten, die van invloed kunnen zijn op de wijze waarop u het Logic Apps-terugkeerpatroon en uw logboekquery configureert:

  • Logboekquery's kunnen niet meer dan 500.000 rijen retourneren.
  • Logboekquery's kunnen niet meer dan 64.000.000 bytes retourneren.
  • Logboekquery's kunnen niet langer dan 10 minuten worden uitgevoerd.
  • De Log Analytics-connector is beperkt tot 100 aanroepen per minuut.

Logic Apps-procedure

In de volgende secties doorloopt u de procedure.

Een container maken in het opslagaccount

Gebruik de procedure in Een container maken om een container toe te voegen aan uw opslagaccount om de geëxporteerde gegevens op te slaan. De naam die wordt gebruikt voor de container in dit artikel is loganalytics-gegevens, maar u kunt elke naam gebruiken.

Een werkstroom voor een logische app maken

  1. Ga naar Logic Apps in Azure Portal en selecteer Toevoegen. Selecteer een abonnement, resourcegroep en regio om de nieuwe logische app op te slaan. Geef het vervolgens een unieke naam. U kunt de Log Analytics-instelling inschakelen voor het verzamelen van informatie over runtimegegevens en gebeurtenissen, zoals beschreven in Azure Monitor-logboeken instellen en diagnostische gegevens verzamelen voor Azure Logic Apps. Deze instelling is niet vereist voor het gebruik van de Azure Monitor-logboekconnector.

    Screenshot that shows creating a logic app.

  2. Selecteer Controleren en maken en selecteer vervolgens Maken. Nadat de implementatie is voltooid, selecteert u Ga naar de resource om logic apps Designer te openen.

Een trigger voor de werkstroom maken

Selecteer Terugkeerpatroon onder Beginnen met een algemene trigger. Met deze instelling maakt u een werkstroom voor logische apps die automatisch met een regelmatig interval wordt uitgevoerd. Selecteer Dag in het vak Frequentie van de actie. Voer in het vak Interval één keer per dag 1 in om de werkstroom uit te voeren.

Screenshot that shows a Recurrence action.

Een actie Azure Monitor-logboeken toevoegen

Met de actie Logboeken van Azure Monitor kunt u de query opgeven die moet worden uitgevoerd. De logboekquery die in dit voorbeeld wordt gebruikt, is geoptimaliseerd voor terugkeerpatroon per uur. Hiermee worden de gegevens verzameld die zijn opgenomen voor de specifieke uitvoeringstijd. Als de werkstroom bijvoorbeeld wordt uitgevoerd om 4:35, is het tijdsbereik 3:00 tot 4:00 uur. Als u de logische app wijzigt zodat deze met een andere frequentie wordt uitgevoerd, moet u ook de query wijzigen. Als u bijvoorbeeld het terugkeerpatroon instelt om dagelijks uit te voeren, stelt startTime u in de query startofday(make_datetime(year,month,day,0,0))in op .

U wordt gevraagd om een tenant te selecteren om toegang te verlenen tot de Log Analytics-werkruimte met het account dat door de werkstroom wordt gebruikt om de query uit te voeren.

  1. Selecteer + Nieuwe stap om een actie toe te voegen die wordt uitgevoerd na de terugkeeractie. Voer onder Kies een actie Azure Monitor in. Selecteer vervolgens Azure Monitor-logboeken.

    Screenshot that shows an Azure Monitor Logs action.

  2. Selecteer Azure Log Analytics: query- en lijstresultaten uitvoeren.

    Screenshot that shows Azure Monitor Logs is highlighted under Choose an action.

  3. Selecteer het abonnement en de resourcegroep voor uw Log Analytics-werkruimte. Selecteer Log Analytics-werkruimte voor het resourcetype. Selecteer vervolgens de naam van de werkruimte onder Resourcenaam.

  4. Voeg de volgende logboekquery toe aan het queryvenster :

    let dt = now();
    let year = datetime_part('year', dt);
    let month = datetime_part('month', dt);
    let day = datetime_part('day', dt);
     let hour = datetime_part('hour', dt);
    let startTime = make_datetime(year,month,day,hour,0)-1h;
    let endTime = startTime + 1h - 1tick;
    AzureActivity
    | where ingestion_time() between(startTime .. endTime)
    | project 
        TimeGenerated,
        BlobTime = startTime, 
        OperationName ,
        OperationNameValue ,
        Level ,
        ActivityStatus ,
        ResourceGroup ,
        SubscriptionId ,
        Category ,
        EventSubmissionTimestamp ,
        ClientIpAddress = parse_json(HTTPRequest).clientIpAddress ,
        ResourceId = _ResourceId 
    
  5. Het tijdsbereik geeft de records op die worden opgenomen in de query op basis van de kolom TimeGenerated . De waarde moet groter zijn dan het tijdsbereik dat in de query is geselecteerd. Omdat deze query niet de kolom TimeGenerated gebruikt, is de optie Instellen in query niet beschikbaar. Zie Querybereik voor meer informatie over het tijdsbereik. Selecteer Afgelopen 4 uur voor het tijdsbereik. Deze instelling zorgt ervoor dat records met een opnametijd die groter is dan TimeGenerated , worden opgenomen in de resultaten.

    Screenshot that shows the settings for the new Azure Monitor Logs action named Run query and visualize results.

Een JSON-actie parseren toevoegen (optioneel)

De uitvoer van de actie Query uitvoeren en lijstresultaten is opgemaakt in JSON. U kunt deze gegevens parseren en bewerken als onderdeel van de voorbereiding voor de actie Opstellen .

U kunt een JSON-schema opgeven waarin de nettolading wordt beschreven die u verwacht te ontvangen. De ontwerper parseert JSON-inhoud met behulp van dit schema en genereert gebruiksvriendelijke tokens die de eigenschappen in uw JSON-inhoud vertegenwoordigen. U kunt deze eigenschappen vervolgens eenvoudig raadplegen en gebruiken in de werkstroom van uw logische app.

U kunt een voorbeelduitvoer van de query uitvoeren en de lijstresultatenstap gebruiken.

  1. Selecteer Trigger uitvoeren op het lint van Logic Apps. Selecteer vervolgens Uitvoeren en downloaden en sla een uitvoerrecord op. Voor de voorbeeldquery in de vorige stam kunt u de volgende voorbeelduitvoer gebruiken:

    {
        "TimeGenerated": "2020-09-29T23:11:02.578Z",
        "BlobTime": "2020-09-29T23:00:00Z",
        "OperationName": "Returns Storage Account SAS Token",
        "OperationNameValue": "MICROSOFT.RESOURCES/DEPLOYMENTS/WRITE",
        "Level": "Informational",
        "ActivityStatus": "Started",
        "ResourceGroup": "monitoring",
        "SubscriptionId": "00000000-0000-0000-0000-000000000000",
        "Category": "Administrative",
        "EventSubmissionTimestamp": "2020-09-29T23:11:02Z",
        "ClientIpAddress": "192.168.1.100",
        "ResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/monitoring/providers/microsoft.storage/storageaccounts/my-storage-account"
    }
    
  2. Selecteer + Nieuwe stap en selecteer vervolgens + Een actie toevoegen. Voer onder Kies een bewerking json in en selecteer JSON parseren.

    Screenshot that shows selecting a Parse JSON operator.

  3. Selecteer het vak Inhoud om een lijst met waarden uit eerdere activiteiten weer te geven. Selecteer Hoofdtekst in de actie Query uitvoeren en resultaten weergeven . Deze uitvoer is afkomstig van de logboekquery.

    Screenshot that shows selecting a Body.

  4. Kopieer de voorbeeldrecord die u eerder hebt opgeslagen. Selecteer Voorbeeldpayload gebruiken om een schema te genereren en plakken.

    Screenshot that shows parsing a JSON payload.

De actie Opstellen toevoegen

Met de actie Opstellen wordt de geparseerde JSON-uitvoer uitgevoerd en wordt het object gemaakt dat u in de blob moet opslaan.

  1. Selecteer + Nieuwe stap en selecteer vervolgens + Een actie toevoegen. Voer onder Kies een bewerking opstellen in. Selecteer vervolgens de actie Opstellen .

    Screenshot that shows selecting a Compose action.

  2. Selecteer het invoervak om een lijst met waarden uit eerdere activiteiten weer te geven. Selecteer Hoofdtekst in de actie JSON parseren. Deze geparseerde uitvoer is afkomstig van de logboekquery.

    Screenshot that shows selecting a body for a Compose action.

De actie Blob maken toevoegen

Met de actie Blob maken wordt de samengestelde JSON naar de opslag geschreven.

  1. Selecteer + Nieuwe stap en selecteer vervolgens + Een actie toevoegen. Voer onder Kies een bewerking de blob in. Selecteer vervolgens de actie Blob maken.

    Screenshot that shows selecting the Create Blob action.

  2. Voer een naam in voor de verbinding met uw opslagaccount in Verbinding maken ionnaam. Selecteer vervolgens het mappictogram in het vak Mappad om de container in uw opslagaccount te selecteren. Selecteer blobnaam om een lijst met waarden uit eerdere activiteiten weer te geven. Selecteer Expressie en voer een expressie in die overeenkomt met uw tijdsinterval. Voor deze query, die elk uur wordt uitgevoerd, wordt met de volgende expressie de blobnaam per vorig uur ingesteld:

    subtractFromTime(formatDateTime(utcNow(),'yyyy-MM-ddTHH:00:00'), 1,'Hour')
    

    Screenshot that shows a blob expression.

  3. Selecteer het vak Blob-inhoud om een lijst met waarden uit eerdere activiteiten weer te geven. Selecteer vervolgens Uitvoer in de sectie Opstellen .

    Screenshot that shows creating a blob expression.

De werkstroom testen

Selecteer Uitvoeren om de werkstroom te testen. Als de werkstroom fouten bevat, worden deze aangegeven in de stap met het probleem. U kunt de uitvoeringen bekijken en inzoomen op elke stap om de invoer en uitvoer weer te geven om fouten te onderzoeken. Zie Indien nodig problemen met werkstromen in Azure Logic Apps oplossen en diagnosticeren.

Screenshot that shows Runs history.

Logboeken weergeven in opslag

Ga naar het menu Opslagaccounts in Azure Portal en selecteer uw opslagaccount. Selecteer de tegel Blobs. Selecteer vervolgens de container die u hebt opgegeven in de actie Blob maken. Selecteer een van de blobs en selecteer vervolgens Blob bewerken.

Screenshot that shows blob data.

Sjabloon voor logische app

De optionele JSON-stap parseren is niet opgenomen in de sjabloon

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Compose": {
                "inputs": "@body('Run_query_and_list_results')",
                "runAfter": {
                    "Run_query_and_list_results": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "Create_blob_(V2)": {
                "inputs": {
                    "body": "@outputs('Compose')",
                    "headers": {
                        "ReadFileMetadataFromServer": true
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azureblob']['connectionId']"
                        }
                    },
                    "method": "post",
                    "path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('AccountNameFromSettings'))}/files",
                    "queries": {
                        "folderPath": "/logicappexport",
                        "name": "@{utcNow()}",
                        "queryParametersSingleEncoded": true
                    }
                },
                "runAfter": {
                    "Compose": [
                        "Succeeded"
                    ]
                },
                "runtimeConfiguration": {
                    "contentTransfer": {
                        "transferMode": "Chunked"
                    }
                },
                "type": "ApiConnection"
            },
            "Run_query_and_list_results": {
                "inputs": {
                    "body": "let dt = now();\nlet year = datetime_part('year', dt);\nlet month = datetime_part('month', dt);\nlet day = datetime_part('day', dt);\n let hour = datetime_part('hour', dt);\nlet startTime = make_datetime(year,month,day,hour,0)-1h;\nlet endTime = startTime + 1h - 1tick;\nAzureActivity\n| where ingestion_time() between(startTime .. endTime)\n| project \n    TimeGenerated,\n    BlobTime = startTime, \n    OperationName ,\n    OperationNameValue ,\n    Level ,\n    ActivityStatus ,\n    ResourceGroup ,\n    SubscriptionId ,\n    Category ,\n    EventSubmissionTimestamp ,\n    ClientIpAddress = parse_json(HTTPRequest).clientIpAddress ,\n    ResourceId = _ResourceId ",
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['azuremonitorlogs']['connectionId']"
                        }
                    },
                    "method": "post",
                    "path": "/queryData",
                    "queries": {
                        "resourcegroups": "resource-group-name",
                        "resourcename": "workspace-name",
                        "resourcetype": "Log Analytics Workspace",
                        "subscriptions": "workspace-subscription-id",
                        "timerange": "Set in query"
                    }
                },
                "runAfter": {},
                "type": "ApiConnection"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {
            "$connections": {
                "defaultValue": {},
                "type": "Object"
            }
        },
        "triggers": {
            "Recurrence": {
                "evaluatedRecurrence": {
                    "frequency": "Day",
                    "interval": 1
                },
                "recurrence": {
                    "frequency": "Day",
                    "interval": 1
                },
                "type": "Recurrence"
            }
        }
    },
    "parameters": {
        "$connections": {
            "value": {
                "azureblob": {
                    "connectionId": "/subscriptions/logic-app-subscription-id/resourceGroups/logic-app-resource-group-name/providers/Microsoft.Web/connections/blob-connection-name",
                    "connectionName": "blob-connection-name",
                    "id": "/subscriptions/logic-app-subscription-id/providers/Microsoft.Web/locations/canadacentral/managedApis/azureblob"
                },
                "azuremonitorlogs": {
                    "connectionId": "/subscriptions/blob-connection-name/resourceGroups/logic-app-resource-group-name/providers/Microsoft.Web/connections/azure-monitor-logs-connection-name",
                    "connectionName": "azure-monitor-logs-connection-name",
                    "id": "/subscriptions/blob-connection-name/providers/Microsoft.Web/locations/canadacentral/managedApis/azuremonitorlogs"
                }
            }
        }
    }
}

Volgende stappen