Prometheus는 Kubernetes 클러스터 모니터링에만 국한되지 않습니다. Prometheus를 사용하여 서버에서 실행되는 애플리케이션과 서비스가 어디서 실행되는지 모니터링합니다. 예를 들어 가상 머신, 가상 머신 확장 집합 또는 온-프레미스 서버에서 실행되는 애플리케이션을 모니터링할 수 있습니다. 자체 관리 클러스터 및 Prometheus 서버에서 Azure Monitor 작업 영역으로 Prometheus 메트릭을 보낼 수도 있습니다.
이 문서에서는 자체 관리형 Prometheus 인스턴스에서 Azure Monitor 작업 영역으로 데이터를 보내도록 원격 쓰기를 구성하는 방법을 설명합니다.
원격 쓰기 옵션
자체 관리형 Prometheus는 Azure 및 비 Azure 환경에서 실행할 수 있습니다. 다음은 Prometheus가 실행 중인 환경에 따라 Azure Monitor 작업 영역에 원격 쓰기를 위한 인증 옵션입니다.
Azure 관리형 가상 머신, 가상 머신 확장 집합 및 Kubernetes 클러스터
Azure 환경에서 자체 관리 Prometheus를 실행하는 서비스에 사용자 할당 관리 ID 인증을 사용합니다. Azure 관리 서비스에는 다음이 포함됩니다.
- Azure Virtual Machines
- Azure Virtual Machine Scale Sets (Azure 가상 머신 스케일 세트)
- AKS(Azure Kubernetes Service)
Azure 관리형 리소스에 대한 원격 쓰기를 설정하려면 이 문서의 뒷부분에 있는 사용자 할당 관리 ID 인증을 사용하여 원격 쓰기를 참조하세요.
비 Azure 환경에서 실행되는 가상 머신 및 Kubernetes 클러스터
비 Azure 환경에 가상 머신 또는 Kubernetes 클러스터가 있거나 Azure Arc에 온보딩한 경우 자체 관리형 Prometheus를 설치하고 Microsoft Entra 애플리케이션 인증을 사용하여 원격 쓰기를 구성합니다. 자세한 내용은 이 문서의 뒷부분에 있는 Microsoft Entra 애플리케이션 인증을 사용하여 원격 쓰기를 참조하세요.
Azure Arc 지원 서버에 온보딩하면 Azure에서 비 Azure 가상 머신을 관리하고 구성할 수 있습니다. 자세한 내용은 Azure Arc 지원 서버 및 Azure Arc 지원 Kubernetes를 참조하세요. Azure Arc 지원 서버는 Microsoft Entra 인증만 지원합니다.
비고
시스템 할당 관리 ID는 Azure Monitor 작업 영역에 대한 원격 쓰기에 대해 지원되지 않습니다. 사용자 할당 관리 ID 또는 Microsoft Entra 애플리케이션 인증을 사용합니다.
필수 조건
지원되는 버전
- 관리 ID 인증에는 2.45 이후의 Prometheus 버전이 필요합니다.
- 2.48 이후의 Prometheus 버전은 Microsoft Entra 애플리케이션 인증에 필요합니다.
Azure Monitor 작업 영역
이 문서에서는 Prometheus 메트릭을 Azure Monitor 작업 영역으로 보내는 방법을 다룹니다. Azure Monitor 작업 영역을 만들려면 Azure Monitor 작업 영역 관리를 참조하세요.
권한
이 문서의 단계를 완료하려면 클러스터 또는 리소스에 대한 관리자 권한이 필요합니다.
원격 쓰기에 대한 인증 설정
Prometheus가 실행 중인 환경에 따라 사용자가 할당한 관리 ID 또는 Microsoft Entra 애플리케이션 인증을 사용하여 Azure Monitor 작업 영역으로 데이터를 보내도록 원격 쓰기를 구성할 수 있습니다.
Azure Portal 또는 Azure CLI를 사용하여 사용자 할당 관리 ID 또는 Microsoft Entra 애플리케이션을 만듭니다.
사용자 할당 관리 ID 인증을 사용하여 원격 쓰기
사용자가 할당한 관리 ID 인증은 모든 Azure 관리 환경에서 사용할 수 있습니다. Prometheus 서비스가 비 Azure 환경에서 실행되는 경우 Microsoft Entra 애플리케이션 인증을 사용할 수 있습니다.
Azure Monitor 작업 영역에 원격 쓰기를 위해 사용자 할당 관리 ID를 구성하려면 다음 단계를 완료합니다.
사용자 할당 관리 ID 만들기
원격 쓰기 구성에서 사용할 사용자 관리 ID를 만들려면 사용자 할당 관리 ID 관리를 참조 하세요.
만든 관리 ID의 clientId
값을 확인합니다. 이 ID는 Prometheus 원격 쓰기 구성에 사용됩니다.
애플리케이션에 모니터링 메트릭 게시자 역할 할당
작업 영역의 데이터 수집 규칙에서 모니터링 메트릭 게시자 역할을 관리 ID에 할당합니다.
Azure Monitor 작업 영역의 개요 창에서 데이터 수집 규칙 링크를 선택합니다.
데이터 수집 규칙 페이지에서 액세스 제어(IAM)를 선택합니다.
추가>역할 할당 추가를 선택합니다.
모니터링 메트릭 게시자를 검색하여 선택한 다음, 다음을 선택합니다.
관리 ID를 선택합니다.
멤버 선택을 선택합니다.
관리 ID 드롭다운 목록에서 사용자 할당 관리 ID를 선택합니다.
사용할 사용자 할당 ID를 선택한 다음, 선택을 선택합니다.
검토 + 할당을 선택하여 역할 할당을 완료합니다.
가상 머신 또는 가상 머신 확장 집합에 관리 ID 할당
중요합니다
이 섹션의 단계를 완료하려면 가상 머신 또는 가상 머신 확장 집합에 대한 소유자 또는 사용자 액세스 관리자 권한이 있어야 합니다.
Azure Portal에서 클러스터, 가상 머신 또는 가상 머신 확장 집합의 페이지로 이동합니다.
ID를 선택합니다.
사용자 할당을 선택합니다.
추가를 선택합니다.
만든 사용자 할당 관리 ID를 선택한 다음 추가를 선택합니다.
Azure Kubernetes Service에 대한 관리 ID 할당
Azure Kubernetes Service의 경우 관리 ID를 가상 머신 확장 집합에 할당해야 합니다.
AKS는 가상 머신 확장 집합을 포함하는 리소스 그룹을 만듭니다. 리소스 그룹 이름은 MC_<resource group name>_<AKS cluster name>_<region>
형식입니다.
리소스 그룹의 각 가상 머신 확장 집합에 대해 이전 섹션의 단계에 따라 관리 ID를 할당하고 가상 머신 또는 가상 머신 확장 집합에 관리 ID를 할당합니다.
Microsoft Entra 애플리케이션 인증을 사용하여 원격 쓰기
모든 환경에서 Microsoft Entra 애플리케이션 인증을 사용할 수 있습니다. Prometheus 서비스가 Azure 관리 환경에서 실행되는 경우, 사용자가 할당한 관리 ID 인증을 사용하는 것이 좋습니다.
Microsoft Entra 애플리케이션을 사용하여 Azure Monitor 작업 영역에 대한 원격 쓰기를 구성하려면 Microsoft Entra 애플리케이션을 만듭니다. Azure Monitor 작업 영역의 데이터 수집 규칙에서 모니터링 메트릭 게시자 역할을 Microsoft Entra 애플리케이션에 할당합니다.
비고
Microsoft Entra 애플리케이션은 클라이언트 암호 또는 비밀을 사용합니다. 클라이언트 암호의 만료 날짜가 있습니다. 인증된 액세스 권한을 잃지 않도록 만료되기 전에 새 클라이언트 암호를 만듭니다.
Microsoft Entra ID 애플리케이션 만들기
포털을 사용하여 Microsoft Entra ID 애플리케이션을 만들려면 Microsoft Entra ID를 사용하여 애플리케이션 등록 및 서비스 주체 만들기를 참조하세요.
Microsoft Entra 애플리케이션을 만든 후 클라이언트 ID를 가져오고 클라이언트 암호를 생성합니다.
애플리케이션 목록에서 등록된 애플리케이션의 클라이언트 ID 값을 복사합니다. 이 값은 Prometheus 원격 쓰기 구성에서 client_id
의 값으로 사용됩니다.
인증서 & 비밀선택합니다.
클라이언트 비밀을 선택한 다음 새 클라이언트 비밀을 선택하여 비밀을 만듭니다.
설명을 입력하고 만료 날짜를 설정한 다음 추가를 선택합니다.
비밀 값을 안전하게 복사합니다. 이 값은 Prometheus 원격 쓰기 구성에서 client_secret
의 값으로 사용됩니다. 클라이언트 비밀 값은 생성된 경우에만 표시되며 나중에 검색할 수 없습니다. 손실된 경우 새 항목을 만들어야 합니다.
애플리케이션에 모니터링 메트릭 게시자 역할 할당
작업 영역의 데이터 수집 규칙에 대한 모니터링 메트릭 게시자 역할을 애플리케이션에 할당합니다.
Azure Monitor 작업 영역의 개요 창에서 데이터 수집 규칙 링크를 선택합니다.
데이터 수집 규칙 페이지에서 액세스 제어(IAM)를 선택합니다.
추가를 선택한 다음 역할 할당 추가를 선택합니다.
모니터링 메트릭 게시자 역할을 선택하고 다음을 선택합니다.
사용자, 그룹 또는 서비스 주체를 선택한 다음, 구성원 선택을 선택합니다. 만든 애플리케이션을 선택한 다음, 선택을 선택합니다.
역할 할당을 완료하려면 검토 + 할당을 선택합니다.
Azure CLI를 통해 사용자 할당 ID 및 Microsoft Entra ID 앱 만들기
사용자 할당 관리 ID 만들기
다음 단계를 사용하여 원격 쓰기에 대한 사용자 할당 관리 ID를 만듭니다.
만든 관리 ID의 clientId
값을 확인합니다. 이 ID는 Prometheus 원격 쓰기 구성에 사용됩니다.
다음 Azure CLI 명령을 사용하여 사용자 할당 관리 ID를 만듭니다.
az account set \
--subscription <subscription id>
az identity create \
--name <identity name> \
--resource-group <resource group name>
다음 코드는 표시된 출력의 예입니다.
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/PromRemoteWriteIdentity",
"location": "eastus",
"name": "PromRemoteWriteIdentity",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"resourceGroup": "rg-001",
"systemData": null,
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
작업 영역의 데이터 수집 규칙에 대한 모니터링 메트릭 게시자 역할을 관리 ID에 할당합니다.
az role assignment create \
--role "Monitoring Metrics Publisher" \
--assignee <managed identity client ID> \
--scope <data collection rule resource ID>
다음은 그 예입니다.
az role assignment create \
--role "Monitoring Metrics Publisher" \
--assignee 00001111-aaaa-2222-bbbb-3333cccc4444 \
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MA_amw-001_eastus_managed/providers/Microsoft.Insights/dataCollectionRules/amw-001
관리 ID를 가상 머신 또는 가상 머신 확장 집합에 할당합니다.
가상 머신에 대한 명령은 다음과 같습니다.
az vm identity assign \
-g <resource group name> \
-n <virtual machine name> \
--identities <user assigned identity resource ID>
가상 머신 확장 집합에 대한 명령은 다음과 같습니다.
az vmss identity assign \
-g <resource group name> \
-n <scale set name> \
--identities <user assigned identity resource ID>
다음 예제에서는 가상 머신 확장 집합에 대한 명령을 보여 줍니다.
az vm identity assign \
-g rg-prom-on-vm \
-n win-vm-prom \
--identities /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/PromRemoteWriteIdentity
자세한 내용은 az Identity create 및 az role assignment create를 참조하세요.
Microsoft Entra 애플리케이션 만들기
Azure CLI를 사용하여 Microsoft Entra 애플리케이션을 만들고 모니터링 메트릭 게시자 역할을 할당하려면 다음 명령을 실행합니다.
az ad sp create-for-rbac --name <application name> \
--role "Monitoring Metrics Publisher" \
--scopes <azure monitor workspace data collection rule Id>
다음은 그 예입니다.
az ad sp create-for-rbac \
--name PromRemoteWriteApp \
--role "Monitoring Metrics Publisher" \
--scopes /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MA_amw-001_eastus_managed/providers/Microsoft.nsights/dataCollectionRules/amw-001
다음 코드는 표시된 출력의 예입니다.
{
"appId": "66667777-aaaa-8888-bbbb-9999cccc0000",
"displayName": "PromRemoteWriteApp",
"password": "Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2",
"tenant": "ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d"
}
출력에는 appId
및 password
값이 포함됩니다. Prometheus 원격 쓰기 구성에서 이 값을 client_id
및 client_secret
값으로 사용하기 위해 저장하세요. 암호 또는 클라이언트 암호 값은 생성된 경우에만 표시되며 나중에 검색할 수 없습니다. 손실된 경우 새 항목을 만들어야 합니다.
자세한 내용은 az ad app create 및 az ad sp create-for-rbac를 참조하세요.
원격 쓰기는 Prometheus 구성 파일 prometheus.yml
또는 Prometheus 연산자에서 구성됩니다.
원격 쓰기를 구성하는 방법에 대한 자세한 내용은 이 Prometheus.io 문서인 구성을 참조하세요. 원격 쓰기 구성 튜닝에 대한 자세한 내용은 원격 쓰기 튜닝을 참조 하세요.
Azure Monitor 작업 영역으로 데이터를 보내려면 자체 관리되는 Prometheus 인스턴스의 구성 파일(prometheus.yml
)에 다음 섹션을 추가합니다.
remote_write:
- url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
# Microsoft Entra ID configuration.
# The Azure cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
azuread:
cloud: 'AzurePublic'
managed_identity:
client_id: "<client-id of the managed identity>"
oauth:
client_id: "<client-id from the Entra app>"
client_secret: "<client secret from the Entra app>"
tenant_id: "<Azure subscription tenant Id>"
Prometheus 연산자
Prometheus 운영자를 실행하는 Kubernetes 클러스터에 있는 경우 다음 단계를 사용하여 Azure Monitor 작업 영역으로 데이터를 보냅니다.
Microsoft Entra 인증을 사용하는 경우 Base64 인코딩을 사용하여 비밀을 변환한 다음 Kubernetes 클러스터에 비밀을 적용합니다. YAML 파일에 다음 코드를 저장합니다. 관리 ID 인증을 사용하는 경우 이 단계를 건너뜁니다.
apiVersion: v1
kind: Secret
metadata:
name: remote-write-secret
namespace: monitoring # Replace with the namespace where Prometheus Operator is deployed.
type: Opaque
data:
password: <base64-encoded-secret>
비밀을 적용합니다.
# Set context to your cluster
az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name>
kubectl apply -f <remote-write-secret.yaml>
Prometheus 연산자의 원격 쓰기 섹션에 대한 값을 업데이트합니다. 다음 YAML을 복사하여 파일로 저장합니다. Prometheus 연산자의 원격 쓰기에 대한 Azure Monitor 작업 영역 사양에 대한 자세한 내용은 Prometheus 운영자 설명서를 참조 하세요.
prometheus:
prometheusSpec:
remoteWrite:
- url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
azureAd:
# Microsoft Entra ID configuration.
# The Azure cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
cloud: 'AzurePublic'
managedIdentity:
clientId: "<clientId of the managed identity>"
oauth:
clientId: "<clientId of the Entra app>"
clientSecret:
name: remote-write-secret
key: password
tenantId: "<Azure subscription tenant Id>"
Helm을 사용하여 이전 YAML 파일을 사용하여 원격 쓰기 구성을 업데이트합니다.
helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus Operator is deployed>
url
매개 변수는 Azure Monitor 작업 영역의 메트릭 수집 엔드포인트를 지정합니다. Azure Portal의 Azure Monitor 작업 영역에 대한 개요 창에서 찾을 수 있습니다.
managed_identity
또는 oauth
을 구현에 따라 Microsoft Entra 애플리케이션 인증에 사용하세요. 사용하지 않는 개체를 제거합니다.
다음 Azure CLI 명령을 사용하여 관리 ID에 대한 클라이언트 ID를 찾습니다.
az identity list --resource-group <resource group name>
자세한 내용은 az identity list을 참조하세요.
포털에서 관리 ID 인증을 위한 클라이언트를 찾으려면 Azure Portal에서 관리 ID로 이동하여 관련 ID 이름을 선택합니다. 관리 ID의 개요 창에서 클라이언트 ID값을 복사합니다.
Microsoft Entra ID 애플리케이션에 대한 클라이언트 ID를 찾으려면 다음 Azure CLI 명령을 사용합니다(또는 Microsoft Entra 애플리케이션 인증 섹션을 사용하여 이전 원격 쓰기의 첫 번째 단계 참조).
$ az ad app list --display-name < application name>
자세한 내용은 az ad app list를 참조하세요.
비고
구성 파일을 편집한 후 Prometheus를 다시 시작하여 변경 내용을 적용합니다.
원격 쓰기 데이터가 흐르는지 확인
다음 메서드를 사용하여 Prometheus 데이터가 Azure Monitor 작업 영역으로 전송되고 있는지 확인합니다.
PromQL을 사용한 Azure Monitor 메트릭 탐색기
메트릭이 Azure Monitor 작업 영역으로 이동하는지 확인하려면 Azure Portal의 Azure Monitor 작업 영역에서 메트릭을 선택합니다. Prometheus Query Language(PromQL)와 함께 메트릭 탐색기를 사용하여 자체 관리형 Prometheus 환경에서 기대하는 메트릭을 쿼리합니다. 자세한 내용은 PromQL을 사용하는 Azure Monitor 메트릭 탐색기를 참조하세요.
Azure Monitor 작업 영역의 Prometheus 탐색기
Prometheus 탐색기는 Azure 환경 내에서 Prometheus 메트릭과 상호 작용하는 편리한 방법을 제공하므로 모니터링 및 문제 해결이 더 효율적입니다. Prometheus 탐색기를 사용하려면 Azure Portal에서 Azure Monitor 작업 영역으로 이동하여 Prometheus 탐색기를 선택합니다. 그런 다음 자체 관리되는 Prometheus 환경에서 기대하는 메트릭을 쿼리할 수 있습니다.
자세한 내용은 Azure 통합 문서를 사용하여 Prometheus 메트릭 쿼리를 참조하세요.
그라파나 주
Grafana에서 PromQL 쿼리를 사용하여 결과가 예상 데이터를 반환하는지 확인합니다. Grafana를 구성하려면 Grafana를 관리되는 Prometheus로 설정하는 방법에 대한 문서를 참조하세요.
원격 쓰기 문제 해결
Azure Monitor 작업 영역에 원격 데이터가 표시되지 않는 경우 일반적인 문제 및 해결 방법은 원격 쓰기 문제를 참조하세요.
관련 콘텐츠