Azure Monitor를 사용하여 가상 머신 클라이언트에서 데이터를 수집하여 Azure Monitor 를 사용하여 VM(가상 머신)에서 데이터를 수집하는 방법을 설명합니다. 이 문서에서는 Azure Storage 및 Event Hubs에 설명된 데이터를 보내는 방법을 설명합니다. 이 기능은 현재 공개 미리 보기로 제공됩니다.
팁 (조언)
스토리지 대신 비용 효율적인 로깅을 위해 Log Analytics 작업 영역에서 보조 계획을 사용하여 테이블을 만들어야 합니다.
다음 표에서는 이 기능에서 지원하는 데이터 원본을 나열합니다.
지원되는 데이터 형식
다음 표의 데이터 형식은 이 기능에서 지원됩니다. 각각에는 해당 원본의 세부 정보를 설명하는 문서에 대한 링크가 있습니다.
데이터 원본 | 운영 체제 | 지원되는 목적지 |
---|---|---|
Windows 이벤트 로그 | 윈도우즈 | 이벤트허브 스토리지 |
Syslog | Linux | 이벤트허브 스토리지 |
성능 카운터 | 윈도우즈 Linux |
이벤트허브 스토리지 |
IIS 로그 | 윈도우즈 Linux |
스토리지 블롭 |
텍스트 로그 | 윈도우즈 Linux |
Eventhub (Linux 전용) 스토리지 블롭 |
다음 로그는 지원되지 않습니다.
- ETW 로그. 이 기능은 이후 릴리스에 대해 계획되어 있습니다.
- Windows 크래시 덤프. Azure Monitoring Agent는 대용량 파일 형식이 아닌 원격 분석 로그를 위한 것입니다.
- 애플리케이션 로그. 이러한 정보는 DCR을 사용하지 않는 Application Insights에서 수집됩니다.
- .NET 이벤트 원본 로그
비고
이 기능은 Azure VM에 대해서만 지원됩니다. Arc 지원 VM은 지원되지 않습니다.
권한
에이전트 VM에는 시스템 할당 관리 ID 또는 연결된 사용자 할당 관리 ID가 있어야 합니다. 확장성과 성능을 향상시키려면 사용자 할당 관리 ID 를 사용하는 것이 좋습니다. Azure Monitor 에이전트 요구 사항에 설명된 대로 인증에 관리 ID를 사용하도록 에이전트를 구성해야 합니다.
사용 중인 데이터 대상에 따라 관리 ID에 다음 RBAC 역할을 할당해야 합니다.
목적지 | RBAC 역할 |
---|---|
저장 표 | Storage Table Data Contributor |
Storage Blob | Storage Blob Data Contributor |
이벤트 허브 | Azure Event Hubs Data Sender |
데이터 수집 규칙을 만듭니다.
현재 Event Hubs 또는 스토리지로 데이터를 보내는 DCR(데이터 수집 규칙)을 만들기 위한 UI 환경은 없습니다. 다음 프로세스에서는 Azure Portal에서 ARM 템플릿을 사용하여 DCR을 만드는 단계를 설명합니다. 또는 여기에서 샘플 DCR을 사용하여 다른 메서드를 사용하여 새 DCR을 만들 수 있습니다.
경고
Azure Monitor를 사용하여 가상 머신 클라이언트에서 데이터 수집을 사용하여 만든 기존 DCR을 편집하여 Event Hubs 또는 스토리지를 추가하지 마세요. 이러한 대상에는 kind
가 AgentDirectToStore
인 DCR이 필요합니다. 대신 다른 대상으로 보내는 동일한 데이터 원본을 사용하여 여러 DCR을 만듭니다.
Azure Portal의 검색 상자에 템플릿을 입력한 다음 사용자 지정 템플릿 배포를 선택합니다. 편집기에서 사용자 고유의 템플릿을 빌드합니다.를 선택합니다.
다음 템플릿 정의를 편집기에 붙여넣습니다.
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "___location": { "type": "string", "defaultValue": "[resourceGroup().___location]", "metadata": { "description": "Location for all resources." } }, "dataCollectionRulesName": { "defaultValue": "[concat(resourceGroup().name, 'DCR')]", "type": "String" }, "storageAccountName": { "defaultValue": "[concat(resourceGroup().name, 'sa')]", "type": "String" }, "eventHubNamespaceName": { "defaultValue": "[concat(resourceGroup().name, 'eh')]", "type": "String" }, "eventHubInstanceName": { "defaultValue": "[concat(resourceGroup().name, 'ehins')]", "type": "String" } }, "resources": [ { "type": "Microsoft.Insights/dataCollectionRules", "apiVersion": "2022-06-01", "name": "[parameters('dataCollectionRulesName')]", "___location": "[parameters('___location')]", "kind": "AgentDirectToStore", "properties": { "dataSources": { "performanceCounters": [ { "streams": [ "Microsoft-Perf" ], "samplingFrequencyInSeconds": 10, "counterSpecifiers": [ "\\Process(_Total)\\Working Set - Private", "\\Memory\\% Committed Bytes In Use", "\\LogicalDisk(_Total)\\% Free Space", "\\Network Interface(*)\\Bytes Total/sec" ], "name": "perfCounterDataSource10" } ], "windowsEventLogs": [ { "streams": [ "Microsoft-Event" ], "xPathQueries": [ "Application!*[System[(Level=2)]]", "System!*[System[(Level=2)]]" ], "name": "eventLogsDataSource" } ], "iisLogs": [ { "streams": [ "Microsoft-W3CIISLog" ], "logDirectories": [ "C:\\inetpub\\logs\\LogFiles\\W3SVC1\\" ], "name": "myIisLogsDataSource" } ], "logFiles": [ { "streams": [ "Custom-Text-logs" ], "filePatterns": [ "C:\\JavaLogs\\*.log" ], "format": "text", "settings": { "text": { "recordStartTimestampFormat": "ISO 8601" } }, "name": "myTextLogs" } ] }, "destinations": { "eventHubsDirect": [ { "eventHubResourceId": "[resourceId('Microsoft.EventHub/namespaces/eventhubs', parameters('eventHubNamespaceName'), parameters('eventHubInstanceName'))]", "name": "myEh1" } ], "storageBlobsDirect": [ { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedPerf", "containerName": "PerfBlob" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedWin", "containerName": "WinEventBlob" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedIIS", "containerName": "IISBlob" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "blobNamedTextLogs", "containerName": "TxtLogBlob" } ], "storageTablesDirect": [ { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "tableNamedPerf", "tableName": "PerfTable" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "tableNamedWin", "tableName": "WinTable" }, { "storageAccountResourceId": "[resourceId('Microsoft.Storage/storageAccounts/', parameters('storageAccountName'))]", "name": "tableUnnamed" } ] }, "dataFlows": [ { "streams": [ "Microsoft-Perf" ], "destinations": [ "myEh1", "blobNamedPerf", "tableNamedPerf", "tableUnnamed" ] }, { "streams": [ "Microsoft-Event" ], "destinations": [ "myEh1", "blobNamedWin", "tableNamedWin", "tableUnnamed" ] }, { "streams": [ "Microsoft-W3CIISLog" ], "destinations": [ "blobNamedIIS" ] }, { "streams": [ "Custom-Text-logs" ], "destinations": [ "blobNamedTextLogs" ] } ] } } ] }
다음 표에서 DCR 섹션의 세부 정보를 사용하여 요구 사항에 따라 템플릿을 편집합니다. 템플릿은 매개 변수를 사용하여 스토리지 계정 및 이벤트 허브의 이름을 허용하므로 템플릿을 저장할 때 또는 템플릿을 배포하는 방법에 따라 매개 변수 파일에 제공할 수 있습니다. DCR 구조에 대한 자세한 내용은 Azure Monitor의 DCR(데이터 수집 규칙) 구조를 참조하세요.
가치 설명 dataSources
DCR에서 수집한 각 데이터 원본에 대한 항목입니다. 샘플 템플릿에는 로그 및 성능 카운터에 대한 정의가 포함되어 있습니다. 이러한 데이터 원본 및 템플릿에 추가할 수 있는 다른 데이터 원본 구성에 대한 자세한 내용은 Azure Monitor의 DCR(데이터 수집 규칙) 샘플을 참조하세요. destinations
각 대상에 대한 단일 항목입니다.
Event Hubs
이벤트 허브에 직접 업로드하는 데eventHubsDirect
를 사용합니다.eventHubResourceId
에는 이벤트 허브 인스턴스의 리소스 ID가 포함됩니다.
Storage Blob
Blob Storage에 직접 업로드하는 데storageBlobsDirect
를 사용합니다.storageAccountResourceId
에는 스토리지 계정의 리소스 ID가 포함됩니다.containerName
에는 컨테이너의 이름이 포함됩니다.
저장 테이블
Table Storage에 직접 업로드하는 데storageTablesDirect
를 사용합니다.storageAccountResourceId
에는 스토리지 계정의 리소스 ID가 포함됩니다.tableName
에는 테이블의 선택적 이름이 포함되어 있습니다.dataFlows
각 수신 스트림을 최소한 하나의 대상과 일치시키는 dataflow
입니다. 해당 원본의 데이터는 데이터 흐름의 각 대상으로 전송됩니다.저장을 선택하고 필요한 매개 변수에 대한 값을 제공합니다.
DCR 연결 만들기 및 Azure Monitor 에이전트 배포
DCR을 사용하려면 AMA(Azure Monitor 에이전트)가 설치된 하나 이상의 가상 머신과 DCRA(데이터 수집 규칙 연결)가 있어야 합니다. DCRA를 만드는 다양한 옵션은 Azure Monitor에서 에이전트를 설치하고 데이터 수집 규칙 연결을 관리하는 다양한 옵션을 보려면 Azure Monitor 에이전트 설치 및 관리를 참조하세요.
다음 ARM 템플릿을 사용하여 특정 VM에 대한 DCRA를 만드는 Azure Monitor 에이전트를 배포할 수 있습니다. 템플릿은 인증에 UAI(사용자 할당 관리 ID)를 사용합니다. 템플릿을 배포하기 전에 UAI를 만들어야 합니다. 시스템 할당 관리 ID를 사용할 수도 있지만 프로덕션 워크로드에는 권장되지 않습니다.
위의 프로세스 또는 다른 유효한 방법을 사용하여 이 템플릿을 배포합니다. 여기에는 VM 및 DCR을 식별하는 데 필요한 값에 대한 매개 변수가 포함되어 있으므로 템플릿 자체를 수정할 필요가 없습니다.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"defaultValue": "[concat(resourceGroup().name, 'vm')]",
"type": "String"
},
"___location": {
"type": "string",
"defaultValue": "[resourceGroup().___location]",
"metadata": {
"description": "Location for all resources."
}
},
"dataCollectionRulesName": {
"defaultValue": "[concat(resourceGroup().name, 'DCR')]",
"type": "String",
"metadata": {
"description": "Data Collection Rule Name"
}
},
"dcraName": {
"type": "string",
"defaultValue": "[concat(uniquestring(resourceGroup().id), 'DCRLink')]",
"metadata": {
"description": "Name of the association."
}
},
"identityName": {
"type": "string",
"defaultValue": "[concat(resourceGroup().name, 'UAI')]",
"metadata": {
"description": "Managed Identity"
}
}
},
"resources": [
{
"type": "Microsoft.Compute/virtualMachines/providers/dataCollectionRuleAssociations",
"name": "[concat(parameters('vmName'),'/microsoft.insights/', parameters('dcraName'))]",
"apiVersion": "2021-04-01",
"properties": {
"description": "Association of data collection rule. Deleting this association will break the data collection for this virtual machine.",
"dataCollectionRuleId": "[resourceID('Microsoft.Insights/dataCollectionRules',parameters('dataCollectionRulesName'))]"
}
},
{
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('vmName'), '/AMAExtension')]",
"apiVersion": "2020-06-01",
"___location": "[parameters('___location')]",
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines/providers/dataCollectionRuleAssociations', parameters('vmName'), 'Microsoft.Insights', parameters('dcraName'))]"
],
"properties": {
"publisher": "Microsoft.Azure.Monitor",
"type": "AzureMonitorWindowsAgent",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"authentication": {
"managedIdentity": {
"identifier-name": "mi_res_id",
"identifier-value": "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('identityName'))]"
}
}
}
}
}
]
}
Linux 및 Windows용 Azure Diagnostic Extensions에서 마이그레이션(LAD/WAD)
Azure Diagnostics 확장은 현재 Event Hubs 및 스토리지로 데이터를 전송하지만 2026년 3월 31일에 더 이상 사용되지 않습니다. 이 날짜 이후 Microsoft는 더 이상 Azure Diagnostics 확장을 지원하지 않습니다. 보안 패치만 제공됩니다. AMA(Azure Monitor 에이전트)는 VM에서 클라이언트 데이터를 수집하는 보다 효율적이고 유연한 방법을 제공합니다.
- VM에 설치된 확장을 확인하려면 VM의 설정에서 확장 + 애플리케이션을 선택합니다.
- 중복 데이터를 방지하기 위해 Event Hubs 또는 Azure Storage에 동일한 데이터를 수집하도록 Azure Monitor 에이전트를 설정한 후 LAD 또는 WAD를 제거합니다.
문제 해결
데이터가 Event Hubs 또는 스토리지로 전송되지 않는 경우 다음을 확인합니다.
- 권한에 나열된 적절한 기본 제공 역할은 스토리지 계정 또는 이벤트 허브의 관리 ID와 함께 할당됩니다.
- 관리 ID가 VM에 할당됩니다.
- AMA 설정에는 관리 ID 매개 변수가 있습니다.
참고하십시오
- 데이터 수집 규칙을 만드는 방법에 대한 자세한 내용은 Azure Monitor 에이전트를 사용하여 가상 머신에서 데이터 수집을 참조하세요.