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:
- Ha adatokat szeretne exportálni a Log Analytics-munkaterületről egy tárfiókba vagy az Azure Event Hubsba, használja az Azure Monitor-naplók Log Analytics-munkaterület adatexportálási funkcióját. Tekintse meg a Log Analytics-munkaterület adatexportálást az Azure Monitorban.
- Egyszeri exportálás logikai alkalmazással. Lásd: Azure Monitor Logs-összekötő a Logic Appshez.
- Egyszeri exportálás helyi gépre PowerShell-szkripttel. Lásd: Invoke-AzOperational Elemzések QueryExport.
Á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.
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
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.
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.
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 startTime
startofday(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.
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.
Az Azure Log Analytics kiválasztása – Lekérdezések futtatása és találatok listázása.
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.
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
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.
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.
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" }
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.
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.
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.
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.
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.
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.
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.
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.
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')
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.
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.
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.
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.