Share via


컨테이너 인사이트를 사용하여 Prometheus 메트릭을 Log Analytics 작업 영역으로 보내기

이 문서에서는 Container Insights로 모니터링되는 Kubernetes 클러스터에서 Log Analytics 작업 영역으로 Prometheus 메트릭을 보내는 방법을 설명합니다. 이 구성을 수행하기 전에 먼저 클러스터 모니터링에 권장되는 방법인 Prometheus용 Azure Monitor 관리 서비스를 사용하여 클러스터에서 Prometheus 메트릭을 스크래핑하는지 확인해야 합니다. 로그 쿼리로그 검색 경고를 사용하여 분석할 수 있는 Log Analytics 작업 영역에 이 동일한 데이터를 보내려는 경우에만 이 문서에 설명된 구성을 사용합니다.

이 구성을 수행하려면 Azure Monitor 에이전트에 대한 모니터링 추가 기능을 구성해야 합니다. 이는 Container Insights에서 Log Analytics 작업 영역으로 데이터를 보내는 데 사용하는 것과 동일합니다. 다음 다이어그램과 같이 내보내기 또는 Pod를 통해 Prometheus 메트릭 엔드포인트를 공개한 다음 Container Insights에서 사용하는 Azure Monitor 에이전트에 대한 모니터링 추가 기능을 구성해야 합니다.

Diagram of container monitoring architecture sending Prometheus metrics to Azure Monitor Logs.

Prometheus 스크래핑 설정(로그로 저장된 메트릭의 경우)

Prometheus에서 메트릭의 활성 스크래핑은 아래의 두 가지 관점 중 하나에서 수행되며 메트릭은 구성된 로그 분석 작업 영역으로 전송됩니다.

  • 클러스터 전체: ConfigMap 섹션 [Prometheus data_collection_settings.cluster]에 정의됩니다.
  • 노드 전체: ConfigMap 섹션 [Prometheus_data_collection_settings.node]에 정의됩니다.
엔드포인트 범위 예시
Pod 주석 클러스터 전체 prometheus.io/scrape: "true"
prometheus.io/path: "/mymetrics"
prometheus.io/port: "8000"
prometheus.io/scheme: "http"
Kubernetes 서비스 클러스터 전체 http://my-service-dns.my-namespace:9100/metrics
http://metrics-server.kube-system.svc.cluster.local/metrics
URL/엔드포인트 노드별 및/또는 클러스터 전체 http://myurl:9101/metrics

URL을 지정하면 컨테이너 인사이트는 엔드포인트만 긁습니다. Kubernetes 서비스가 지정된 경우 클러스터 DNS 서버로 서비스 이름을 확인하여 IP 주소를 가져옵니다. 그런 다음, 확인된 서비스가 스크래핑됩니다.

범위 데이터 형식 설명
클러스터 전체 다음 세 가지 방법 중 하나를 지정하여 엔드포인트의 메트릭을 수집합니다.
urls 문자열 쉼표로 구분된 배열 HTTP 엔드포인트(IP 주소 또는 올바른 URL 경로 중 하나)입니다. 예: urls=[$NODE_IP/metrics] ($NODE _IP는 특정 Container Insights 매개 변수이며 노드 IP 주소 대신 사용할 수 있습니다. 모두 대문자여야 합니다.)
kubernetes_services 문자열 쉼표로 구분된 배열 kube-state-metrics에서 메트릭을 긁어내는 Kubernetes 서비스의 배열입니다. 여기서는 정규화된 do기본 이름을 사용해야 합니다. 예를 들어kubernetes_services = ["http://metrics-server.kube-system.svc.cluster.local/metrics",http://my-service-dns.my-namespace.svc.cluster.local:9100/metrics]
monitor_kubernetes_pods 부울 true 또는 false 클러스터 전체 설정으로 설정 true 하면 Container Insights 에이전트는 다음 Prometheus 주석에 대해 전체 클러스터에서 Kubernetes Pod를 긁어냅니다.
prometheus.io/scrape:
prometheus.io/scheme:
prometheus.io/path:
prometheus.io/port:
prometheus.io/scrape 부울 true 또는 false Pod의 스크래핑을 사용하도록 설정하고 monitor_kubernetes_podstrue로 설정해야 합니다.
prometheus.io/scheme 문자열 http 기본적으로 HTTP를 통해 스크래핑합니다.
prometheus.io/path 문자열 쉼표로 구분된 배열 메트릭을 가져올 HTTP 리소스 경로입니다. 메트릭 경로가 /metrics가 아닌 경우에는 이 주석을 사용하여 정의합니다.
prometheus.io/port 문자열 9102 스크래핑할 포트를 지정합니다. 포트가 설정되지 않은 경우 기본값은 9102입니다.
monitor_kubernetes_pods_namespaces 문자열 쉼표로 구분된 배열 Kubernetes Pod에서 메트릭을 긁어내는 네임스페이스의 허용 목록입니다.
예를 들어 monitor_kubernetes_pods_namespaces = ["default1", "default2", "default3"]
노드 전체 urls 문자열 쉼표로 구분된 배열 HTTP 엔드포인트(IP 주소 또는 올바른 URL 경로 중 하나)입니다. 예: urls=[$NODE_IP/metrics] ($NODE _IP는 특정 Container Insights 매개 변수이며 노드 IP 주소 대신 사용할 수 있습니다. 모두 대문자여야 합니다.)
노드 전체 또는 클러스터 전체 interval 문자열 60초 컬렉션 간격 기본값은 1분(60초)입니다. [prometheus_data_collection_settings.node] 및/또는 [prometheus_data_collection_settings.cluster]에 대해 수집을 s, m 및 h와 같은 시간 단위로 수정할 수 있습니다.
노드 전체 또는 클러스터 전체 fieldpass
fielddrop
문자열 쉼표로 구분된 배열 허용()과 허용 안 함(fieldpass) 목록을 설정하여 엔드포인트에서 수집하거나 수집하지 않을 특정 메트릭을fielddrop 지정할 수 있습니다. 먼저 허용 목록을 설정해야 합니다.

Prometheus 스크랩 구성을 지정하도록 구성지도 구성(로그로 저장된 메트릭의 경우)

다음 단계를 수행하여 클러스터에 대한 ConfigMap 구성 파일을 구성합니다. 구성지도 전역 목록이며 에이전트에 하나의 ConfigMap만 적용할 수 있습니다. 다른 ConfigMaps를 컬렉션에 과도하게 사용할 수 없습니다.

  1. 템플릿 ConfigMap YAML 파일을 다운로드하고 container-azm-ms-agentconfig.yaml로 저장합니다. 클러스터에 ConfigMap을 이미 배포했으며 최신 구성으로 업데이트하려는 경우 이전에 사용한 ConfigMap 파일을 편집합니다.

  2. 사용자 지정 항목을 사용하여 ConfigMap YAML 파일을 편집하고 Prometheus 메트릭을 스크래핑합니다.

    클러스터 전체에서 Kubernetes 서비스를 수집하려면 다음 예제를 사용하여 ConfigMap 파일을 구성합니다.

    prometheus-data-collection-settings: |- ​
    # Custom Prometheus metrics data collection settings
    [prometheus_data_collection_settings.cluster] ​
    interval = "1m"  ## Valid time units are s, m, h.
    fieldpass = ["metric_to_pass1", "metric_to_pass12"] ## specify metrics to pass through ​
    fielddrop = ["metric_to_drop"] ## specify metrics to drop from collecting
    kubernetes_services = ["http://my-service-dns.my-namespace:9102/metrics"]
    
  3. 다음 kubectl 명령을 kubectl apply -f <configmap_yaml_file.yaml>실행합니다.

    예: kubectl apply -f container-azm-ms-agentconfig.yaml

구성 변경을 적용하려면 몇 분 정도 걸릴 수 있습니다. 클러스터의 모든 ama-logs Pod가 다시 시작됩니다. 다시 시작이 완료되면 다음과 유사한 메시지가 표시되고 결과(configmap "container-azm-ms-agentconfig" created)가 포함됩니다.

구성 확인

구성이 클러스터에 성공적으로 적용되었는지 확인하려면 다음 명령을 사용하여 에이전트 Pod kubectl logs ama-logs-fdf58 -n=kube-system의 로그를 검토합니다.

Azure Monitor 에이전트 Pod의 구성 오류가 있는 경우 출력은 다음 예제와 유사한 오류를 표시합니다.

***************Start Config Processing******************** 
config::unsupported/missing config schema version - 'v21' , using defaults

구성 변경 내용 적용과 관련한 오류도 검토할 수 있습니다. 다음 옵션을 사용하여 구성 변경 및 Prometheus 메트릭 스크래핑에 대한 추가적인 문제 해결을 수행할 수 있습니다.

  • 같은 kubectl logs 명령을 사용하여 에이전트 Pod 로그에서.

  • 라이브 데이터에서. 라이브 데이터 로그는 다음 예제와 유사한 오류를 표시합니다.

    2019-07-08T18:55:00Z E! [inputs.prometheus]: Error in plugin: error making HTTP request to http://invalidurl:1010/metrics: Get http://invalidurl:1010/metrics: dial tcp: lookup invalidurl on 10.0.0.10:53: no such host
    
  • Log Analytics 작업 영역의 KubeMonAgentEvents 테이블에서. 데이터는 1시간마다 스크래핑 오류에 대한 경고 심각도 및 구성 오류의 오류 심각도와 함께 전송됩니다. 오류가 없으면 테이블의 항목에 심각도 정보가 포함된 데이터가 있으며 오류가 보고되지 않습니다. Tags 속성은 오류가 발생한 Pod 및 컨테이너 ID에 대한 상세 정보와, 첫 번째 발생, 마지막 발생 및 지난 한 시간 동안의 횟수를 포함합니다.

  • Azure Red Hat OpenShift v3.x 및 v4.x의 경우 ContainerLog 테이블을 검색해 Azure Monitor Agent 로그를 확인하여 openshift-azure-logging의 로그 수집이 사용하도록 설정되어 있는지 확인합니다.

오류가 발생하면 Azure Monitor 에이전트에서 파일을 구문 분석하지 못하게 되어 다시 시작되고 기본 구성을 사용하게 됩니다. Azure Red Hat OpenShift v3.x가 아닌 클러스터의 ConfigMap에서 오류를 수정한 후 YAML 파일을 저장하고 다음 명령을 실행하여 업데이트된 ConfigMap을 적용합니다. kubectl apply -f <configmap_yaml_file.yaml.

Azure Red Hat OpenShift v3.x의 경우 oc edit configmaps container-azm-ms-agentconfig -n openshift-azure-logging 명령을 실행하여 업데이트된 ConfigMap을 편집 및 저장합니다.

Prometheus 메트릭 데이터 쿼리

Azure Monitor에서 스크래핑하는 Prometheus 메트릭과 에이전트에서 보고하는 모든 구성/스크래핑 오류를 보려면 Prometheus 메트릭 데이터 쿼리를 검토합니다.

Grafana에서 Prometheus 메트릭 보기

컨테이너 인사이트는 Grafana 대시보드의 Log Analytics 작업 영역에 저장된 메트릭을 볼 수 있도록 지원합니다. Grafana의 대시보드 리포지토리에서 다운로드할 수 있는 템플릿이 제공되었습니다. 시작 및 참조를 위해 템플릿을 사용하여 사용자 지정 Grafana 대시보드에서 시각화를 위해 모니터링되는 클러스터에서 다른 데이터를 쿼리하는 방법을 알아 볼 수 있습니다.

다음 단계