Mantıksal uygulama kullanarak Verileri Log Analytics çalışma alanından Azure depolamaya arşivleme
Bu makalede, Azure İzleyici'deki Log Analytics çalışma alanından verileri sorgulamak ve Azure Depolama'ya göndermek için Azure Logic Apps'i kullanma yöntemi açıklanmaktadır. Denetim ve uyumluluk senaryoları için Azure İzleyici Günlükleri verilerinizi dışarı aktarmanız veya başka bir hizmetin bu verileri almasına izin vermeniz gerektiğinde bu işlemi kullanın.
Diğer dışarı aktarma yöntemleri
Bu makalede açıklanan yöntem, mantıksal uygulama kullanarak günlük sorgusundan zamanlanmış dışarı aktarmayı açıklar. Belirli senaryolar için verileri dışarı aktarmaya yönelik diğer seçenekler şunlardır:
- Log Analytics çalışma alanınızdan bir depolama hesabına veya Azure Event Hubs'a veri aktarmak için Azure İzleyici Günlükleri'nin Log Analytics çalışma alanı verilerini dışarı aktarma özelliğini kullanın. Bkz. Azure İzleyici'de Log Analytics çalışma alanı verilerini dışarı aktarma.
- Mantıksal uygulama kullanarak tek seferlik dışarı aktarma. Bkz . Logic Apps için Azure İzleyici Günlükleri bağlayıcısı.
- PowerShell betiği kullanarak yerel makineye tek seferlik dışarı aktarma. Bkz . Invoke-AzOperationalInsightsQueryExport.
Genel bakış
Bu yordam, bir mantıksal uygulamadan günlük sorgusu çalıştırmanıza ve çıkışını iş akışındaki diğer eylemlerde kullanmanıza olanak tanıyan Azure İzleyici Günlükleri bağlayıcısını kullanır. Azure Blob Depolama bağlayıcısı bu yordamda sorgu çıkışını depolama alanına göndermek için kullanılır.
Log Analytics çalışma alanından verileri dışarı aktardığınızda Logic Apps iş akışınız tarafından işlenen veri miktarını sınırlayın. Gerekli verileri azaltmak için sorgudaki günlük verilerinizi filtreleyin ve birleştirin. Örneğin, oturum açma olaylarını dışarı aktarmanız gerekiyorsa, gerekli olayları filtreleyin ve yalnızca gerekli alanları yansıtın. Örneğin:
SecurityEvent
| where EventID == 4624 or EventID == 4625
| project TimeGenerated , Account , AccountType , Computer
Verileri bir zamanlamaya göre dışarı aktardığınızda, geç gelen verileri kaçırmadığınızdan emin olmak için sorgunuzdaki işlevini kullanın ingestion_time()
. Veriler ağ veya platform sorunları nedeniyle gecikirse, veri alımı süresinin kullanılması verilerin bir sonraki Logic Apps yürütmesine dahil edilmesini sağlar. Bir örnek için Logic Apps yordamı bölümündeki "Azure İzleyici Günlükleri Ekle eylemi" adımına bakın.
Önkoşullar
Bu yordama başlamadan önce aşağıdaki önkoşulların tamamlanması gerekir:
- Log Analytics çalışma alanı: Mantıksal uygulamayı oluşturan kullanıcının çalışma alanında en azından okuma izni olmalıdır.
- Depolama hesabı: Depolama hesabının Log Analytics çalışma alanınızla aynı abonelikte olması gerekmez. Mantıksal uygulamayı oluşturan kullanıcının depolama hesabına yazma izni olmalıdır.
Bağlayıcı sınırları
Azure İzleyici'deki Log Analytics çalışma alanı ve günlük sorguları, müşterileri korumak ve yalıtmak ve hizmet kalitesini korumak için sınırlar içeren çok kiracılı hizmetlerdir. Büyük miktarda veri için sorgu yaptığınızda, Logic Apps yinelenme biçimini ve günlük sorgunuzu nasıl yapılandırabileceğinizi etkileyebilecek aşağıdaki sınırları göz önünde bulundurun:
- Günlük sorguları 500.000'den fazla satır döndüremez.
- Günlük sorguları 64.000.000 bayttan fazlasını döndüremez.
- Günlük sorguları 10 dakikadan uzun süre çalışamaz.
- Log Analytics bağlayıcısı dakikada 100 çağrı ile sınırlıdır.
Logic Apps yordamı
Aşağıdaki bölümlerde yordamda size yol gösterir.
Depolama hesabında kapsayıcı oluşturma
Dışarı aktarılan verileri barındırmak üzere depolama hesabınıza kapsayıcı eklemek için Kapsayıcı oluşturma bölümünde verilen yordamı kullanın. Bu makalede kapsayıcı için kullanılan ad loganalytics-data'dır, ancak herhangi bir adı kullanabilirsiniz.
Mantıksal uygulama iş akışı oluşturma
Azure portalında Logic Apps'e gidin ve Ekle'yi seçin. Yeni mantıksal uygulamayı depolamak için bir Abonelik, Kaynak grubu ve Bölge seçin. Ardından benzersiz bir ad verin. Azure İzleyici Günlüklerini ayarlama ve Azure Logic Apps için tanılama verilerini toplama başlığı altında açıklandığı gibi çalışma zamanı verileri ve olayları hakkında bilgi toplamak için Log Analytics ayarını açabilirsiniz. Bu ayar, Azure İzleyici Günlükleri bağlayıcısını kullanmak için gerekli değildir.
Gözden Geçir + oluştur’u ve sonra da Oluştur’u seçin. Dağıtım tamamlandıktan sonra Kaynağa git'i seçerek Logic Apps Tasarımcısı'nı açın.
İş akışı için tetikleyici oluşturma
Ortak tetikleyiciyle başla'nın altında Yinelenme'yi seçin. Bu ayar, düzenli aralıklarla otomatik olarak çalışan bir mantıksal uygulama iş akışı oluşturur. Eylemin Sıklık kutusunda Gün'e tıklayın. Aralık kutusuna iş akışını günde bir kez çalıştırmak için 1 girin.
Azure İzleyici Günlükleri eylemi ekleme
Azure İzleyici Günlükleri eylemi, çalıştırılacak sorguyu belirtmenize olanak tanır. Bu örnekte kullanılan günlük sorgusu saatlik yineleme için iyileştirilmiştir. Belirli bir yürütme süresi için alınan verileri toplar. Örneğin, iş akışı 4:35'te çalışıyorsa zaman aralığı 3:00 ile 4:00 arasında olabilir. Mantıksal uygulamayı farklı bir sıklıkta çalışacak şekilde değiştirirseniz, sorguyu da değiştirmeniz gerekir. Örneğin, yinelenmeyi günlük çalışacak şekilde ayarlarsanız, sorguda olarak startofday(make_datetime(year,month,day,0,0))
ayarlarsınızstartTime
.
İş akışının sorguyu çalıştırmak için kullanacağı hesapla Log Analytics çalışma alanına erişim vermek için bir kiracı seçmeniz istenir.
Yinelenme eyleminden sonra çalışan bir eylem eklemek için + Yeni adım'ı seçin. Eylem seçin bölümüne azure izleyicisi girin. Ardından Azure İzleyici Günlükleri'ne tıklayın.
Azure Log Analytics – Sorguyu çalıştır ve sonuçları listele'yi seçin.
Log Analytics çalışma alanınız için Abonelik ve Kaynak Grubu'na tıklayın. Kaynak Türü için Log Analytics Çalışma Alanı'nı seçin. Ardından Kaynak Adı'nın altındaki çalışma alanı adını seçin.
Sorgu penceresine aşağıdaki günlük sorgusunu ekleyin:
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
Zaman Aralığı, TimeGenerated sütununa göre sorguya dahil edilecek kayıtları belirtir. Değer, sorguda seçilen zaman aralığından büyük olmalıdır. Bu sorgu TimeGenerated sütununu kullanmadığından Sorguda ayarla seçeneği kullanılamaz. Zaman aralığı hakkında daha fazla bilgi için bkz . Sorgu kapsamı. Zaman Aralığı için Son 4 saat'i seçin. Bu ayar, Alma süresi TimeGenerated değerinden uzun olan tüm kayıtların sonuçlara eklenmesini sağlar.
JSON Ayrıştır eylemi ekleme (isteğe bağlı)
Sorguyu çalıştır ve sonuçları listele eyleminin çıkışı JSON biçiminde biçimlendirilir. Bu verileri ayrıştırabilir ve Oluştur eyleminin hazırlığı kapsamında işleyebilirsiniz.
Almayı beklediğiniz yükü açıklayan bir JSON şeması sağlayabilirsiniz. Tasarımcı bu şemayı kullanarak JSON içeriğini ayrıştırıyor ve JSON içeriğinizdeki özellikleri temsil eden kullanıcı dostu belirteçler oluşturuyor. Daha sonra Mantıksal Uygulamanızın iş akışı boyunca bu özelliklere kolayca başvurabilir ve kullanabilirsiniz.
Sorguyu çalıştır ve sonuçları listele adımından örnek bir çıktı kullanabilirsiniz.
Logic Apps şeridinde Tetikleyiciyi Çalıştır'ı seçin. Ardından Çalıştır'ı seçin ve bir çıkış kaydı indirin ve kaydedin. Önceki kökteki örnek sorgu için aşağıdaki örnek çıkışı kullanabilirsiniz:
{ "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" }
+ Yeni adım'ı ve ardından + Eylem ekle'yi seçin. İşlem seçin'in altında json girin ve JSON Ayrıştır'ı seçin.
Önceki etkinliklere ait değerlerin listesini görüntülemek için İçerik kutusunu seçin. Sorguyu çalıştır ve sonuçları listele eyleminden Gövde'yi seçin. Bu çıkış günlük sorgusundan alınmaktadır.
Daha önce kaydedilen örnek kaydı kopyalayın. Şema oluşturmak ve yapıştırmak için Örnek yükü kullan'ı seçin.
Oluştur eylemini ekleme
Oluştur eylemi ayrıştırılmış JSON çıkışını alır ve blobda depolamanız gereken nesneyi oluşturur.
+ Yeni adım'ı ve ardından + Eylem ekle'yi seçin. İşlem seçin'in altına compose yazın. Ardından Oluştur eylemini seçin.
Önceki etkinliklere ait değerlerin listesini görüntülemek için Girişler kutusunu seçin. JSON Ayrıştır eyleminden Gövde'yi seçin. Bu ayrıştırılan çıkış günlük sorgusundan alınıyor.
Blob oluştur eylemini ekleme
Blob oluştur eylemi, oluşturulan JSON'u depolama alanına yazar.
+ Yeni adım'ı ve ardından + Eylem ekle'yi seçin. İşlem seçin bölümüne blob girin. Ardından Blob oluştur eylemini seçin.
Bağlantı Adı'nda depolama hesabınıza bağlantı için bir ad girin. Ardından, depolama hesabınızdaki kapsayıcıyı seçmek için Klasör yolu kutusundaki klasör simgesini seçin. Önceki etkinliklere ait değerlerin listesini görmek için Blob adı'na tıklayın. İfade'yi seçin ve zaman aralığınızla eşleşen bir ifade girin. Saatlik olarak çalıştırılan bu sorgu için aşağıdaki ifade blob adını önceki saat başına ayarlar:
subtractFromTime(formatDateTime(utcNow(),'yyyy-MM-ddTHH:00:00'), 1,'Hour')
Önceki etkinliklere ait değerlerin listesini görüntülemek için Blob içerik kutusunu seçin. Ardından Oluştur bölümünde Çıkışlar'ı seçin.
İş akışını test etme
İş akışını test etmek için Çalıştır'ı seçin. İş akışında hatalar varsa, bunlar sorunla ilgili adımda belirtilir. Hataları araştırmak için giriş ve çıkışı görüntülemek için yürütmeleri görüntüleyebilir ve her adımda detaya gidebilirsiniz. Gerekirse bkz . Azure Logic Apps'te iş akışı hatalarını giderme ve tanılama.
Depolamadaki günlükleri görüntüleme
Azure portalında Depolama hesapları menüsüne gidin ve depolama hesabınızı seçin. Bloblar kutucuğunu seçin. Ardından Blob oluştur eyleminde belirttiğiniz kapsayıcıyı seçin. Bloblardan birini seçin ve ardından Blobu düzenle'yi seçin.
Mantıksal Uygulama şablonu
İsteğe bağlı JSON Ayrıştır adımı şablona eklenmez
{
"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"
}
}
}
}
}
Sonraki adımlar
- Azure İzleyici'de günlük sorguları hakkında daha fazla bilgi edinin.
- Logic Apps hakkında daha fazla bilgi edinin.
- Power Automate hakkında daha fazla bilgi edinin.