기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Azure Monitor 데이터 소스에 연결
Azure Monitor 데이터 소스는 Azure 클라우드에서 여러 서비스를 지원합니다.
-
Azure Monitor 서비스는 Azure 리소스를 모니터링하기 위한 단일 소스를 제공하는 플랫폼 서비스입니다. 자세한 내용은 Azure Monitor 서비스 쿼리 단원을 참조하십시오.
-
Application Insights 서버는 여러 플랫폼의 웹 개발자를 위한 확장 가능한 Application Performance Management(APM) 서비스이며 라이브 웹 애플리케이션을 모니터링하는 데 사용할 수 있습니다. 여기에서 성능 이상은 자동으로 감지됩니다. 자세한 내용은 Application Insights Analytics 서비스 쿼리 단원을 참조하십시오.
-
Azure Log Analytics(또는 Azure Logs)를 사용하면 Azure Monitor에서 수집한 로그 데이터에 액세스할 수 있습니다. 자세한 내용은 Azure Log Analytics 서비스 쿼리 단원을 참조하십시오.
-
Application Insights Analytics 서비스를 사용하여 Azure Log Analytics에서 사용한 것과 동일한 쿼리 언어를 통해 Application Insights 데이터
를 쿼리합니다. 자세한 내용은 Application Insights Analytics 서비스 쿼리 단원을 참조하십시오.
데이터 소스 추가
데이터 소스는 네 개의 서로 다른 서비스의 지표에 액세스할 수 있습니다. 사용하는 서비스에 대한 액세스를 구성할 수 있습니다. Azure AD에서 설정한 경우 여러 서비스에 동일한 자격 증명을 사용할 수도 있습니다.
-
Grafana 기본 메뉴에서 액세스하면 새로 설치된 데이터 소스를 데이터 소스 섹션 내에 즉시 추가할 수 있습니다. 그런 다음, 오른쪽 상단의 데이터 소스 추가 버튼을 선택하세요. Azure Monitor 데이터 소스는 데이터 소스 목록의 클라우드 섹션에서 선택할 수 있습니다.
-
이름 필드에 Grafana는 데이터 소스의 이름을 자동으로 입력합니다(
Azure Monitor
또는Azure Monitor - 3
과 같음). 여러 데이터 소스를 구성하는 경우 보다 설명을 포함하는 이름으로 변경하세요. -
Azure Monitor를 사용하는 경우 Azure 포털에서 4개의 정보가 필요합니다(자세한 지침은 앞에서 제공된 링크 참조).
-
테넌트 ID(Azure Active Directory, 속성, 디렉터리 ID)
-
클라이언트 ID(Azure Active Directory, 앱 등록, 앱 선택, 애플리케이션 ID)
-
클라이언트 보안 암호(Azure Active Directory, 앱 등록, 앱 선택, 키)
-
기본 구독 ID(구독, 구독 선택, 개요, 구독 ID)
-
-
이 네 가지 항목을 Azure Monitor API 세부 정보 섹션의 필드에 붙여넣으세요.
-
구독 ID는 쿼리별로 변경할 수 있습니다. 데이터 소스를 저장하고 페이지를 새로 고쳐 지정된 클라이언트 ID에 대해 사용할 수 있는 구독 목록을 확인하세요.
-
-
Azure Log Analytics 서비스도 사용하는 경우 이러한 두 구성 값을 지정하거나 이전 단계에서의 클라이언트 ID 및 보안 암호를 재사용해야 합니다.
-
클라이언트 ID(Azure Active Directory, 앱 등록, 앱 선택, 애플리케이션 ID)
-
클라이언트 보안 암호(Azure Active Directory, 앱 등록, 앱 선택, 키, 키 생성, 클라이언트 보안 암호 사용)
-
-
Application Insights를 사용하는 경우 Azure 포털의 두 가지 정보가 필요합니다(자세한 지침은 앞에서 제공된 링크 참조).
-
애플리케이션 ID
-
API 키
-
-
Application Insights API 세부 정보 섹션의 해당 필드에 이 두 항목을 붙여넣으세요.
-
저장 및 테스트 버튼을 선택하여 구성 세부 정보가 올바른지 테스트하세요.
또는 4단계에서 새 Azure Active Directory 앱을 생성하는 경우 Azure CLI
az ad sp create-for-rbac -n "http://localhost:3000"
서비스 선택
패널의 쿼리 편집기에서 Azure Monitor 데이터 소스를 선택한 후 첫 번째 단계는 서비스를 선택하는 것입니다. 네 가지 옵션이 있습니다.
-
Azure Monitor
-
Application Insights
-
Azure Log Analytics
-
Insights Analytics
쿼리 편집기는 선택한 옵션에 따라 변경됩니다. Azure Monitor가 기본값입니다.
Azure Monitor 서비스 쿼리
Azure Monitor 서비스는 실행하는 모든 Azure 서비스에 대한 지표를 제공합니다. Azure의 애플리케이션이 어떻게 수행되는지 이해하고 애플리케이션에 영향을 미치는 문제를 사전에 찾는 데 도움이 됩니다.
Azure Monitor 자격 증명으로 여러 구독에 액세스할 수 있는 경우 먼저 적절한 구독을 선택합니다.
다음은 서비스에서 얻을 수 있는 지표 예제입니다.
-
Microsoft.Compute/virtualMachines - Percentage CPU
-
Microsoft.Network/networkInterfaces - Bytes sent
-
Microsoft.Storage/storageAccounts - Used Capacity
쿼리 편집기를 사용하면 이를 지원하는 지표에 대해 여러 차원을 쿼리할 수 있습니다. 여러 차원을 지원하는 지표는 지표의 차원 열에 하나 이상의 값이 나열된 Azure Monitor의 지원되는 지표 목록
Azure Monitor에 대한 별칭을 사용하여 범례 키 형식 지정
Azure Monitor API의 기본 범례 형식은 다음과 같습니다.
metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}
이 형식은 길 수 있지만 별칭을 사용하여 이 형식을 변경할 수 있습니다. 범례 형식 필드에서 원하는 방식으로 다음 별칭을 결합할 수 있습니다.
Azure Monitor 예제:
-
Blob Type: {{ blobtype }}
-
{{ resourcegroup }} - {{ resourcename }}
Azure Monitor의 별칭 패턴
-
{{ resourcegroup }}
= 리소스 그룹의 값으로 대체됨 -
{{ namespace }}
= 네임스페이스 값으로 대체됨(예: Microsoft.Compute/virtualMachines) -
{{ resourcename }}
= 리소스 이름의 값으로 대체됨 -
{{ metric }}
= 지표 이름으로 대체됨(예: 백분율 CPU) -
{{ dimensionname }}
= 7.1 이상 기준 레거시(역호환성 지원) 첫 번째 차원의 키/레이블로 대체됨(키/레이블로 정렬됨, 예: blobtype) -
{{ dimensionvalue }}
= 7.1 이상 기준 레거시(역호환성 지원) 첫 번째 차원의 값으로 대체됨(키/레이블로 정렬됨, 예: BlockBlob) -
{{ arbitraryDim }}
= 7.1 이상에서 사용 가능 해당 차원의 값으로 대체됩니다(예:{{ blobtype }}
은 BlockBlob가 됨).
Azure Monitor에 대한 템플릿 변수 생성
지표 쿼리에서 서버, 애플리케이션 및 센서 이름과 같은 사물을 하드코딩하는 대신 해당 위치에서 변수를 사용할 수 있습니다. 변수는 대시보드 상단에서 드롭다운 선택 상자로 표시됩니다. 이러한 드롭다운 상자를 사용하여 대시보드에 표시되는 데이터를 변경할 수 있습니다.
Azure Monitor 서비스는 아직 다중 값을 지원하지 않습니다. 여러 시계열(예: server1 및 server2에 대한 지표)을 시각화하려면 동일한 그래프 또는 동일한 테이블에서 볼 수 있도록 여러 쿼리를 추가합니다.
Azure Monitor 데이터 소스 플러그인에서는 변수 편집 보기의 쿼리 필드에 지정할 수 있는 다음과 같은 쿼리를 제공합니다. 이를 사용하여 변수의 옵션 목록을 채울 수 있습니다.
명칭 | 설명 |
---|---|
Subscriptions()
|
구독 목록을 반환합니다. |
ResourceGroups()
|
리소스 그룹 이름을 반환합니다. |
ResourceGroups(12345678-aaaa-bbbb-cccc-123456789aaa)
|
지정된 구독에 대한 리소스 그룹 목록을 반환합니다. |
Namespaces(aResourceGroup)
|
지정된 리소스 그룹에 대한 네임스페이스 목록을 반환합니다. |
Namespaces(12345678-aaaa-bbbb-cccc-123456789aaa,
aResourceGroup)
|
지정된 리소스 그룹 및 구독에 대한 네임스페이스 목록을 반환합니다. |
ResourceNames(aResourceGroup, aNamespace)
|
리소스 이름 목록을 반환합니다. |
ResourceNames(12345678-aaaa-bbbb-cccc-123456789aaa,
aResourceGroup, aNamespace)
|
지정된 구독에 대한 리소스 이름 목록을 반환합니다. |
MetricNamespace(aResourceGroup, aNamespace,
aResourceName)
|
지표 네임스페이스 목록을 반환합니다. |
MetricNamespace(12345678-aaaa-bbbb-cccc-123456789aaa,
aResourceGroup, aNamespace, aResourceName)
|
지정된 구독에 대한 지표 네임스페이스 목록을 반환합니다. |
MetricNames(aResourceGroup, aNamespace,
aResourceName)
|
지표 이름 목록을 반환합니다. |
MetricNames(12345678-aaaa-bbbb-cccc-123456789aaa,
aResourceGroup, aNamespace, aResourceName)
|
지정된 구독에 대한 지표 이름 목록을 반환합니다. |
예시:
-
리소스 그룹 쿼리:
ResourceGroups()
-
지표 이름 변수에서 전달:
Namespaces(cosmo)
-
템플릿 변수 체인 연결:
ResourceNames($rg, $ns)
-
MetricNames(hg, Microsoft.Network/publicIPAddresses, grafanaIP)
파라미터를 따옴표로 묶지 마세요.
템플릿 지정 및 템플릿 변수에 대한 자세한 내용은 템플릿 섹션을 참조하세요.
지원되는 Azure Monitor 지표 목록
Azure Monitor API에서 반환하는 모든 지표에 값이 있는 것은 아닙니다. 쿼리를 더 쉽게 빌드할 수 있도록 Grafana 데이터 소스에는 지원되는 Azure Monitor 지표 목록이 있으며 이때 값이 없는 지표는 무시합니다. 이 목록은 새 서비스 및 지표가 Azure 클라우드에 추가될 때 정기적으로 업데이트됩니다.
Azure Monitor 알림
Azure Monitor 서비스에 대한 Grafana 알림이 지원됩니다. 이는 Azure 알림 지원에 속하지 않습니다. Grafana 알림에 대한 자세한 내용은 Grafana 알림 섹션을 참조하세요.
Application Insights 서비스 쿼리
Application Insights에 대한 별칭을 사용하여 범례 키 형식 지정
기본 범례 형식은 다음과 같습니다.
metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}
범례 형식 필드에서 원하는 방식으로 다음 별칭을 결합할 수 있습니다.
Application Insights 예제:
-
city: {{ client/city }}
-
{{ metric }} [Location: {{ client/countryOrRegion }}, {{ client/city }}]
Application Insights의 별칭 패턴
-
{{ groupbyvalue }}
= Grafana 7.1 이상 기준 레거시(역호환성 지원) 첫 번째 차원의 키/레이블로 대체됨(키/레이블로 정렬됨) -
{{ groupbyname }}
= Grafana 7.1 이상 기준 레거시(역호환성 지원) 첫 번째 차원의 값으로 대체됨(키/레이블로 정렬됨, 예: BlockBlob) -
{{ metric }}
= 지표 이름으로 대체됨(예: 요청/수) -
{{ arbitraryDim }}
= 7.1 이상에서 사용 가능 해당 차원의 값으로 대체됩니다(예:{{ client/city }}
은 Chicago가 됨).
Application Insights에 대한 표현식 필터링
필터 필드는 OData 필터 표현식을 사용합니다.
예시:
-
client/city eq 'Boydton'
-
client/city ne 'Boydton'
-
client/city ne 'Boydton' and client/city ne 'Dublin'
-
client/city eq 'Boydton' or client/city eq 'Dublin'
Application Insights에 대한 변수를 사용하여 템플릿 지정
변수 편집 보기의 쿼리 필드에서 다음 쿼리 중 하나를 사용합니다.
템플릿 지정 및 템플릿 변수에 대한 자세한 내용은 템플릿 섹션을 참조하세요.
명칭 | 설명 |
---|---|
AppInsightsMetricNames()
|
지표 이름 목록을 반환합니다. |
AppInsightsGroupBys(aMetricName)
|
지정된 지표 이름에 대한 group by 절 목록을 반환합니다. |
예시:
-
지표 이름 쿼리:
AppInsightsMetricNames()
-
지표 이름 변수에서 전달:
AppInsightsGroupBys(requests/count)
-
템플릿 변수 체인 연결:
AppInsightsGroupBys($metricnames)
Application Insights 알림
Application Insights에 대한 Grafana 알림이 지원됩니다. 이는 Azure 알림 지원에 속하지 않습니다. Grafana 알림에 대한 자세한 내용은 Grafana 알림 섹션을 참조하세요.
Azure Log Analytics 서비스 쿼리
쿼리는 새 Azure Log Analytics(또는 KustoDB) 쿼리 언어
자격 증명으로 여러 구독에 액세스할 수 있는 경우 쿼리를 입력하기 전에 먼저 적절한 구독을 선택합니다.
시계열 쿼리
시계열 쿼리는 그래프 패널 및 단일 통계 패널과 같은 기타 패널에서 사용됩니다. 각 쿼리에는 datetime 열과 숫자 값 열이 하나 이상 포함되어야 합니다. 결과는 datetime 열을 기준으로 오름차순으로 정렬해야 합니다.
다음 코드 예제에서는 시간별로 그룹화된 집계된 수를 반환하는 쿼리를 보여줍니다.
Perf | where $__timeFilter(TimeGenerated) | summarize count() by bin(TimeGenerated, 1h) | order by TimeGenerated asc
쿼리에는 숫자/datetime이 아닌 하나 이상의 열이 있을 수도 있으며, 이러한 열은 차원으로 간주되고 응답에서 레이블이 됩니다. 예를 들어 hour, Computer및 CounterName으로 그룹화되는 집계된 개수를 반환하는 쿼리가 있습니다.
Perf | where $__timeFilter(TimeGenerated) | summarize count() by bin(TimeGenerated, 1h), Computer, CounterName | order by TimeGenerated asc
추가 숫자 값 열(여러 차원을 포함하거나 포함하지 않음)을 선택할 수도 있습니다. 예를 들어 hour, Computer, CounterName, InstanceName으로 개수 및 평균값을 가져옵니다.
Perf | where $__timeFilter(TimeGenerated) | summarize Samples=count(), ["Avg Value"]=avg(CounterValue) by bin(TimeGenerated, $__interval), Computer, CounterName, InstanceName | order by TimeGenerated asc
참고
팁: 이전 쿼리에서 Kusto 구문 및 Samples=count()
["Avg
Value"]=...
는 해당 열의 이름을 지정하는 데 사용되고, 두 번째 구문에서는 공백을 허용합니다. 그러면 Grafana에서 사용하는 지표의 이름이 변경됩니다. 따라서 시리즈 범례 및 테이블 열과 같은 항목이 지정한 내용과 일치합니다. 이 예제에서는 _count
대신 Samples
가 표시됩니다.
테이블 쿼리
테이블 쿼리는 주로 테이블 패널에서 사용되며 열 및 행 목록을 표시합니다. 이 쿼리 예제에서는 6개의 지정된 열이 있는 행을 반환합니다.
AzureActivity | where $__timeFilter() | project TimeGenerated, ResourceGroup, Category, OperationName, ActivityStatus, Caller | order by TimeGenerated desc
Log Analytics에 대한 표시 이름 형식 지정
기본 표시 이름 형식은 다음과 같습니다.
metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}
표시 이름 필드 옵션을 사용하여 사용자 지정할 수 있습니다.
Azure Log Analytics 매크로
쿼리 작성을 더 쉽게 하기 위해 Grafana에서는 쿼리의 where 절에서 사용할 수 있는 몇 가지 매크로를 제공합니다.
-
$__timeFilter()
- Grafana 시간 선택기에서 시작 및 종료 날짜/시간이 지원되는TimeGenerated ≥ datetime(2018-06-05T18:09:58.907Z) and
TimeGenerated ≤ datetime(2018-06-05T20:09:58.907Z)
로 확장합니다. -
$__timeFilter(datetimeColumn)
- Grafana 시간 선택기에서 시작 및 종료 날짜/시간이 지원되는datetimeColumn ≥ datetime(2018-06-05T18:09:58.907Z) and
datetimeColumn ≤ datetime(2018-06-05T20:09:58.907Z)
로 확장합니다. -
$__timeFrom()
- Grafana 선택기에서 시작 날짜 및 시간을 반환합니다. 예시:datetime(2018-06-05T18:09:58.907Z)
. -
$__timeTo()
- Grafana 선택기에서 시작 날짜 및 시간을 반환합니다. 예시:datetime(2018-06-05T20:09:58.907Z)
. -
$__escapeMulti($myVar)
– 잘못된 문자가 포함된 다중 값 템플릿 변수와 함께 사용됩니다.$myVar
에'\\grafana-vm\Network(eth0)\Total','\\hello!'
문자열로 다음 두 값이 있는 경우@'\\grafana-vm\Network(eth0)\Total', @'\\hello!'
로 확장됩니다. 단일 값 변수를 사용하는 경우 이 매크로를 사용할 필요가 없습니다. 대신 변수를 인라인으로 이스케이프 처리(@'\$myVar'
)합니다. -
$__contains(colName, $myVar)
- 다중 값 템플릿 변수와 함께 사용됩니다.$myVar
에'value1','value2'
값이 있는 경우colName in ('value1','value2')
로 확장됩니다.모두 옵션을 사용하는 경우 모든 옵션 포함 확인란을 선택하고 모든 사용자 지정 값 필드에
all
값을 입력합니다.$myVar
에all
값이 있는 경우 매크로는 대신1 == 1
로 확장됩니다. 옵션이 많은 템플릿 변수의 경우에 이 방식을 사용하면 큰 'where..in' 절을 빌드하지 않아 쿼리 성능이 향상됩니다.
Azure Log Analytics 기본 제공 변수
Azure Log Analytics 쿼리에 사용할 수 있는 몇 가지 Grafana 변수도 있습니다.
-
$__interval
- Grafana는 쿼리에서 시간별로 그룹화하는 데 사용할 수 있는 최소 시간 단위를 계산합니다. 예를 들어summarize count() by bin(TimeGenerated, $__interval)
과 같이 bin 함수에 사용할 수 있는5m
또는1h
와 같은 시간 세부 단위를 반환합니다. 내부 변수에 대한 자세한 내용은 간격 변수 추가 섹션을 참조하세요.
Azure Log Analytics에 대한 변수를 사용하여 템플릿 지정
값 목록을 반환하는 모든 Log Analytics 쿼리는 변수 편집 보기의 쿼리 필드에서 사용할 수 있습니다. 또한 워크스페이스 목록을 반환하는 Log Analytics에 대한 Grafana 함수도 있습니다.
템플릿 및 템플릿 변수에 대한 자세한 내용은 템플릿 및 변수 섹션을 참조하세요.
명칭 | 설명 |
---|---|
workspaces()
|
기본 구독에 대한 워크스페이스 목록을 반환합니다. |
workspaces(12345678-aaaa-bbbb-cccc-123456789aaa)
|
지정된 구독에 대한 워크스페이스 목록을 반환합니다(파라미터는 따옴표로 묶거나 묶지 않을 수 있음). |
다음 표에는 변수 쿼리 예제가 나와 있습니다.
Query | 설명 |
---|---|
subscriptions()
|
Azure 구독 목록을 반환합니다. |
workspaces()
|
기본 구독에 대한 워크스페이스 목록을 반환합니다. |
workspaces("12345678-aaaa-bbbb-cccc-123456789aaa")
|
지정된 구독에 대한 워크스페이스 목록을 반환합니다. |
workspaces("$subscription")
|
구독 파라미터에 대한 템플릿 변수를 사용합니다. |
workspace("myWorkspace").Heartbeat \|
distinct Computer
|
가상 머신 목록을 반환합니다. |
workspace("$workspace").Heartbeat \|
distinct Computer
|
템플릿 변수가 있는 가상 머신 목록을 반환합니다. |
workspace("$workspace").Perf \| distinct
ObjectName
|
성능 테이블의 객체 목록을 반환합니다. |
workspace("$workspace").Perf \| where
ObjectName == "$object" \| distinct
CounterName
|
성능 테이블의 지표 이름 목록을 반환합니다. |
다음 코드 예제에서는 변수를 사용하는 시계열 쿼리를 보여줍니다.
Perf | where ObjectName == "$object" and CounterName == "$metric" | where TimeGenerated >= $__timeFrom() and TimeGenerated <= $__timeTo() | where $__contains(Computer, $computer) | summarize avg(CounterValue) by bin(TimeGenerated, $__interval), Computer | order by TimeGenerated asc
Grafana 패널에서 Azure Portal의 Log Analytics 쿼리 편집기로 딩링크
패널에서 시계열을 선택하면 Azure Portal에서 보기에 대한 링크가 있는 컨텍스트 메뉴가 표시됩니다. 이 링크를 선택하면 Azure Portal에서 Azure Log Analytics 쿼리 편집기가 열리고 여기의 Grafana 패널에서 쿼리가 실행됩니다.
현재 Azure Portal에 로그인하지 않은 경우 링크를 선택하면 로그인 페이지가 열립니다. 제공된 링크는 모든 계정에 유효하지만, 계정이 쿼리에 지정된 Azure Log Analytics 워크스페이스에 대한 액세스 권한을 보유하는 경우에만 쿼리를 표시합니다.
Azure Log Analytics 알림
Application Insights에 대한 Grafana 알림이 지원됩니다. 이는 Azure 알림 지원에 속하지 않습니다. Grafana 워크스페이스의 알림에 대한 자세한 내용은 Grafana 알림 섹션을 참조하세요.
Application Insights Analytics 서비스 쿼리
서비스 유형을 Insights Analytics로 변경하면 Log Analytics 서비스와 유사한 편집기를 사용할 수 있습니다. 또한 이 서비스는 Kusto 언어를 사용하므로 Application Insights Analytics 데이터를 쿼리하는 경우를 제외하고 데이터 쿼리 지침은 Azure Log Analytics 서비스 쿼리와 동일합니다.