PowerShell을 사용하여 Azure Monitor에서 Log Analytics 작업 영역 구성
다음 샘플 스크립트는 Log Analytics 에이전트를 사용하여 가상 머신에서 여러 형식의 로그를 수집하도록 작업 영역을 구성합니다.
스크립트는 다음 작업을 수행합니다.
- 작업 영역을 만듭니다.
- Windows 에이전트가 설치된 컴퓨터에서 IIS 로그 수집을 사용하도록 설정합니다.
- Linux 컴퓨터에서 논리 디스크 성능 카운터(사용된 Inode 비율, 사용 가능한 MB, 사용된 공간 비율, 초당 디스크 전송, 초당 디스크 읽기, 초당 디스크 쓰기)를 수집합니다.
- Linux 컴퓨터에서 syslog 이벤트를 수집합니다.
- Windows 컴퓨터에서 애플리케이션 이벤트 로그의 오류 및 경고 이벤트를 수집합니다.
- Windows 컴퓨터에서 사용 가능한 메모리(MB) 성능 카운터를 수집합니다.
- 사용자 지정 로그를 수집합니다.
$ResourceGroup = "my-resource-group"
$WorkspaceName = "log-analytics-" + (Get-Random -Maximum 99999) # workspace names need to be unique in resource group - Get-Random helps with this for the example code
$Location = "westeurope"
# Create the resource group if needed
try {
Get-AzResourceGroup -Name $ResourceGroup -ErrorAction Stop
} catch {
New-AzResourceGroup -Name $ResourceGroup -Location $Location
}
# Create the workspace
New-AzOperationalInsightsWorkspace -Location $Location -Name $WorkspaceName -Sku PerGB2018 -ResourceGroupName $ResourceGroup
# Enable IIS Log Collection using agent
Enable-AzOperationalInsightsIISLogCollection -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName
# Linux Perf
New-AzOperationalInsightsLinuxPerformanceObjectDataSource -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -ObjectName "Logical Disk" -InstanceName "*" -CounterNames @("% Used Inodes", "Free Megabytes", "% Used Space", "Disk Transfers/sec", "Disk Reads/sec", "Disk Writes/sec") -IntervalSeconds 20 -Name "Example Linux Disk Performance Counters"
Enable-AzOperationalInsightsLinuxPerformanceCollection -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName
# Linux Syslog
New-AzOperationalInsightsLinuxSyslogDataSource -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -Facility "kern" -CollectEmergency -CollectAlert -CollectCritical -CollectError -CollectWarning -Name "Example kernel syslog collection"
Enable-AzOperationalInsightsLinuxSyslogCollection -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName
# Windows Event
New-AzOperationalInsightsWindowsEventDataSource -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -EventLogName "Application" -CollectErrors -CollectWarnings -Name "Example Application Event Log"
# Windows Perf
New-AzOperationalInsightsWindowsPerformanceCounterDataSource -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -ObjectName "Memory" -InstanceName "*" -CounterName "Available MBytes" -IntervalSeconds 20 -Name "Example Windows Performance Counter"
# Custom Logs
New-AzOperationalInsightsCustomLogDataSource -ResourceGroupName $ResourceGroup -WorkspaceName $WorkspaceName -CustomLogRawJson "$CustomLog" -Name "Example Custom Log Collection"
참고 항목
사용자 지정 로그의 구성을 정의하는 CustomLogRawJson
매개 변수의 형식은 복잡할 수 있습니다. Get-AzOperationalInsightsDataSource를 사용하여 기존 사용자 지정 로그의 구성을 가져옵니다. Properties
속성은 CustomLogRawJson
매개 변수에 필요한 구성입니다.
위 예제에서 regexDelimiter
는 새 줄을 나타내는 \\n
으로 정의되었습니다. 로그 구분 기호는 타임스탬프일 수도 있습니다. 다음 표에서는 지원되는 형식을 나열합니다.
형식 | JSON RegEx 형식에서는 표준 RegEx에서 모든 \ 에 대해 두 개의 \\ 를 사용하므로 RegEx 앱에서 테스트하는 경우 \\ 를 \ 로 줄입니다. |
---|---|
YYYY-MM-DD HH:MM:SS |
((\\d{2})|(\\d{4}))-([0-1]\\d)-(([0-3]\\d)|(\\d))\\s((\\d)|([0-1]\\d)|(2[0-4])):[0-5][0-9]:[0-5][0-9] |
M/D/YYYY HH:MM:SS AM/PM |
(([0-1]\\d)|[0-9])/(([0-3]\\d)|(\\d))/((\\d{2})|(\\d{4}))\\s((\\d)|([0-1]\\d)|(2[0-4])):[0-5][0-9]:[0-5][0-9]\\s(AM|PM|am|pm) |
dd/MMM/yyyy HH:MM:SS |
(([0-2][1-9]|[3][0-1])\\/(Jan|Feb|Mar|May|Apr|Jul|Jun|Aug|Oct|Sep|Nov|Dec|jan|feb|mar|may|apr|jul|jun|aug|oct|sep|nov|dec)\\/((19|20)[0-9][0-9]))\\s((\\d)|([0-1]\\d)|(2[0-4])):[0-5][0-9]:[0-5][0-9]) |
MMM dd yyyy HH:MM:SS |
(((?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Sept|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)).*?((?:(?:[0-2]?\\d{1})|(?:[3][01]{1})))(?![\\d]).*?((?:(?:[1]{1}\\d{1}\\d{1}\\d{1})|(?:[2]{1}\\d{3})))(?![\\d]).*?((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?)) |
yyMMdd HH:mm:ss |
([0-9]{2}([0][1-9]|[1][0-2])([0-2][0-9]|[3][0-1])\\s\\s?([0-1]?[0-9]|[2][0-3]):[0-5][0-9]:[0-5][0-9]) |
ddMMyy HH:mm:ss |
(([0-2][0-9]|[3][0-1])([0][1-9]|[1][0-2])[0-9]{2}\\s\\s?([0-1]?[0-9]|[2][0-3]):[0-5][0-9]:[0-5][0-9]) |
MMM d HH:mm:ss |
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s\\s?([0]?[1-9]|[1-2][0-9]|[3][0-1])\\s([0-1]?[0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9]) |
MMM d HH:mm:ss MMM 뒤에 두 개의 공백 |
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s\\s([0]?[1-9]|[1-2][0-9]|[3][0-1])\\s([0][0-9]|[1][0-2]):([0-5][0-9]):([0-5][0-9]) |
MMM d HH:mm:ss |
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s([0]?[1-9]|[1-2][0-9]|[3][0-1])\\s([0][0-9]|[1][0-2]):([0-5][0-9]):([0-5][0-9]) |
dd/MMM/yyyy:HH:mm:ss +zzzz 여기서 +는 + 또는 - 여기서 zzzz 시간 오프셋 |
(([0-2][1-9]|[3][0-1])\\/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\/((19|20)[0-9][0-9]):([0][0-9]|[1][0-2]):([0-5][0-9]):([0-5][0-9])\\s[\\+|\\-][0-9]{4}) |
yyyy-MM-ddTHH:mm:ss T는 리터럴 문자 T |
((\\d{2})|(\\d{4}))-([0-1]\\d)-(([0-3]\\d)|(\\d))T((\\d)|([0-1]\\d)|(2[0-4])):[0-5][0-9]:[0-5][0-9] |
문제 해결
지난 14일 동안 삭제되어 일시 삭제 상태인 작업 영역을 만들면 작업 영역 구성에 따라 작업의 결과가 달라질 수 있습니다. 예시:
삭제된 작업 영역과 작업 영역 이름, 리소스 그룹, 구독 및 지역이 동일한 경우 작업 영역이 복구됩니다. 복구된 작업 영역에는 데이터, 구성 및 연결된 에이전트가 포함됩니다.
작업 영역 이름은 리소스 그룹마다 고유해야 합니다. 이미 존재하고 리소스 그룹에서 일시 삭제 중인 작업 영역 이름을 사용하는 경우 오류가 발생합니다. "작업 영역 이름 'workspace-name'이 고유하지 않습니다." 또는 "충돌이 발생합니다." 오류가 표시됩니다. 일시 삭제를 재정의하고, 작업 영역을 영구적으로 삭제하고, 동일한 이름으로 새 작업 영역을 만들려면 다음 단계에 따라 먼저 작업 영역을 복구한 다음, 영구 삭제를 수행합니다.
다음 단계
Log Analytics 구성에 PowerShell을 사용하는 방법에 대한 자세한 내용은 Log Analytics PowerShell Cmdlet을 검토하세요.