Amazon Managed Grafana를 사용한 Amazon EKS 인프라 모니터링 솔루션 - Amazon Managed Grafana

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

Amazon Managed Grafana를 사용한 Amazon EKS 인프라 모니터링 솔루션

Amazon Elastic Kubernetes Service 인프라 모니터링은 Amazon Managed Grafana가 사용되는 가장 일반적인 시나리오 중 하나입니다. 이 페이지에서는 이 시나리오에 대한 템플릿 프로젝트를 제공하는 솔루션을 설명합니다. 솔루션은 AWS Cloud Development Kit (AWS CDK) 또는 Terraform 를 사용하여 설치할 수 있습니다.

이 솔루션은 다음을 구성합니다.

  • Amazon Managed Service for Prometheus 워크스페이스는 Amazon EKS 클러스터의 지표를 저장하고, 지표를 스크레이프하여 해당 워크스페이스로 푸시하는 관리형 수집기를 생성합니다. 자세한 내용은 AWS 관리형 수집기를 사용하여 지표 수집을 참조하세요.

  • CloudWatch 에이전트를 사용하여 Amazon EKS 클러스터에서 로그 수집. 로그는 에 저장 CloudWatch되며 Amazon Managed Grafana에서 쿼리합니다. 자세한 내용은 Amazon용 로깅을 참조하세요. EKS

  • Amazon Managed Grafana 워크스페이스는 이러한 로그 및 지표를 가져오고 클러스터를 모니터링하는 데 도움이 되는 대시보드 및 알림을 생성합니다.

이 솔루션을 적용하면 다음과 같은 대시보드와 알림이 생성됩니다.

  • 전체 Amazon EKS 클러스터 상태를 평가합니다.

  • Amazon EKS 제어 영역의 상태와 성능을 보여줍니다.

  • Amazon EKS 데이터 영역의 상태와 성능을 보여줍니다.

  • Kubernetes 네임스페이스 전반의 Amazon EKS 워크로드에 대한 인사이트를 표시합니다.

  • , 메모리CPU, 디스크 및 네트워크 사용량을 포함한 네임스페이스 전반의 리소스 사용량을 표시합니다.

이 솔루션 소개

이 솔루션은 Amazon EKS 클러스터에 대한 지표를 제공하도록 Amazon Managed Grafana 워크스페이스를 구성합니다. 지표는 대시보드 및 알림을 생성하는 데 사용됩니다.

지표는 Kubernetes 제어 및 데이터 영역의 상태와 성능에 대한 통찰력을 제공하여 Amazon EKS 클러스터를 더 효과적으로 운영하는 데 도움이 됩니다. 리소스 사용량에 대한 자세한 모니터링을 포함하여 노드 수준에서 포드, Kubernetes 수준까지 Amazon EKS 클러스터를 이해할 수 있습니다.

이 솔루션은 예상 및 수정 기능을 모두 제공합니다.

  • 예상 기능은 다음과 같습니다.

  • 수정 기능에는 다음이 포함됩니다.

    • 인프라 및 Kubernetes 워크로드 수준에서 문제를 감지하는 데 걸리는 평균 시간(MTTD)을 줄입니다. 예를 들어 문제 해결 대시보드를 보면 무엇이 잘못되었는지에 대한 가설을 빠르게 테스트하고 제거할 수 있습니다.

    • 스택에서 문제가 발생하는 위치를 확인합니다. 예를 들어 Amazon EKS 제어 영역은 에서 완전히 관리 AWS 되며 API 서버가 과부하되거나 연결에 영향을 받는 경우 Kubernetes 배포 업데이트와 같은 특정 작업이 실패할 수 있습니다.

다음 이미지는 솔루션의 대시보드 폴더 샘플을 보여줍니다.

이 솔루션을 사용하여 구축된 Grafana 대시보드 폴더의 예를 보여주는 이미지입니다.

대시보드를 선택하여 자세한 내용을 볼 수 있습니다. 예를 들어 워크로드용 리소스 계산을 선택하면 다음 이미지와 같은 대시보드가 표시됩니다.

이 솔루션을 사용하여 구축된 CPU 사용량을 보여주는 Grafana 대시보드의 예를 보여주는 이미지입니다.

지표는 스크레이프 간격 1분으로 스크레이핑됩니다. 대시보드는 특정 지표를 기반으로 1분, 5분 또는 그 이상으로 집계된 지표를 표시합니다.

로그는 대시보드에도 표시되므로 로그를 쿼리하고 분석하여 문제의 근본 원인을 찾을 수 있습니다. 다음 이미지는 로그 대시보드를 보여줍니다.

이 솔루션을 사용하여 구축된 로그가 있는 Grafana 대시보드의 예를 보여주는 이미지입니다.

이 솔루션으로 추적되는 지표 목록은 섹션을 참조하세요추적된 지표 목록.

솔루션에서 생성된 알림 목록은 섹션을 참조하세요생성된 알림 목록.

비용

이 솔루션은 워크스페이스에서 리소스를 생성하고 사용합니다. 다음을 포함하여 생성된 리소스의 표준 사용에 대한 요금이 부과됩니다.

  • 사용자의 Amazon Managed Grafana 워크스페이스 액세스. 요금에 대한 자세한 내용은 Amazon Managed Grafana 요금 섹션을 참조하세요.

  • Amazon Managed Service for Prometheus 에이전트리스 수집기 사용 및 지표 분석(쿼리 샘플 처리)을 포함한 Amazon Managed Service for Prometheus 지표 수집 및 스토리지. 이 솔루션에서 사용하는 지표 수는 Amazon EKS 클러스터 구성 및 사용량에 따라 달라집니다.

    를 사용하여 Amazon Managed Service for Prometheus에서 수집 및 스토리지 지표를 볼 수 있습니다. CloudWatch 자세한 내용은 Amazon Managed Service for Prometheus 사용 설명서CloudWatch 지표를 참조하세요.

    Amazon Managed Service for Prometheus 요금 페이지에서 요금 계산기를 사용하여 비용을 추정할 수 있습니다. 지표 수는 클러스터의 노드 수와 애플리케이션이 생성하는 지표에 따라 달라집니다.

  • CloudWatch 수집, 저장 및 분석을 기록합니다. 기본적으로 로그 보존은 만료되지 않도록 설정되어 있습니다. 에서 이를 조정할 수 있습니다 CloudWatch. 요금에 대한 자세한 내용은 Amazon CloudWatch 요금 섹션을 참조하세요.

  • 네트워킹 비용. 가용 영역, 리전 또는 기타 트래픽 간에 표준 AWS 네트워크 요금이 발생할 수 있습니다.

각 제품의 요금 페이지에서 사용할 수 있는 요금 계산기는 솔루션의 잠재적 비용을 이해하는 데 도움이 될 수 있습니다. 다음 정보는 Amazon EKS 클러스터와 동일한 가용 영역에서 실행되는 솔루션에 대한 기본 비용을 얻는 데 도움이 될 수 있습니다.

제품 계산기 지표

Amazon Managed Service for Prometheus

활성 시리즈

8000(기본)

15,000(노드당)

평균 수집 간격

60(초)

Amazon Managed Service for Prometheus(관리형 수집기)

수집기 수

1

샘플 수

15(기본)

150(노드당)

규칙 수

161

평균 규칙 추출 간격

60(초)

Amazon Managed Grafana

활성 편집기/관리자 수

1(또는 사용자 기준)

CloudWatch (로그)

표준 로그: 수집된 데이터

24.5GB(기본)

0.5GB(노드당)

로그 스토리지/보관(표준 및 벤디드 로그)

로그 저장 예: 1개월 보존 가정

스캔된 예상 로그 데이터

Grafana의 각 로그 인사이트 쿼리는 지정된 기간 동안 그룹의 모든 로그 콘텐츠를 스캔합니다.

이 숫자는 추가 소프트웨어 EKS 없이 실행되는 솔루션의 기본 번호입니다. 이렇게 하면 기본 비용의 추정치가 표시됩니다. 또한 Amazon Managed Grafana 워크스페이스, Amazon Managed Service for Prometheus 워크스페이스 및 Amazon EKS 클러스터가 동일한 가용 영역에 있는지 여부에 따라 달라지는 네트워크 사용 비용 AWS 리전, 및 를 제외합니다VPN.

참고

이 테이블의 항목에 리소스당 (base) 값과 값(예: (per node))이 포함된 경우 리소스당 값에 해당 리소스의 수를 곱한 기본 값을 추가해야 합니다. 예를 들어, 평균 활성 시계열 에 인 숫자를 입력합니다8000 + the number of nodes in your cluster * 15,000. 노드가 2개인 경우 38,000, 즉 를 입력합니다8000 + ( 2 * 15,000 ).

사전 조건

이 솔루션을 사용하려면 솔루션을 사용하기 전에 다음을 수행해야 합니다.

  1. 모니터링하려는 Amazon Elastic Kubernetes Service 클러스터가 있거나 생성되어야 하며, 클러스터에는 하나 이상의 노드가 있어야 합니다. 프라이빗 액세스를 포함하려면 클러스터에 API 서버 엔드포인트 액세스가 설정되어 있어야 합니다(공용 액세스를 허용할 수도 있음).

    인증 모드에는 API 액세스가 포함되어야 합니다( API 또는 로 설정 가능API_AND_CONFIG_MAP). 이렇게 하면 솔루션 배포가 액세스 항목을 사용할 수 있습니다.

    클러스터에 다음을 설치해야 합니다(콘솔을 통해 클러스터를 생성할 때는 기본적으로 사실이지만 또는 를 사용하여 클러스터를 AWS API 생성하는 경우 추가해야 함 AWS CLI). AWS CNICoreDNS 및 Kube-proxy AddOns.

    클러스터 이름을 저장하여 나중에 를 지정합니다. 이는 Amazon EKS 콘솔의 클러스터 세부 정보에서 확인할 수 있습니다.

    참고

    Amazon EKS 클러스터를 생성하는 방법에 대한 자세한 내용은 Amazon 시작하기를 참조하세요EKS.

  2. Amazon 클러스터와 동일한 에서 Amazon Managed Service for Prometheus 워크스페이스를 생성해야 합니다. AWS 계정 EKS 자세한 내용은 Amazon Managed Service for Prometheus 사용 설명서작업 영역 생성을 참조하세요.

    나중에 지정ARN하려면 Amazon Managed Service for Prometheus 워크스페이스를 저장합니다.

  3. Amazon EKS 클러스터와 동일한 에서 Grafana 버전 9 이상의 Amazon Managed Grafana 워크스페이스를 생성해야 합니다. AWS 리전 새 작업 영역 생성에 대한 자세한 내용은 섹션을 참조하세요Amazon Managed Grafana 워크스페이스 생성.

    워크스페이스 역할에는 Amazon Managed Service for Prometheus 및 Amazon CloudWatch 에 액세스할 수 있는 권한이 있어야 합니다APIs. 이렇게 하는 가장 쉬운 방법은 서비스 관리형 권한을 사용하고 Amazon Managed Service for Prometheus 및 를 선택하는 것입니다 CloudWatch. 워크스페이스 IAM 역할에 AmazonPrometheusQueryAccessAmazonGrafanaCloudWatchAccess 정책을 수동으로 추가할 수도 있습니다.

    나중에 지정할 Amazon Managed Grafana 작업 영역 ID 및 엔드포인트를 저장합니다. ID는 형식입니다g-123example. ID와 엔드포인트는 Amazon Managed Grafana 콘솔에서 찾을 수 있습니다. 엔드포인트는 워크스페이스URL의 이며 ID를 포함합니다. 예: https://g-123example.grafana-workspace.<region>.amazonaws.com/.

  4. Terraform을 사용하여 솔루션을 배포하는 경우 계정에서 액세스할 수 있는 Amazon S3 버킷을 생성해야 합니다. 배포를 위해 Terraform 상태 파일을 저장하는 데 사용됩니다.

    나중에 지정할 Amazon S3 버킷 ID를 저장합니다.

  5. Amazon Managed Service for Prometheus 알림 규칙을 보려면 Amazon Managed Grafana 워크스페이스에 대해 Grafana 알림을 활성화해야 합니다.

    또한 Amazon Managed Grafana는 Prometheus 리소스에 대해 다음과 같은 권한을 가져야 합니다. 데이터 소스에 대한 Amazon 관리형 Grafana 권한 및 정책 AWS에 설명된 서비스 관리형 또는 고객 관리형 정책에 추가해야 합니다.

    • aps:ListRules

    • aps:ListAlertManagerSilences

    • aps:ListAlertManagerAlerts

    • aps:GetAlertManagerStatus

    • aps:ListAlertManagerAlertGroups

    • aps:PutAlertManagerSilences

    • aps:DeleteAlertManagerSilence

참고

솔루션을 설정하는 데 반드시 필요한 것은 아니지만 사용자가 생성된 대시보드에 액세스하기 전에 Amazon Managed Grafana 워크스페이스에서 사용자 인증을 설정해야 합니다. 자세한 내용은 아마존 매니지드 Grafana 워크스페이스에서 사용자 인증 단원을 참조하십시오.

이 솔루션 사용

이 솔루션은 Amazon EKS 클러스터의 보고 및 모니터링 지표를 지원하도록 AWS 인프라를 구성합니다. AWS Cloud Development Kit (AWS CDK) 또는 Terraform 를 사용하여 설치할 수 있습니다.

Using AWS CDK

이 솔루션을 제공하는 한 가지 방법은 AWS CDK 애플리케이션입니다. 사용하려는 리소스에 대한 정보를 제공하면 솔루션이 스크레이퍼, 로그 및 대시보드를 생성합니다.

참고

이 단계에서는 AWS CLI, AWS CDK및 가 NPM 설치된 환경이 있다고 가정합니다. 모든 사전 조건이 있는 환경을 보유하는 한 가지 방법은 를 사용하는 것입니다AWS CloudShell.

이 솔루션을 사용하여 를 사용하여 Amazon EKS 클러스터를 모니터링하려면 AWS CDK
  1. 모든 사전 조건 단계를 완료했는지 확인합니다.

  2. Amazon S3에서 솔루션의 모든 파일을 다운로드합니다. 파일은 에 있으며 다음 Amazon S3 명령을 사용하여 다운로드할 s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac수 있습니다. 명령줄 환경의 폴더에서 이 명령을 실행합니다.

    aws s3 sync s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac/ .

    이러한 파일은 수정할 필요가 없습니다.

  3. 명령줄 환경(솔루션 파일을 다운로드한 폴더에서)에서 다음 명령을 실행합니다.

    필요한 환경 변수를 설정합니다. Replace REGION, AMG_ENDPOINT, EKS_CLUSTER, 및 AMP_ARN AWS 리전, Amazon Managed Grafana 워크스페이스 엔드포인트( 양식 http://g-123example.grafana-workspace.us-east-1.amazonaws.com), Amazon EKS 클러스터 이름 및 Amazon Managed Service for Prometheus 워크스페이스 를 사용합니다ARN.

    export AWS_REGION=REGION export AMG_ENDPOINT=AMG_ENDPOINT export EKS_CLUSTER_NAME=EKS_CLUSTER export AMP_WS_ARN=AMP_ARN
  4. Grafana 를 호출하기 위한 ADMIN 액세스 권한이 있는 서비스 계정 토큰HTTP을 생성해야 합니다APIs. 세부 정보는 서비스 계정을 사용하여 Grafana로 인증 HTTP APIs을 참조하세요. 다음 명령과 AWS CLI 함께 를 사용하여 토큰을 생성할 수 있습니다. 를 교체해야 합니다.GRAFANA_ID Grafana 워크스페이스의 ID( 형식)를 사용합니다g-123example. 이 키는 7,200초 또는 2시간 후에 만료됩니다. 필요한 경우 시간(seconds-to-live)을 변경할 수 있습니다. 배포에는 1시간 미만이 소요됩니다.

    GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for calling APIs export AMG_API_KEY=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)

    다음 명령을 AWS CDK 사용하여 API 키를 에 추가하여 에서 사용할 수 AWS Systems Manager 있도록 합니다. Replace AWS_REGION 에는 솔루션이 실행될 리전( 형식)이 포함됩니다us-east-1.

    aws ssm put-parameter --name "/observability-aws-solution-eks-infra/grafana-api-key" \ --type "SecureString" \ --value $AMG_API_KEY \ --region AWS_REGION \ --overwrite
  5. 다음 make 명령을 실행하면 프로젝트의 다른 종속 항목이 설치됩니다.

    make deps
  6. 마지막으로 AWS CDK 프로젝트를 실행합니다.

    make build && make pattern aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME deploy
  7. [선택 사항] 스택 생성이 완료된 후 각 에 대한 다른 사전 조건(별도의 Amazon Managed Grafana 및 Amazon Managed Service for Prometheus 워크스페이스 포함)을 완료하는 한 동일한 환경을 사용하여 동일한 리전의 다른 Amazon EKS 클러스터에 대한 스택 인스턴스를 더 많이 생성할 수 있습니다. 새 파라미터로 export 명령을 재정의해야 합니다.

스택 생성이 완료되면 Amazon Managed Grafana 워크스페이스에 Amazon EKS 클러스터의 지표를 보여주는 대시보드가 채워집니다. 스크레이퍼가 지표를 수집하기 시작하면 지표가 표시되는 데 몇 분 정도 걸립니다.

Using Terraform

이 솔루션을 제공하는 한 가지 방법은 Terraform 솔루션입니다. 사용하려는 리소스에 대한 정보를 제공하면 솔루션이 스크레이퍼, 로그 및 대시보드를 생성합니다.

이 솔루션을 사용하여 Terraform을 사용하여 Amazon EKS 클러스터를 모니터링하려면
  1. 모든 사전 조건 단계를 완료했는지 확인합니다.

  2. Amazon S3에서 솔루션의 모든 파일을 다운로드합니다. 파일은 에 있으며 다음 Amazon S3 명령을 사용하여 다운로드할 s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/수 있습니다. 명령줄 환경의 폴더에서 이 명령을 실행한 다음 디렉터리를 배포할 폴더로 변경합니다.

    aws s3 sync s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/ . cd eks-monitoring

    이러한 파일은 수정할 필요가 없습니다.

  3. 명령줄 환경(솔루션 파일을 다운로드한 폴더에서)에서 다음 명령을 실행합니다.

    필요한 환경 변수를 설정합니다. Replace REGION, AMG_ENDPOINT, EKS_CLUSTER, AMP_ARN, 및 S3_ID, 새 리소스를 배포하려는 AWS 리전 위치(예: us-east-1), Amazon Managed Grafana 워크스페이스 엔드포인트( 형식http://g-123example.grafana-workspace.us-east-1.amazonaws.com), Amazon EKS 클러스터 이름, Amazon Managed Service for Prometheus 워크스페이스 ARN및 Amazon S3 버킷 ID 포함.

    export TF_VAR_aws_region=REGION export TF_VAR_amg_endpoint=AMG_ENDPOINT export TF_VAR_eks_cluster_name=EKS_CLUSTER export TF_VAR_amp_ws_arn=AMP_ARN export TF_VAR_s3_bucket_id=S3_ID
  4. Grafana 를 호출하기 위한 ADMIN 액세스 권한이 있는 서비스 계정 토큰HTTP을 생성해야 합니다APIs. 세부 정보는 서비스 계정을 사용하여 Grafana로 인증 HTTP APIs을 참조하세요. 다음 명령과 AWS CLI 함께 를 사용하여 토큰을 생성할 수 있습니다. 를 교체해야 합니다.GRAFANA_ID Grafana 워크스페이스의 ID( 형식)를 사용합니다g-123example. 이 키는 7,200초 또는 2시간 후에 만료됩니다. 필요한 경우 시간(seconds-to-live)을 변경할 수 있습니다. 배포에는 1시간 미만이 소요됩니다.

    GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \ --workspace-id GRAFANA_ID \ --grafana-role ADMIN \ --name grafana-operator-key \ --query 'id' \ --output text) # creates a new token for running Terraform export TF_VAR_grafana_api_key=$(aws grafana create-workspace-service-account-token \ --workspace-id $managed_grafana_workspace_id \ --name "grafana-operator-key-$(date +%s)" \ --seconds-to-live 7200 \ --service-account-id $GRAFANA_SA_ID \ --query 'serviceAccountToken.key' \ --output text)
    참고

    위의 첫 번째 단계에서는 서비스 계정이 이미 있는 경우 작업 영역에 대한 서비스 계정을 생성할 필요가 없습니다. 이 경우 를 교체합니다.$GRAFANA_SA_ID 서비스 계정의 ID를 사용합니다.

  5. 다음 terraform 명령을 실행하여 솔루션으로 Terraform을 초기화합니다.

    terraform init -reconfigure \ -backend-config="bucket=${TF_VAR_s3_bucket_id}" \ -backend-config="region=${TF_VAR_aws_region}" \ -backend-config="key=state/${TF_VAR_eks_cluster_name}/terraform.tfstate"
  6. 마지막으로 Terraform 프로젝트를 배포합니다.

    terraform apply

솔루션 생성이 완료되면 Amazon Managed Grafana 워크스페이스에 Amazon EKS 클러스터의 지표를 보여주는 대시보드가 채워집니다. 스크레이퍼가 지표를 수집하기 시작하면 지표가 표시되는 데 몇 분 정도 걸립니다.

추적된 지표 목록

이 솔루션은 Amazon EKS 클러스터에서 지표를 수집하는 스크레이퍼를 생성합니다. 이러한 지표는 Amazon Managed Service for Prometheus에 저장된 다음 Amazon Managed Grafana 대시보드에 표시됩니다. 기본적으로 스크레이퍼는 클러스터에서 노출되는 모든 Prometheus 호환 지표를 수집합니다. 더 많은 지표를 생성하는 소프트웨어를 클러스터에 설치하면 수집된 지표가 증가합니다. 원하는 경우 지표를 필터링하는 구성으로 스크레이퍼를 업데이트하여 지표 수를 줄일 수 있습니다.

다음 지표는 추가 소프트웨어가 설치되지 않은 기본 Amazon EKS 클러스터 구성에서 이 솔루션으로 추적됩니다.

지표 설명/목적

aggregator_unavailable_apiservice

APIService 이름별로 분류APIServices되어 사용할 수 없는 것으로 표시된 게이지입니다.

apiserver_admission_webhook_admission_duration_seconds_bucket

이름으로 식별되고 각 작업 및 API 리소스 및 유형에 대해 구분된 몇 초 단위의 허용 웹후크 지연 시간 히스토그램(검증 또는 허용).

apiserver_current_inflight_requests

지난 초 동안 요청 종류당 이 apiserver의 현재 사용되는 기내 요청 한도의 최대 수입니다.

apiserver_envelope_encryption_dek_cache_fill_percent

현재 캐시된 가 차지하는 캐시 슬롯의 비율입니다DEKs.

apiserver_flowcontrol_current_executing_requests

API 우선순위 및 공정성 하위 시스템의 초기(의 경우WATCH) 또는 모든(비WATCH) 실행 단계의 요청 수입니다.

apiserver_flowcontrol_rejected_requests_total

거부된 API 우선 순위 및 공정성 하위 시스템의 초기(의 경우WATCH) 또는 모든(비WATCH) 실행 단계의 요청 수입니다.

apiserver_flowcontrol_request_concurrency_limit

각 우선 순위 수준에 대해 구성된 실행 시트 수입니다.

apiserver_flowcontrol_request_execution_seconds_bucket

API 우선순위 및 공정성 하위 시스템에서 요청 실행의 초기 단계(의 경우WATCH) 또는 모든 단계(비WATCH)의 기간에 대한 버킷 히스토그램입니다.

apiserver_flowcontrol_request_queue_length_after_enqueue_count

API 우선순위 및 공정성 하위 시스템에서 요청 실행의 초기 단계(의 경우WATCH) 또는 모든(비의 경우WATCH) 단계의 수입니다.

apiserver_request

API 서버 요청을 나타냅니다.

apiserver_requested_deprecated_apis

API 그룹, 버전, 리소스, 하위 리소스 및 removed_release별로 요청, 분류된 더 이상 사용되지 APIs 않는 게이지입니다.

apiserver_request_duration_seconds

각 동사, 드라이 런 값, 그룹, 버전, 리소스, 하위 리소스, 범위 및 구성 요소에 대한 응답 지연 시간 분포를 초 단위로 표시합니다.

apiserver_request_duration_seconds_bucket

각 동사, 드라이 런 값, 그룹, 버전, 리소스, 하위 리소스, 범위 및 구성 요소에 대한 응답 지연 시간 분포의 버킷 히스토그램입니다.

apiserver_request_slo_duration_seconds

각 동사, 드라이 런 값, 그룹, 버전, 리소스, 하위 리소스, 범위 및 구성 요소에 대한 서비스 수준 목표(SLO) 응답 지연 시간 분포를 초 단위로 표시합니다.

apiserver_request_terminations_total

자체 방어로 apiserver가 종료한 요청 수입니다.

apiserver_request_total

각 동사, 드라이런 값, 그룹, 버전, 리소스, 범위, 구성 요소 및 HTTP 응답 코드에 대해 구분된 apiserver 요청의 카운터입니다.

container_cpu_usage_seconds_total

누적 cpu 소비 시간입니다.

container_fs_reads_bytes_total

읽기된 누적 바이트 수입니다.

container_fs_reads_total

완료된 누적 읽기 수입니다.

container_fs_writes_bytes_total

기록된 누적 바이트 수입니다.

container_fs_writes_total

완료된 누적 쓰기 수입니다.

container_memory_cache

총 페이지 캐시 메모리.

container_memory_rss

의 크기입니다RSS.

container_memory_swap

컨테이너 스왑 사용량.

container_memory_working_set_bytes

현재 작업 세트.

container_network_receive_bytes_total

수신된 누적 바이트 수입니다.

container_network_receive_packets_dropped_total

수신 중 삭제된 패킷의 누적 수입니다.

container_network_receive_packets_total

수신된 패킷의 누적 수입니다.

container_network_transmit_bytes_total

전송된 누적 바이트 수입니다.

container_network_transmit_packets_dropped_total

전송 중 삭제된 패킷의 누적 수입니다.

container_network_transmit_packets_total

전송된 패킷의 누적 수입니다.

etcd_request_duration_seconds_bucket

각 작업 및 객체 유형에 대한 etcd 요청 지연 시간의 버킷 히스토그램입니다.

go_goroutines

현재 존재하는 구루틴 수입니다.

go_threads

생성된 OS 스레드 수입니다.

kubelet_cgroup_manager_duration_seconds_bucket

cgroup Manager 작업에 대한 초 단위의 버킷 히스토그램입니다. 메서드에 의해 분해되었습니다.

kubelet_cgroup_manager_duration_seconds_count

cgroup Manager 작업에 대한 초 단위 기간입니다. 메서드에 의해 분해되었습니다.

kubelet_node_config_error

이 지표는 노드에 구성 관련 오류가 발생하는 경우 true(1)이고, 그렇지 않으면 false(0)입니다.

kubelet_node_name

노드의 이름입니다. 수는 항상 1입니다.

kubelet_pleg_relist_duration_seconds_bucket

에서 포드를 다시 나열하기 위한 초 단위의 버킷 히스토그램입니다PLEG.

kubelet_pleg_relist_duration_seconds_count

에서 포드를 다시 나열하기 위한 초 단위의 지속 시간 수입니다PLEG.

kubelet_pleg_relist_interval_seconds_bucket

에서 다시 나열하는 간격의 버킷 히스토그램입니다PLEG.

kubelet_pod_start_duration_seconds_count

포드가 처음 표시된 kubelet부터 포드가 실행되기 시작한 시점까지의 초 단위 지속 시간입니다.

kubelet_pod_worker_duration_seconds_bucket

단일 포드를 동기화하기 위해 초 단위로 버킷화된 지속 시간 히스토그램입니다. 작업 유형, 즉 생성, 업데이트 또는 동기화별로 분류됩니다.

kubelet_pod_worker_duration_seconds_count

단일 포드를 동기화하기 위한 초 단위의 지속 시간 수입니다. 작업 유형, 즉 생성, 업데이트 또는 동기화별로 분류됩니다.

kubelet_running_containers

현재 실행 중인 컨테이너 수입니다.

kubelet_running_pods

실행 중인 포드 샌드박스가 있는 포드 수입니다.

kubelet_runtime_operations_duration_seconds_bucket

런타임 작업 초 단위의 버킷으로 묶은 지속 시간 히스토그램입니다. 작업 유형별로 분류되었습니다.

kubelet_runtime_operations_errors_total

작업 유형별 누적 런타임 작업 오류 수입니다.

kubelet_runtime_operations_total

작업 유형별 누적 런타임 작업 수입니다.

kube_node_status_allocatable

포드에 할당할 수 있는 리소스의 양입니다(시스템 데몬에 대해 일부 예약 후).

kube_node_status_capacity

노드에 사용할 수 있는 총 리소스 수입니다.

kube_pod_container_resource_limits (CPU)

컨테이너별로 요청된 한도 리소스 수입니다.

kube_pod_container_resource_limits (Memory)

컨테이너별로 요청된 한도 리소스 수입니다.

kube_pod_container_resource_requests (CPU)

컨테이너별 요청된 요청 리소스 수입니다.

kube_pod_container_resource_requests (Memory)

컨테이너별 요청된 요청 리소스 수입니다.

kube_pod_owner

포드 소유자에 대한 정보입니다.

kube_resourcequota

Kubernetes의 리소스 할당량은 네임스페이스 내의 CPU, 메모리 및 스토리지와 같은 리소스에 사용 제한을 적용합니다.

node_cpu

코어당 CPU 사용량 및 총 사용량을 포함한 노드의 사용량 지표입니다.

node_cpu_seconds_total

각 모드에서 CPUs 소비된 의 초입니다.

node_disk_io_time_seconds

노드가 디스크에서 I/O 작업을 수행하는 데 소요한 누적 시간입니다.

node_disk_io_time_seconds_total

노드가 디스크에서 I/O 작업을 수행하는 데 소요한 총 시간입니다.

node_disk_read_bytes_total

노드가 디스크에서 읽은 총 바이트 수입니다.

node_disk_written_bytes_total

노드가 디스크에 기록한 총 바이트 수입니다.

node_filesystem_avail_bytes

Kubernetes 클러스터에 있는 노드의 파일 시스템에서 사용 가능한 바이트 단위 공간입니다.

node_filesystem_size_bytes

노드에 있는 파일 시스템의 총 크기입니다.

node_load1

노드 CPU 사용량의 1분 로드 평균입니다.

node_load15

노드 CPU 사용량의 15분 로드 평균입니다.

node_load5

노드 CPU 사용량의 5분 로드 평균입니다.

node_memory_Buffers_bytes

노드의 운영 체제에서 버퍼 캐싱에 사용되는 메모리의 양입니다.

node_memory_Cached_bytes,

노드의 운영 체제에서 디스크 캐싱에 사용되는 메모리의 양입니다.

node_memory_MemAvailable_bytes

애플리케이션 및 캐시에서 사용할 수 있는 메모리의 양입니다.

node_memory_MemFree_bytes

노드에서 사용할 수 있는 여유 메모리의 양입니다.

node_memory_MemTotal_bytes

노드에서 사용할 수 있는 물리적 메모리의 총량입니다.

node_network_receive_bytes_total

노드가 네트워크를 통해 수신한 총 바이트 수입니다.

node_network_transmit_bytes_total

노드가 네트워크를 통해 전송한 총 바이트 수입니다.

process_cpu_seconds_total

초 단위로 소비된 총 사용자 및 시스템 CPU 시간입니다.

process_resident_memory_bytes

바이트 단위의 상주 메모리 크기입니다.

rest_client_requests_total

상태 코드, 메서드 및 호스트로 분할된 HTTP 요청 수입니다.

rest_client_request_duration_seconds_bucket

초 단위의 요청 지연 시간의 버킷 히스토그램입니다. 동사 및 호스트별로 분류됩니다.

storage_operation_duration_seconds_bucket

스토리지 작업 기간의 버킷 히스토그램입니다.

storage_operation_duration_seconds_count

스토리지 작업 지속 시간 수입니다.

storage_operation_errors_total

스토리지 작업 중 누적 오류 수입니다.

up

모니터링된 대상(예: 노드)이 실행 중인지 여부를 나타내는 지표입니다.

volume_manager_total_volumes

볼륨 관리자가 관리하는 총 볼륨 수입니다.

workqueue_adds_total

작업 대기열에서 처리한 총 추가 수입니다.

workqueue_depth

현재 작업 대기열 깊이.

workqueue_queue_duration_seconds_bucket

항목이 요청되기 전에 작업 대기열에 머무는 시간을 초 단위로 나타낸 버킷 히스토그램입니다.

workqueue_work_duration_seconds_bucket

작업 대기열에서 항목을 초 단위로 처리하는 데 걸리는 시간에 대한 버킷 히스토그램입니다.

생성된 알림 목록

다음 표에는 이 솔루션에서 생성된 알림이 나열되어 있습니다. 알림은 Amazon Managed Service for Prometheus에서 규칙으로 생성되며 Amazon Managed Grafana 워크스페이스에 표시됩니다.

Amazon Managed Service for Prometheus 워크스페이스에서 규칙 구성 파일을 편집하여 규칙 추가 또는 삭제를 포함하여 규칙을 수정할 수 있습니다.

이 두 경보는 일반적인 경보와 약간 다르게 처리되는 특수 경보입니다. 문제를 알리는 대신 시스템을 모니터링하는 데 사용되는 정보를 제공합니다. 설명에는 이러한 알림을 사용하는 방법에 대한 세부 정보가 포함되어 있습니다.

Alert 설명 및 사용

Watchdog

이는 전체 알림 파이프라인이 작동하는지 확인하기 위한 알림입니다. 이 알림은 항상 실행되므로 항상 Alertmanager에서 실행되고 항상 수신자에 대해 실행되어야 합니다. 알림 메커니즘과 통합하여 이 알림이 실행되지 않을 때 알림을 보낼 수 있습니다. 예를 들어 에서 DeadMansSnitch 통합을 사용할 수 있습니다 PagerDuty.

InfoInhibitor

정보 알림을 금지하는 데 사용되는 알림입니다. 정보 수준 알림 자체는 매우 시끄러울 수 있지만 다른 알림과 결합할 때 관련이 있습니다. 이 알림은 severity=info 알림이 있을 때마다 실행되며 심각도가 warning 이거나 동일한 네임스페이스에서 다른 알림이 실행되기 critical 시작하면 실행을 중지합니다. 이 알림은 null 수신기로 라우팅되고 를 사용하여 알림을 금지하도록 구성되어야 합니다severity=info.

다음 알림은 시스템에 대한 정보 또는 경고를 제공합니다.

Alert 심각도 설명

NodeNetworkInterfaceFlapping

warning

네트워크 인터페이스가 상태를 변경하는 경우가 많습니다.

NodeFilesystemSpaceFillingUp

warning

파일 시스템은 향후 24시간 이내에 공간이 부족할 것으로 예상됩니다.

NodeFilesystemSpaceFillingUp

critical

파일 시스템은 향후 4시간 이내에 공간이 부족할 것으로 예상됩니다.

NodeFilesystemAlmostOutOfSpace

warning

파일 시스템의 공간이 5% 미만 남았습니다.

NodeFilesystemAlmostOutOfSpace

critical

파일 시스템의 남은 공간이 3% 미만입니다.

NodeFilesystemFilesFillingUp

warning

파일 시스템은 향후 24시간 이내에 인노드가 부족할 것으로 예상됩니다.

NodeFilesystemFilesFillingUp

critical

파일 시스템은 향후 4시간 이내에 인노드가 부족할 것으로 예상됩니다.

NodeFilesystemAlmostOutOfFiles

warning

파일 시스템에 5% 미만의 inode가 남아 있습니다.

NodeFilesystemAlmostOutOfFiles

critical

파일 시스템에 3% 미만의 inode가 남아 있습니다.

NodeNetworkReceiveErrs

warning

네트워크 인터페이스가 많은 수신 오류를 보고하고 있습니다.

NodeNetworkTransmitErrs

warning

네트워크 인터페이스가 많은 전송 오류를 보고하고 있습니다.

NodeHighNumberConntrackEntriesUsed

warning

conntrack 항목 수가 한도에 근접하고 있습니다.

NodeTextFileCollectorScrapeError

warning

Node Exporter 텍스트 파일 수집기를 스크레이핑하지 못했습니다.

NodeClockSkewDetected

warning

시계 왜곡이 감지되었습니다.

NodeClockNotSynchronizzing

warning

시계가 동기화되지 않습니다.

NodeRAIDDegraded

critical

RAID 배열이 저하됨

NodeRAIDDiskFailure

warning

RAID 배열에 실패한 디바이스

NodeFileDescriptorLimit

warning

커널은 곧 파일 설명자 제한을 소진할 것으로 예상됩니다.

NodeFileDescriptorLimit

critical

커널은 곧 파일 설명자 제한을 소진할 것으로 예상됩니다.

KubeNodeNotReady

warning

노드가 준비되지 않았습니다.

KubeNodeUnreachable

warning

노드에 연결할 수 없습니다.

KubeletTooManyPods

info

Kubelet이 용량으로 실행 중입니다.

KubeNodeReadinessFlapping

warning

노드 준비 상태가 플래핑 중입니다.

KubeletPlegDurationHigh

warning

Kubelet Pod 수명 주기 이벤트 생성기가 다시 나열하는 데 너무 오래 걸립니다.

KubeletPodStartUpLatencyHigh

warning

Kubelet Pod 시작 지연 시간이 너무 높습니다.

KubeletClientCertificateExpiration

warning

Kubelet 클라이언트 인증서가 곧 만료됩니다.

KubeletClientCertificateExpiration

critical

Kubelet 클라이언트 인증서가 곧 만료됩니다.

KubeletServerCertificateExpiration

warning

Kubelet 서버 인증서가 곧 만료됩니다.

KubeletServerCertificateExpiration

critical

Kubelet 서버 인증서가 곧 만료됩니다.

KubeletClientCertificateRenewalErrors

warning

Kubelet이 클라이언트 인증서를 갱신하지 못했습니다.

KubeletServerCertificateRenewalErrors

warning

Kubelet이 서버 인증서를 갱신하지 못했습니다.

KubeletDown

critical

Prometheus 대상 검색에서 대상이 사라졌습니다.

KubeVersionMismatch

warning

실행 중인 Kubernetes 구성 요소의 다양한 시맨틱 버전.

KubeClientErrors

warning

Kubernetes API 서버 클라이언트에 오류가 발생했습니다.

KubeClientCertificateExpiration

warning

클라이언트 인증서가 곧 만료됩니다.

KubeClientCertificateExpiration

critical

클라이언트 인증서가 곧 만료됩니다.

KubeAggregatedAPIErrors

warning

집계된 KubernetesAPI에서 오류를 보고했습니다.

KubeAggregatedAPIDown

warning

집계된 KubernetesAPI가 다운되었습니다.

KubeAPIDown

critical

Prometheus 대상 검색에서 대상이 사라졌습니다.

KubeAPITerminatedRequests

warning

kubernetes apiserver가 수신 요청의 {{ $value | humanizePercentage }}를 종료했습니다.

KubePersistentVolumeFillingUp

critical

영구 볼륨이 채워지고 있습니다.

KubePersistentVolumeFillingUp

warning

영구 볼륨이 채워지고 있습니다.

KubePersistentVolumeInodesFillingUp

critical

영구 볼륨 Inode가 채워지고 있습니다.

KubePersistentVolumeInodesFillingUp

warning

영구 볼륨 노드가 채워지고 있습니다.

KubePersistentVolumeErrors

critical

영구 볼륨에 프로비저닝 문제가 있습니다.

KubeCPUOvercommit

warning

클러스터에 과도한 CPU 리소스 요청이 있습니다.

KubeMemoryOvercommit

warning

클러스터에 메모리 리소스 요청이 과도하게 커밋되었습니다.

KubeCPUQuotaOvercommit

warning

클러스터에 과도한 CPU 리소스 요청이 있습니다.

KubeMemoryQuotaOvercommit

warning

클러스터에 메모리 리소스 요청이 과도하게 커밋되었습니다.

KubeQuotaAlmostFull

info

네임스페이스 할당량이 가득 찰 예정입니다.

KubeQuotaFullyUsed

info

네임스페이스 할당량이 완전히 사용되었습니다.

KubeQuotaExceeded

warning

네임스페이스 할당량이 한도를 초과했습니다.

CPUThrottlingHigh

info

프로세스 제한 수준이 CPU 높아집니다.

KubePodCrashLooping

warning

포드는 충돌 루프입니다.

KubePodNotReady

warning

포드가 15분 이상 준비되지 않은 상태입니다.

KubeDeploymentGenerationMismatch

warning

롤백 가능성으로 인한 배포 생성 불일치

KubeDeploymentReplicasMismatch

warning

배포가 예상 복제본 수와 일치하지 않습니다.

KubeStatefulSetReplicasMismatch

warning

StatefulSet 가 예상 복제본 수와 일치하지 않습니다.

KubeStatefulSetGenerationMismatch

warning

StatefulSet 롤백 가능성으로 인한 생성 불일치

KubeStatefulSetUpdateNotRolledOut

warning

StatefulSet 업데이트가 롤아웃되지 않았습니다.

KubeDaemonSetRolloutStuck

warning

DaemonSet 롤아웃이 중단되었습니다.

KubeContainerWaiting

warning

1시간 이상 기다리는 포드 컨테이너

KubeDaemonSetNotScheduled

warning

DaemonSet 포드가 예약되지 않았습니다.

KubeDaemonSetMisScheduled

warning

DaemonSet 포드의 예약이 잘못되었습니다.

KubeJobNotCompleted

warning

작업이 제시간에 완료되지 않음

KubeJobFailed

warning

작업을 완료하지 못했습니다.

KubeHpaReplicasMismatch

warning

HPA 가 원하는 복제본 수와 일치하지 않습니다.

KubeHpaMaxedOut

warning

HPA 가 최대 복제본에서 실행 중입니다.

KubeStateMetricsListErrors

critical

kube-state-metrics 에서 목록 작업에 오류가 발생했습니다.

KubeStateMetricsWatchErrors

critical

kube-state-metrics 에서 감시 작업에 오류가 발생했습니다.

KubeStateMetricsShardingMismatch

critical

kube-state-metrics 샤딩이 잘못 구성되었습니다.

KubeStateMetricsShardsMissing

critical

kube-state-metrics 샤드가 누락되었습니다.

KubeAPIErrorBudgetBurn

critical

API 서버가 너무 많은 오류 예산을 소모하고 있습니다.

KubeAPIErrorBudgetBurn

critical

API 서버가 너무 많은 오류 예산을 소모하고 있습니다.

KubeAPIErrorBudgetBurn

warning

API 서버가 너무 많은 오류 예산을 소모하고 있습니다.

KubeAPIErrorBudgetBurn

warning

API 서버가 너무 많은 오류 예산을 소모하고 있습니다.

TargetDown

warning

하나 이상의 대상이 다운되었습니다.

etcdInsufficientMembers

critical

Etcd 클러스터에 멤버가 부족합니다.

etcdHighNumberOfLeaderChanges

warning

Etcd 클러스터 리더 변경 횟수가 많습니다.

etcdNoLeader

critical

Etcd 클러스터에는 리더가 없습니다.

etcdHighNumberOfFailedGRPCRequests

warning

Etcd 클러스터 실패 gRPC 요청 수가 많습니다.

etcdGRPCRequestsSlow

critical

Etcd 클러스터 gRPC 요청은 느립니다.

etcdMemberCommunicationSlow

warning

Etcd 클러스터 멤버 통신이 느립니다.

etcdHighNumberOfFailedProposals

warning

Etcd 클러스터 실패 제안 수가 많습니다.

etcdHighFsyncDurations

warning

Etcd 클러스터 높은 fsync 지속 시간.

etcdHighCommitDurations

warning

Etcd 클러스터의 커밋 기간이 예상보다 깁니다.

etcdHighNumberOfFailedHTTPRequests

warning

Etcd 클러스터에 HTTP 요청이 실패했습니다.

etcdHighNumberOfFailedHTTPRequests

critical

Etcd 클러스터에 실패한 HTTP 요청 수가 많습니다.

etcdHTTPRequestsSlow

warning

Etcd 클러스터 HTTP 요청이 느립니다.

HostClockNotSynchronizing

warning

호스트 클럭이 동기화되지 않습니다.

HostOomKillDetected

warning

호스트 OOM 삭제가 감지되었습니다.

문제 해결

프로젝트 설정이 실패할 수 있는 몇 가지 사항이 있습니다. 다음을 확인해야 합니다.

  • 솔루션을 설치하기 전에 모든 사전 조건을 완료해야 합니다.

  • 솔루션을 생성하거나 지표에 액세스하기 전에 클러스터에 노드가 하나 이상 있어야 합니다.

  • Amazon EKS 클러스터에는 AWS CNI, CoreDNSkube-proxy 추가 기능이 설치되어 있어야 합니다. 설치되지 않으면 솔루션이 제대로 작동하지 않습니다. 콘솔을 통해 클러스터를 생성할 때 기본적으로 설치됩니다. 클러스터가 를 통해 생성된 경우 설치해야 할 수 있습니다 AWS SDK.

  • Amazon EKS 포드 설치 시간이 초과되었습니다. 사용 가능한 노드 용량이 충분하지 않은 경우 이 문제가 발생할 수 있습니다. 이러한 문제의 원인은 다음과 같이 여러 가지가 있습니다.

    • Amazon EKS 클러스터가 Amazon 대신 Fargate로 초기화되었습니다EC2. 이 프로젝트에는 Amazon 가 필요합니다EC2.

    • 노드가 염색되어 사용할 수 없습니다.

      kubectl describe node NODENAME | grep Taints 를 사용하여 테인트를 확인할 수 있습니다. 그런 다음 taints를 kubectl taint node NODENAME TAINT_NAME- 제거합니다. taint 이름 - 뒤에 를 포함해야 합니다.

    • 노드가 용량 한도에 도달했습니다. 이 경우 새 노드를 생성하거나 용량을 늘릴 수 있습니다.

  • Grafana에 잘못된 Grafana 작업 영역 ID를 사용하는 대시보드가 표시되지 않습니다.

    다음 명령을 실행하여 Grafana에 대한 정보를 가져옵니다.

    kubectl describe grafanas external-grafana -n grafana-operator

    올바른 작업 영역 에 대한 결과를 확인할 수 있습니다URL. 예상한 것과 다른 경우 올바른 작업 영역 ID로 다시 배포합니다.

    Spec: External: API Key: Key: GF_SECURITY_ADMIN_APIKEY Name: grafana-admin-credentials URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Status: Admin URL: https://g-123example.grafana-workspace.aws-region.amazonaws.com Dashboards: ...
  • Grafana에 대시보드가 표시되지 않음: 만료된 API 키를 사용하고 있습니다.

    이 사례를 찾으려면 grafana 연산자를 가져와 로그에 오류가 있는지 확인해야 합니다. 이 명령을 사용하여 Grafana 연산자의 이름을 가져옵니다.

    kubectl get pods -n grafana-operator

    다음과 같이 연산자 이름이 반환됩니다.

    NAME READY STATUS RESTARTS AGE grafana-operator-1234abcd5678ef90 1/1 Running 0 1h2m

    다음 명령에서 연산자 이름을 사용합니다.

    kubectl logs grafana-operator-1234abcd5678ef90 -n grafana-operator

    다음과 같은 오류 메시지는 만료된 API 키를 나타냅니다.

    ERROR error reconciling datasource {"controller": "grafanadatasource", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDatasource", "GrafanaDatasource": {"name":"grafanadatasource-sample-amp","namespace":"grafana-operator"}, "namespace": "grafana-operator", "name": "grafanadatasource-sample-amp", "reconcileID": "72cfd60c-a255-44a1-bfbd-88b0cbc4f90c", "datasource": "grafanadatasource-sample-amp", "grafana": "external-grafana", "error": "status: 401, body: {\"message\":\"Expired API key\"}\n"} github.com/grafana-operator/grafana-operator/controllers.(*GrafanaDatasourceReconciler).Reconcile

    이 경우 새 API 키를 생성하고 솔루션을 다시 배포합니다. 문제가 지속되면 재배포하기 전에 다음 명령을 사용하여 강제 동기화할 수 있습니다.

    kubectl delete externalsecret/external-secrets-sm -n grafana-operator
  • CDK 설치 - SSM 파라미터가 누락되었습니다. 다음과 같은 오류가 표시되면 를 실행cdk bootstrap하고 다시 시도하세요.

    Deployment failed: Error: aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME: SSM parameter /cdk-bootstrap/xxxxxxx/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/ guide/bootstrapping.html)
  • OIDC 공급자가 이미 있는 경우 배포가 실패할 수 있습니다. 다음과 같은 오류가 표시됩니다(이 경우 CDK 설치의 경우).

    | CREATE_FAILED | Custom::AWSCDKOpenIdConnectProvider | OIDCProvider/Resource/Default Received response status [FAILED] from custom resource. Message returned: EntityAlreadyExistsException: Provider with url https://oidc.eks.REGION.amazonaws.com/id/PROVIDER ID already exists.

    이 경우 IAM 포털로 이동하여 OIDC 공급자를 삭제하고 다시 시도하세요.

  • Terraform 설치 - cluster-secretstore-sm failed to create kubernetes rest client for update of resource 및 가 포함된 오류 메시지가 표시됩니다failed to create kubernetes rest client for update of resource.

    이 오류는 일반적으로 외부 보안 암호 연산자가 Kubernetes 클러스터에 설치되거나 활성화되지 않았음을 나타냅니다. 이는 솔루션 배포의 일부로 설치되지만 경우에 따라 솔루션이 필요할 때 준비되지 않습니다.

    다음 명령으로 설치되었는지 확인할 수 있습니다.

    kubectl get deployments -n external-secrets

    설치된 경우 운영자가 완전히 사용할 준비가 되는 데 시간이 걸릴 수 있습니다. 다음 명령을 실행하여 필요한 사용자 지정 리소스 정의(CRDs)의 상태를 확인할 수 있습니다.

    kubectl get crds|grep external-secrets

    이 명령은 clustersecretstores.external-secrets.io 및 를 포함하여 외부 보안 암호 연산자와 CRDs 관련된 를 나열해야 합니다externalsecrets.external-secrets.io. 목록에 없는 경우 몇 분 정도 기다렸다가 다시 확인합니다.

    CRDs 이 등록되면 를 terraform apply 다시 실행하여 솔루션을 배포할 수 있습니다.