Azure Monitor의 샘플 DCR(데이터 수집 규칙)
이 문서에는 다양한 시나리오에 대한 샘플 DCR(데이터 수집 규칙)이 포함되어 있습니다. 이러한 DCR의 각 속성에 대한 설명은 데이터 수집 규칙 구조를 참조하세요.
참고 항목
이러한 샘플은 ARM 템플릿 또는 REST API를 사용하여 DCR을 만들거나 수정하는 경우 DCR의 원본 JSON을 제공합니다. 만든 후 DCR은 Azure Monitor의 데이터 수집 규칙 구조에 설명된 대로 추가 속성을 갖습니다.
Azure Monitor 에이전트 - 이벤트 및 성능 데이터
아래의 샘플 데이터 수집 규칙은 Azure Monitor 에이전트를 사용하는 가상 머신에 대한 것이며 다음과 같은 세부 정보를 포함합니다.
- 성능 데이터
- 15초마다 특정 프로세서, 메모리, 논리 디스크 및 실물 디스크 카운터를 수집하고 1분마다 업로드합니다.
- 30초마다 특정 프로세스 카운터를 수집하고 5분마다 업로드합니다.
- Windows 이벤트
- 1분마다 Windows 보안 이벤트 및 업로드를 수집합니다.
- Windows 애플리케이션 및 시스템 이벤트를 수집하고 5분마다 업로드합니다.
- syslog
- cron 시설에서 디버그, 위험 및 긴급 이벤트를 수집합니다.
- Syslog 시설에서 경고, 위험 및 긴급 이벤트를 수집합니다.
- Destinations
- centralWorkspace라는 Log Analytics 작업 영역에 모든 데이터를 보냅니다.
참고 항목
데이터 수집 규칙에서 이벤트 수집을 지정하는 데 사용되는 XPath에 대한 설명은 사용자 지정 XPath 쿼리를 사용하여 데이터 수집 제한을 참조하세요.
{
"location": "eastus",
"properties": {
"dataSources": {
"performanceCounters": [
{
"name": "cloudTeamCoreCounters",
"streams": [
"Microsoft-Perf"
],
"scheduledTransferPeriod": "PT1M",
"samplingFrequencyInSeconds": 15,
"counterSpecifiers": [
"\\Processor(_Total)\\% Processor Time",
"\\Memory\\Committed Bytes",
"\\LogicalDisk(_Total)\\Free Megabytes",
"\\PhysicalDisk(_Total)\\Avg. Disk Queue Length"
]
},
{
"name": "appTeamExtraCounters",
"streams": [
"Microsoft-Perf"
],
"scheduledTransferPeriod": "PT5M",
"samplingFrequencyInSeconds": 30,
"counterSpecifiers": [
"\\Process(_Total)\\Thread Count"
]
}
],
"windowsEventLogs": [
{
"name": "cloudSecurityTeamEvents",
"streams": [
"Microsoft-Event"
],
"scheduledTransferPeriod": "PT1M",
"xPathQueries": [
"Security!*"
]
},
{
"name": "appTeam1AppEvents",
"streams": [
"Microsoft-Event"
],
"scheduledTransferPeriod": "PT5M",
"xPathQueries": [
"System!*[System[(Level = 1 or Level = 2 or Level = 3)]]",
"Application!*[System[(Level = 1 or Level = 2 or Level = 3)]]"
]
}
],
"syslog": [
{
"name": "cronSyslog",
"streams": [
"Microsoft-Syslog"
],
"facilityNames": [
"cron"
],
"logLevels": [
"Debug",
"Critical",
"Emergency"
]
},
{
"name": "syslogBase",
"streams": [
"Microsoft-Syslog"
],
"facilityNames": [
"syslog"
],
"logLevels": [
"Alert",
"Critical",
"Emergency"
]
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
"name": "centralWorkspace"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-Perf",
"Microsoft-Syslog",
"Microsoft-Event"
],
"destinations": [
"centralWorkspace"
]
}
]
}
}
Azure Monitor 에이전트 - 텍스트 로그
아래 샘플 데이터 수집 규칙은 Azure Monitor 에이전트를 사용하여 텍스트 로그를 수집하는데 사용됩니다. 사용자 지정 텍스트 로그의 스트림 이름은 "Custom-" 접두사로 시작해야 합니다.
{
"location": "eastus",
"properties": {
"streamDeclarations": {
"Custom-MyLogFileFormat": {
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "RawData",
"type": "string"
}
]
}
},
"dataSources": {
"logFiles": [
{
"streams": [
"Custom-MyLogFileFormat"
],
"filePatterns": [
"C:\\JavaLogs\\*.log"
],
"format": "text",
"settings": {
"text": {
"recordStartTimestampFormat": "ISO 8601"
}
},
"name": "myLogFileFormat-Windows"
},
{
"streams": [
"Custom-MyLogFileFormat"
],
"filePatterns": [
"//var//*.log"
],
"format": "text",
"settings": {
"text": {
"recordStartTimestampFormat": "ISO 8601"
}
},
"name": "myLogFileFormat-Linux"
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
"name": "MyDestination"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-MyLogFileFormat"
],
"destinations": [
"MyDestination"
],
"transformKql": "source",
"outputStream": "Custom-MyTable_CL"
}
]
}
}
Event Hubs
아래 샘플 데이터 수집 규칙은 이벤트 허브에서 데이터를 수집하는데 사용됩니다.
{
"location": "eastus",
"properties": {
"streamDeclarations": {
"Custom-MyEventHubStream": {
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "RawData",
"type": "string"
},
{
"name": "Properties",
"type": "dynamic"
}
]
}
},
"dataSources": {
"dataImports": {
"eventHub": {
"consumerGroup": "<consumer-group>",
"stream": "Custom-MyEventHubStream",
"name": "myEventHubDataSource1"
}
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
"name": "MyDestination"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-MyEventHubStream"
],
"destinations": [
"MyDestination"
],
"transformKql": "source",
"outputStream": "Custom-MyTable_CL"
}
]
}
}
로그 수집 API
아래 샘플 데이터 수집 규칙은 로그 수집 API와 함께 사용됩니다. 자세한 내용은 다음과 같습니다.
- my-workspace라는 작업 영역에서 MyTable_CL 테이블로 데이터를 보냅니다.
- 들어오는 데이터에 변환을 적용합니다.
참고 항목
로그 수집 API에는 엔드포인트의 URL을 포함하는 logsIngestion 속성이 필요합니다. 이 속성은 생성된 후 DCR에 추가됩니다.
{
"location": "eastus",
"kind": "Direct",
"properties": {
"streamDeclarations": {
"Custom-MyTable": {
"columns": [
{
"name": "Time",
"type": "datetime"
},
{
"name": "Computer",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "string"
}
]
}
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/cefingestion/providers/microsoft.operationalinsights/workspaces/my-workspace",
"name": "LogAnalyticsDest"
}
]
},
"dataFlows": [
{
"streams": [
"Custom-MyTable"
],
"destinations": [
"LogAnalyticsDest"
],
"transformKql": "source | extend jsonContext = parse_json(AdditionalContext) | project TimeGenerated = Time, Computer, AdditionalContext = jsonContext, ExtendedColumn=tostring(jsonContext.CounterName)",
"outputStream": "Custom-MyTable_CL"
}
]
}
}
작업 영역 변환 DCR
아래 샘플 데이터 수집 규칙은 LAQueryLogs라는 테이블로 전송된 모든 데이터를 변환하는 작업 영역 변환 DCR로 사용됩니다.
{
"location": "eastus",
"properties": {
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/Microsoft.OperationalInsights/workspaces/my-workspace",
"name": "clv2ws1"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-Table-LAQueryLogs"
],
"destinations": [
"clv2ws1"
],
"transformKql": "source |where QueryText !contains 'LAQueryLogs' | extend Context = parse_json(RequestContext) | extend Resources_CF = tostring(Context['workspaces']) |extend RequestContext = ''"
}
]
}
}