Export dat z pracovního prostoru služby Log Analytics do účtu úložiště s využitím Logic Apps
Tento článek popisuje metodu použití Azure Logic Apps k dotazování dat z pracovního prostoru služby Log Analytics ve službě Azure Monitor a jejich odeslání do Azure Storage. Tento proces použijte v případě, že potřebujete exportovat data protokolů služby Azure Monitor pro scénáře auditování a dodržování předpisů nebo povolit načtení těchto dat jinou službou.
Další metody exportu
Metoda popisovaná v tomto článku popisuje naplánovaný export z dotazu protokolu pomocí aplikace logiky. Mezi další možnosti exportu dat pro konkrétní scénáře patří:
- Pokud chcete exportovat data z pracovního prostoru služby Log Analytics do účtu úložiště nebo do služby Azure Event Hubs, použijte funkci exportu dat pracovního prostoru služby Log Analytics protokolů služby Azure Monitor. Viz Export dat pracovního prostoru služby Log Analytics ve službě Azure Monitor.
- Jednorázový export pomocí aplikace logiky. Viz konektor protokolů služby Azure Monitor pro Logic Apps.
- Jednorázový export do místního počítače pomocí skriptu PowerShellu Viz Invoke-AzOperationalInsightsQueryExport.
Přehled
Tento postup používá konektor protokolů služby Azure Monitor, který umožňuje spustit dotaz protokolu z aplikace logiky a použít jeho výstup v jiných akcích pracovního postupu. Konektor Azure Blob Storage se v tomto postupu používá k odeslání výstupu dotazu do úložiště.
Při exportu dat z pracovního prostoru služby Log Analytics omezte množství dat zpracovávaných pracovním postupem Logic Apps. Vyfiltrujte a agregujte data protokolu v dotazu, abyste snížili požadovaná data. Pokud například potřebujete exportovat události přihlášení, vyfiltrujte požadované události a vyfiltrujte pouze požadovaná pole. Příklad:
SecurityEvent
| where EventID == 4624 or EventID == 4625
| project TimeGenerated , Account , AccountType , Computer
Při exportu dat podle plánu použijte ingestion_time()
funkci v dotazu, abyste měli jistotu, že nezmeškáte data s pozdním příchodem. Pokud jsou data zpožděná kvůli problémům se sítí nebo platformou, pomocí doby příjmu dat zajistíte, že se data zahrnou do dalšího spuštění Logic Apps. Příklad najdete v kroku Přidání akce protokolů služby Azure Monitor v části procedury Logic Apps.
Požadavky
Před zahájením tohoto postupu je nutné splnit následující požadavky:
- Pracovní prostor Služby Log Analytics: Uživatel, který vytváří aplikaci logiky, musí mít k pracovnímu prostoru alespoň oprávnění ke čtení.
- Účet úložiště: Účet úložiště nemusí být ve stejném předplatném jako váš pracovní prostor služby Log Analytics. Uživatel, který vytváří aplikaci logiky, musí mít oprávnění k zápisu do účtu úložiště.
Omezení konektorů
Pracovní prostor služby Log Analytics a dotazy na protokoly ve službě Azure Monitor jsou víceklientské služby, které zahrnují omezení ochrany a izolace zákazníků a zachování kvality služeb. Při dotazování na velké množství dat zvažte následující omezení, která můžou ovlivnit konfiguraci opakování Logic Apps a dotazu protokolu:
- Dotazy protokolu nemůžou vracet více než 500 000 řádků.
- Dotazy protokolu nemůžou vracet více než 64 000 000 bajtů.
- Dotazy protokolu nemůžou běžet déle než 10 minut.
- Konektor Log Analytics je omezený na 100 volání za minutu.
Procedura Logic Apps
Následující části vás provedou postupem.
Vytvoření kontejneru v účtu úložiště
Pomocí postupu v části Vytvoření kontejneru přidejte kontejner do účtu úložiště pro uložení exportovaných dat. Název použitý pro kontejner v tomto článku je loganalytics-data, ale můžete použít libovolný název.
Vytvoření pracovního postupu aplikace logiky
Na webu Azure Portal přejděte na Logic Apps a vyberte Přidat. Vyberte předplatné, skupinu prostředků a oblast, do které chcete uložit novou aplikaci logiky. Pak ho pojmenujte jedinečným názvem. Nastavení Log Analytics můžete zapnout, abyste shromáždili informace o datech a událostech modulu runtime, jak je popsáno v tématu Nastavení protokolů služby Azure Monitor a shromažďování diagnostických dat pro Azure Logic Apps. Toto nastavení se nevyžaduje pro použití konektoru protokolů služby Azure Monitor.
Vyberte Zkontrolovat a vytvořit a potom Vytvořit. Po dokončení nasazení vyberte Přejít k prostředku a otevřete Návrhář pro Logic Apps.
Vytvoření triggeru pro pracovní postup
V části Začít s běžným triggerem vyberte Opakování. Toto nastavení vytvoří pracovní postup aplikace logiky, který se automaticky spustí v pravidelných intervalech. V poli Frekvence akce vyberte Den. Do pole Interval zadejte 1, aby se pracovní postup spustil jednou denně.
Přidání akce protokolů služby Azure Monitor
Akce protokolů služby Azure Monitor umožňuje zadat dotaz, který se má spustit. Dotaz protokolu použitý v tomto příkladu je optimalizovaný pro hodinové opakování. Shromažďuje data ingestované pro konkrétní dobu provádění. Pokud se například pracovní postup spustí ve 4:35, bude časový rozsah 3:00 až 4:00. Pokud změníte aplikaci logiky tak, aby běžela s jinou frekvencí, musíte také změnit dotaz. Pokud například nastavíte opakování tak, aby se spouštěla denně, nastavíte startTime
v dotazu hodnotu startofday(make_datetime(year,month,day,0,0))
.
Zobrazí se výzva k výběru tenanta pro udělení přístupu k pracovnímu prostoru služby Log Analytics pomocí účtu, který pracovní postup použije ke spuštění dotazu.
Vyberte + Nový krok a přidejte akci, která se spustí po akci opakování. V části Zvolit akci zadejte azure monitor. Pak vyberte protokoly služby Azure Monitor.
Vyberte Azure Log Analytics – Spusťte výsledky dotazu a seznamu.
Vyberte předplatné a skupinu prostředků pro váš pracovní prostor služby Log Analytics. Jako typ prostředku vyberte pracovní prostor služby Log Analytics. Pak v části Název prostředku vyberte název pracovního prostoru.
Do okna Dotazu přidejte následující dotaz protokolu:
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
Časový rozsah určuje záznamy, které budou zahrnuty do dotazu na základě sloupce TimeGenerated . Hodnota by měla být větší než časový rozsah vybraný v dotazu. Vzhledem k tomu, že tento dotaz nepoužívá sloupec TimeGenerated , není možnost Nastavit v dotazu dostupná. Další informace o časovém rozsahu najdete v tématu Rozsah dotazu. Pro časový rozsah vyberte Posledních 4 hodin. Toto nastavení zajistí, že do výsledků budou zahrnuty všechny záznamy s časem příjmu dat delším než TimeGenerated .
Přidání akce Parsovat JSON (volitelné)
Výstup akce Spustit dotaz a výsledky seznamu je formátovaný ve formátu JSON. Tato data můžete analyzovat a manipulovat s nimi v rámci přípravy na akci Vytvořit .
Můžete zadat schéma JSON, které popisuje datovou část, kterou očekáváte. Návrhář analyzuje obsah JSON pomocí tohoto schématu a generuje uživatelsky přívětivé tokeny, které představují vlastnosti v obsahu JSON. Tyto vlastnosti pak můžete snadno odkazovat a používat v rámci pracovního postupu aplikace logiky.
Můžete použít ukázkový výstup z kroku Spustit dotaz a zobrazit seznam výsledků .
Na pásu karet Logic Apps vyberte Spustit trigger . Pak vyberte Spustit a stáhnout a uložit výstupní záznam. Pro ukázkový dotaz v předchozím kmeni můžete použít následující ukázkový výstup:
{ "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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e", "Category": "Administrative", "EventSubmissionTimestamp": "2020-09-29T23:11:02Z", "ClientIpAddress": "192.168.1.100", "ResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/monitoring/providers/microsoft.storage/storageaccounts/my-storage-account" }
Vyberte + Nový krok a pak vyberte + Přidat akci. V části Zvolit operaci zadejte json a pak vyberte Parsovat JSON.
Výběrem pole Obsah zobrazte seznam hodnot z předchozích aktivit. V akci Spustit dotaz a výsledky seznamu vyberte text. Tento výstup pochází z dotazu protokolu.
Zkopírujte ukázkový záznam uložený dříve. Vyberte Použít ukázkovou datovou část k vygenerování schématu a vložení.
Přidání akce Vytvořit
Akce Vytvořit provede analyzovaný výstup JSON a vytvoří objekt, který potřebujete uložit do objektu blob.
Vyberte + Nový krok a pak vyberte + Přidat akci. V části Zvolit operaci zadejte psaní. Pak vyberte akci Vytvořit .
Výběrem pole Vstupy zobrazíte seznam hodnot z předchozích aktivit. V akci Parsovat JSON vyberte text. Tento analyzovaný výstup pochází z dotazu protokolu.
Přidání akce Vytvořit objekt blob
Akce Vytvořit objekt blob zapíše složený JSON do úložiště.
Vyberte + Nový krok a pak vyberte + Přidat akci. V části Zvolit operaci zadejte objekt blob. Pak vyberte akci Vytvořit objekt blob .
Do názvu připojení zadejte název připojení k vašemu účtu úložiště. Potom v poli Cesta ke složce vyberte kontejner v účtu úložiště. Výběrem názvu objektu blob zobrazíte seznam hodnot z předchozích aktivit. Vyberte Výraz a zadejte výraz, který odpovídá vašemu časovému intervalu. Pro tento dotaz, který se spouští každou hodinu, nastaví následující výraz název objektu blob za předchozí hodinu:
subtractFromTime(formatDateTime(utcNow(),'yyyy-MM-ddTHH:00:00'), 1,'Hour')
Výběrem pole obsahu objektu blob zobrazte seznam hodnot z předchozích aktivit. Pak vyberte Výstupy v oddílu Vytvořit .
Test pracovního postupu
Pokud chcete pracovní postup otestovat, vyberte Spustit. Pokud pracovní postup obsahuje chyby, jsou uvedené v kroku s problémem. Můžete zobrazit spuštění a přejít k podrobnostem jednotlivých kroků, abyste zobrazili vstup a výstup a prozkoumali selhání. V případě potřeby si prohlédnou téma Řešení potíží a diagnostika selhání pracovního postupu v Azure Logic Apps.
Zobrazení protokolů v úložišti
Na webu Azure Portal přejděte do nabídky Účty úložiště a vyberte svůj účet úložiště. Vyberte dlaždici Objekty blob. Pak vyberte kontejner, který jste zadali v akci Vytvořit objekt blob . Vyberte jeden z objektů blob a pak vyberte Upravit objekt blob.
Šablona aplikace logiky
Volitelný krok Parsovat JSON není součástí šablony.
{
"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"
}
}
}
}
}
Další kroky
- Přečtěte si další informace o dotazech protokolu ve službě Azure Monitor.
- Další informace o Logic Apps.
- Přečtěte si další informace o Power Automate.