Amazon 클러스터에서 실행되는 Grafana를 사용하여 쿼리 EKS - Amazon Managed Service for Prometheus

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon 클러스터에서 실행되는 Grafana를 사용하여 쿼리 EKS

Amazon Managed Service for Prometheus에서는 Grafana 버전 7.3.5 이상을 사용하여 Amazon Managed Service for Prometheus 워크스페이스에서 지표를 쿼리할 수 있습니다. 버전 7.3.5 이상에는 서명 버전 4 (SigV4) 인증에 대한 지원이 포함됩니다. AWS

Prometheus용 Amazon 관리 서비스와 함께 작동하도록 Grafana를 설정하려면 정책 또는,, 및 권한이 AmazonPrometheusQueryAccess있는 계정에 로그인해야 합니다. aps:QueryMetrics aps:GetMetricMetadata aps:GetSeries aps:GetLabels 자세한 내용은 IAM 권한 및 정책 단원을 참조하십시오.

SigV4를 AWS 설정하세요.

Grafana는 서명 버전 4 (SigV4) AWS 인증을 지원하는 새로운 기능을 추가했습니다. 자세한 내용은 서명 버전 4 서명 프로세스를 참조하세요. Grafana 서버에서는 이 기능이 기본적으로 비활성화되어 있습니다. 이 기능을 활성화하기 위한 다음 지침은 Helm을 사용하여 Kubernetes 클러스터에 Grafana를 배포한다고 가정합니다.

Grafana 7.3.5 이상 버전의 서버에서 SigV4를 활성화하려면
  1. Grafana 구성을 재정의하는 새 업데이트 파일을 만들고 이름을 amp_query_override_values.yaml로 지정합니다.

  2. 다음 콘텐츠를 복사하고 파일에 입력한 후 파일을 저장합니다. Replace account-id Grafana 서버가 실행되고 있는 AWS 계정 ID를 사용합니다.

    serviceAccount: name: "amp-iamproxy-query-service-account" annotations: eks.amazonaws.com/role-arn: "arn:aws:iam::account-id:role/amp-iamproxy-query-role" grafana.ini: auth: sigv4_auth_enabled: true

    해당 YAML 파일 콘텐츠에서 amp-iamproxy-query-role 는 다음 섹션에서 생성할 역할의 이름입니다. 서비스 계정의 IAM 역할 설정 워크스페이스 쿼리를 위한 역할을 이미 생성한 경우 이 역할을 자체 역할 이름으로 바꿀 수 있습니다.

이 파일은 나중에 Helm을 사용하여 Grafana 서버 업그레이드에서 사용합니다.

서비스 계정의 IAM 역할 설정

EKSAmazon 클러스터에서 Grafana 서버를 사용하는 경우 액세스 제어를 위해 서비스 계정의 역할 (서비스 역할이라고도 함) 을 IAM 사용하는 것이 좋습니다. 이 작업을 수행하여 IAM 역할을 Kubernetes 서비스 계정과 연결하면 서비스 계정이 해당 서비스 계정을 사용하는 모든 포드의 컨테이너에 AWS 권한을 제공할 수 있습니다. 자세한 내용은 서비스 계정의 IAM역할을 참조하십시오.

쿼리를 위해 이러한 서비스 역할을 아직 설정하지 않은 경우 지표 쿼리를 위해 서비스 계정에 대한 IAM 역할 설정의 지침에 따라 역할을 설정하세요.

그런 다음, 신뢰 관계 조건에 Grafana 서비스 계정을 추가해야 합니다.

신뢰 관계 조건에 Grafana 서비스 계정을 추가하려면
  1. 터미널 창에서 Grafana 서버의 네임스페이스와 서비스 계정 이름을 확인합니다. 예를 들어, 다음 명령을 사용할 수 있습니다.

    kubectl get serviceaccounts -n grafana_namespace
  2. Amazon EKS 콘솔에서 EKS 클러스터와 연결된 서비스 계정의 IAM 역할을 엽니다.

  3. 신뢰 관계 편집을 선택합니다.

  4. 1단계의 명령 출력에서 찾은 Grafana 네임스페이스와 Grafana 서비스 계정 이름을 포함하도록 조건을 업데이트합니다. 다음은 예입니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:oidc-provider/oidc.eks.aws_region.amazonaws.com/id/openid" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region.amazonaws.com/id/openid:sub": [ "system:serviceaccount:aws-amp:amp-iamproxy-query-service-account", "system:serviceaccount:grafana-namespace:grafana-service-account-name" ] } } } ] }
  5. 신뢰 정책 업데이트를 선택합니다.

Helm을 사용하여 Grafana 서버 업그레이드

이 단계는 이전 섹션에서 amp_query_override_values.yaml 파일에 추가한 항목을 사용하도록 Grafana 서버를 업그레이드합니다.

다음 명령을 실행합니다. Grafana용 차트 Helm에 대한 자세한 내용은 Grafana 커뮤니티 Kubernetes 차트 Helm을 참조하세요.

helm repo add grafana https://grafana.github.io/helm-charts
helm upgrade --install grafana grafana/grafana -n grafana_namespace -f ./amp_query_override_values.yaml

Grafana에 Prometheus 데이터 소스 추가

다음 단계는 Amazon Managed Service for Prometheus 지표를 쿼리하도록 Grafana의 Prometheus 데이터 소스를 설정하는 방법을 설명합니다.

Grafana 서버에 Prometheus 데이터 소스를 추가하려면
  1. Grafana 콘솔을 엽니다.

  2. 구성에서 데이터 소스를 선택합니다.

  3. 데이터 소스 추가를 선택합니다.

  4. Prometheus를 선택합니다.

  5. 의 경우 HTTP URL Prometheus용 Amazon Managed Service 콘솔의 작업 공간 세부 정보 페이지에 URL 표시되는 엔드포인트 - 쿼리를 지정하십시오.

  6. Prometheus 데이터 소스가 자동으로 추가하므로 방금 지정한 항목에서 에 추가된 /api/v1/query 문자열을 제거합니다. HTTP URL URL

  7. 인증에서 SigV4 인증 토글을 선택하여 활성화합니다.

    역할 수임 ARN 및 외부 ID 필드를 비워 두십시오. 그런 다음, 기본 리전으로 Amazon Managed Service for Prometheus 워크스페이스가 있는 리전을 선택합니다.

  8. 저장 및 테스트를 선택합니다.

    데이터 소스가 작동 중입니다. 메시지가 표시됩니다.

  9. 새 데이터 소스에 대해 PromQL 쿼리를 테스트합니다.

    1. 탐색을 선택합니다.

    2. 다음과 같은 샘플 PromQL 쿼리를 실행합니다.

      prometheus_tsdb_head_series