Adatok exportálása Log Analytics-munkaterületről tárfiókba a Logic Apps használatával

Ez a cikk azt a módszert ismerteti, amely segítségével az Azure Logic Apps segítségével adatokat kérdezhet le egy Log Analytics-munkaterületről az Azure Monitorban, és elküldheti azokat az Azure Storage-ba. Ezt a folyamatot akkor használja, ha az Azure Monitor-naplók adatait auditálási és megfelelőségi forgatókönyvekhez kell exportálnia, vagy engedélyeznie kell, hogy egy másik szolgáltatás lekérje ezeket az adatokat.

Egyéb exportálási módszerek

A cikkben ismertetett módszer egy napló lekérdezésből logikai alkalmazással végzett ütemezett exportálást ír le. Az adatok adott forgatókönyvek esetében történő exportálásának további lehetőségei a következők:

Áttekintés

Ez az eljárás az Azure Monitor Logs-összekötőt használja, amellyel napló lekérdezést futtathat egy logikai alkalmazásból, és a kimenetét a munkafolyamat más műveleteiben is használhatja. Ebben az eljárásban az Azure Blob Storage-összekötő használatával küldi el a lekérdezés kimenetét a tárolóba.

Screenshot that shows a Logic Apps overview.

Amikor adatokat exportál egy Log Analytics-munkaterületről, korlátozza a Logic Apps-munkafolyamat által feldolgozott adatok mennyiségét. Szűrje és összesítse a naplóadatokat a lekérdezésben a szükséges adatok csökkentése érdekében. Ha például bejelentkezési eseményeket szeretne exportálni, szűrjön a szükséges eseményekre, és csak a szükséges mezőket vetje ki. Például:

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

Ha ütemezés szerint exportálja az adatokat, a ingestion_time() lekérdezésben található függvénnyel győződjön meg arról, hogy nem marad le a későn érkező adatokról. Ha az adatok hálózati vagy platformproblémák miatt késnek, a betöltési idő használatával biztosítható, hogy az adatok szerepelni tudjanak a Logic Apps következő végrehajtásában. Például tekintse meg az "Azure Monitor-naplók hozzáadása művelet" lépést a Logic Apps eljárás szakaszában.

Előfeltételek

Az eljárás megkezdése előtt a következő előfeltételeknek kell teljesülniük:

  • Log Analytics-munkaterület: A logikai alkalmazást létrehozó felhasználónak legalább olvasási engedéllyel kell rendelkeznie a munkaterülethez.
  • Tárfiók: A tárfióknak nem kell ugyanabban az előfizetésben lennie, mint a Log Analytics-munkaterületnek. A logikai alkalmazást létrehozó felhasználónak írási engedéllyel kell rendelkeznie a tárfiókhoz.

Csatlakozás or korlátai

A Log Analytics-munkaterületek és napló lekérdezések az Azure Monitorban olyan több-bérlős szolgáltatások, amelyek korlátokat tartalmaznak az ügyfelek védelmére és elkülönítésére, valamint a szolgáltatásminőség fenntartására. Nagy mennyiségű adat lekérdezésekor vegye figyelembe a következő korlátozásokat, amelyek hatással lehetnek a Logic Apps ismétlődésének és a napló lekérdezésének konfigurálására:

  • A napló lekérdezései legfeljebb 500 000 sort adhatnak vissza.
  • A napló lekérdezései legfeljebb 64 000 000 bájtot adhatnak vissza.
  • A napló lekérdezései nem futhatnak 10 percnél tovább.
  • A Log Analytics-összekötő legfeljebb 100 hívást indíthat percenként.

Logic Apps-eljárás

Az alábbi szakaszok végigvezetik az eljáráson.

Tároló létrehozása a tárfiókban

Az exportált adatok tárolásához használja a Tároló létrehozása parancsot, ha tárolót ad hozzá a tárfiókhoz. A cikkben szereplő tároló neve loganalytics-data, de bármilyen nevet használhat.

Logikai alkalmazás munkafolyamatának létrehozása

  1. Nyissa meg a Logic Appst az Azure Portalon, és válassza a Hozzáadás lehetőséget. Válasszon ki egy előfizetést, erőforráscsoportot és régiót az új logikai alkalmazás tárolásához. Ezután adjon neki egy egyedi nevet. Bekapcsolhatja a Log Analytics beállítást, hogy információkat gyűjtsön a futtatókörnyezeti adatokról és eseményekről az Azure Monitor-naplók beállítása és az Azure Logic Apps diagnosztikai adatainak gyűjtéséhez. Ez a beállítás nem szükséges az Azure Monitor Logs-összekötő használatához.

    Screenshot that shows creating a logic app.

  2. Válassza az Áttekintés + létrehozás, majd a Létrehozás lehetőséget. Az üzembe helyezés befejezése után válassza az Erőforrás megnyitása lehetőséget a Logic Apps Tervező megnyitásához.

Eseményindító létrehozása a munkafolyamathoz

A Kezdés egy gyakori eseményindítóval csoportban válassza az Ismétlődés lehetőséget. Ez a beállítás létrehoz egy logikaialkalmazás-munkafolyamatot, amely automatikusan, rendszeres időközönként fut. A művelet Gyakoriság mezőjében válassza a Nap lehetőséget. Az Intervallum mezőbe írja be az 1 értéket a munkafolyamat napi egyszeri futtatásához.

Screenshot that shows a Recurrence action.

Azure Monitor-naplók hozzáadása művelet

Az Azure Monitor Naplók művelete lehetővé teszi a futtatni kívánt lekérdezés megadását. A példában használt napló lekérdezés óránkénti ismétlődésre van optimalizálva. Összegyűjti az adott végrehajtási időre betöltött adatokat. Ha például a munkafolyamat 4:35-kor fut, az időtartomány 3:00 és 4:00 között lesz. Ha úgy módosítja a logikai alkalmazást, hogy más gyakorisággal fusson, a lekérdezést is módosítania kell. Ha például az ismétlődés napi futását állítja be, akkor a lekérdezésben a következőt kell beállítania startTimestartofday(make_datetime(year,month,day,0,0)): .

A rendszer arra kéri, hogy válasszon ki egy bérlőt, amely hozzáférést biztosít a Log Analytics-munkaterülethez azzal a fiókkal, amelyet a munkafolyamat a lekérdezés futtatásához használni fog.

  1. Válassza az + Új lépés lehetőséget egy olyan művelet hozzáadásához, amely az ismétlődési művelet után fut. A Művelet kiválasztása csoportban adja meg az Azure Monitort. Ezután válassza az Azure Monitor-naplók lehetőséget.

    Screenshot that shows an Azure Monitor Logs action.

  2. Az Azure Log Analytics kiválasztása – Lekérdezések futtatása és találatok listázása.

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

  3. Válassza ki a Log Analytics-munkaterület előfizetését és erőforráscsoportját . Válassza ki az erőforrástípushoz tartozó Log Analytics-munkaterületet. Ezután válassza ki a munkaterület nevét az Erőforrás neve területen.

  4. Adja hozzá a következő napló lekérdezést a Lekérdezés ablakhoz:

    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. Az időtartomány azokat a rekordokat adja meg, amelyeket a lekérdezés a TimeGenerated oszlop alapján fog tartalmazni. Az értéknek nagyobbnak kell lennie, mint a lekérdezésben kijelölt időtartomány. Mivel ez a lekérdezés nem a TimeGenerated oszlopot használja, a Beállítás lekérdezésbenbeállítás nem érhető el. Az időtartományról további információt a Lekérdezés hatóköre című témakörben talál. Válassza az Utolsó 4 óra lehetőséget az időtartományhoz. Ez a beállítás biztosítja, hogy a TimeGeneratednél nagyobb betöltési idővel rendelkező rekordok bekerülnek az eredményekbe.

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

JSON-elemzési művelet hozzáadása (nem kötelező)

A Lekérdezés futtatása és a listaeredmények művelet kimenete JSON formátumban van formázva. Ezeket az adatokat elemezheti és módosíthatja a Compose művelet előkészítése részeként.

Megadhat egy JSON-sémát, amely leírja a várható hasznos adatokat. A tervező ezzel a sémával elemzi a JSON-tartalmat, és felhasználóbarát jogkivonatokat hoz létre, amelyek a JSON-tartalom tulajdonságait képviselik. Ezután egyszerűen hivatkozhat és használhatja ezeket a tulajdonságokat a logikai alkalmazás munkafolyamatában.

A Lekérdezés futtatása és a találatok listázása lépésből mintakimenetet használhat.

  1. Válassza az Eseményindító futtatása lehetőséget a Logic Apps menüszalagon. Ezután válassza a Futtatás és letöltés lehetőséget, és mentsen egy kimeneti rekordot. Az előző szárban lévő minta lekérdezéshez a következő mintakimenetet használhatja:

    {
        "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. Válassza az + Új lépés, majd a + Művelet hozzáadása lehetőséget. A Művelet kiválasztása csoportban adja meg a json értéket, majd válassza a JSON elemzése lehetőséget.

    Screenshot that shows selecting a Parse JSON operator.

  3. A Tartalom mező kiválasztásával megjelenítheti az előző tevékenységek értékeinek listáját. Válassza ki a Törzs lehetőséget a Lekérdezés futtatása és a találatok listázása műveletből. Ez a kimenet a napló lekérdezéséből származik.

    Screenshot that shows selecting a Body.

  4. Másolja ki a korábban mentett mintarekordot. Válassza a Minta hasznos adatok használata séma létrehozásához és beillesztéséhez lehetőséget.

    Screenshot that shows parsing a JSON payload.

A Compose művelet hozzáadása

A Compose művelet végrehajtja az elemezett JSON-kimenetet, és létrehozza a blobban tárolni kívánt objektumot.

  1. Válassza az + Új lépés, majd a + Művelet hozzáadása lehetőséget. A Művelet kiválasztása csoportban adja meg a szövegírást. Ezután válassza a Compose műveletet.

    Screenshot that shows selecting a Compose action.

  2. A Bemenetek mezőre kattintva megjelenítheti az előző tevékenységek értékeinek listáját. Válassza ki a Törzs lehetőséget a JSON-elemzési műveletből. Ez az elemzési kimenet a napló lekérdezéséből származik.

    Screenshot that shows selecting a body for a Compose action.

Blob létrehozása művelet hozzáadása

A Blob létrehozása művelet a létrehozott JSON-t a tárolóba írja.

  1. Válassza az + Új lépés, majd a + Művelet hozzáadása lehetőséget. A Művelet kiválasztása csoportban adja meg a blobot. Ezután válassza a Blob létrehozása műveletet.

    Screenshot that shows selecting the Create Blob action.

  2. Adja meg a tárfiókhoz való kapcsolat nevét a Csatlakozás ion Név mezőben. Ezután a Mappa elérési útja mezőben válassza ki a tárolót a tárfiókban. A Blob neve lehetőséget választva megtekintheti az előző tevékenységek értékeinek listáját. Válassza a Kifejezés lehetőséget, és adjon meg egy, az időintervallumnak megfelelő kifejezést. Az óránként futtatott lekérdezéshez az alábbi kifejezés állítja be a blob nevét az előző órában:

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

    Screenshot that shows a blob expression.

  3. A Blob tartalommezőt választva megjelenítheti az előző tevékenységek értékeinek listáját. Ezután válassza a Kimenetek lehetőséget a Compose szakaszban.

    Screenshot that shows creating a blob expression.

A munkafolyamat tesztelése

A munkafolyamat teszteléséhez válassza a Futtatás lehetőséget. Ha a munkafolyamat hibái vannak, a probléma a lépésben jelenik meg. Megtekintheti a végrehajtásokat, és az egyes lépésekbe behatolással megtekintheti a bemenetet és a kimenetet a hibák kivizsgálásához. Ha szükséges, tekintse meg az Azure Logic Apps munkafolyamat-hibáinak hibaelhárítását és diagnosztizálását.

Screenshot that shows Runs history.

Naplók megtekintése a tárolóban

Nyissa meg a Tárfiókok menüt az Azure Portalon, és válassza ki a tárfiókot. Válassza ki a Blobs csempét. Ezután válassza ki a blob létrehozása műveletben megadott tárolót. Jelölje ki az egyik blobot, majd válassza a Blob szerkesztése lehetőséget.

Screenshot that shows blob data.

Logikai alkalmazássablon

Az opcionális JSON-elemzési lépés nem szerepel a sablonban

{
    "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"
                }
            }
        }
    }
}

Következő lépések

  • További információ a napló lekérdezéseiről az Azure Monitorban.
  • További tudnivalók a Logic Apps szolgáltatásról
  • További információ a Power Automate-ről.