Prometheus CloudWatch 내보내기 도구를 사용하여 AWS CloudWatch 측정항목 수집

이 문서에서는 오픈소스 Prometheus CloudWatch 내보내기 도구와 Compute Engine 인스턴스에서 실행되는 운영 에이전트를 사용하여 AWS CloudWatch 측정항목을 수집하고 Google Cloud 프로젝트에 저장하는 방법을 설명합니다. 이 문서는 다음을 대상으로 합니다.

  • AWS CloudWatch 측정항목을 수집해야 하는 개발자 및 시스템 관리자. 이 문서에서는 AWS CloudWatch 측정항목을 수집하도록 Prometheus CloudWatch 내보내기 도구를 설정하는 방법을 설명합니다.
  • Prometheus CloudWatch 내보내기 도구로 마이그레이션하는 AWS 커넥터 프로젝트에서 AWS CloudWatch 측정항목을 사용하는 사용자. 이 문서에는 커넥터 프로젝트의 기존 AWS CloudWatch 측정항목 수집에서 마이그레이션하는 정보도 포함되어 있습니다.

Cloud Monitoring을 사용하면 Google Cloud 측정항목과 동일한 컨텍스트에서 AWS 측정항목을 볼 수 있습니다. 예를 들어 Amazon EC2 인스턴스 및 Compute Engine 인스턴스의 CPU 사용률을 표시하는 차트가 포함된 대시보드를 만들 수 있습니다. 또한 알림 정책을 만들어 AWS 측정항목을 모니터링할 수 있습니다. 자세한 내용은 다음 섹션을 참조하세요.

시작하기 전에

Prometheus CloudWatch 내보내기 도구를 사용하여 AWS CloudWatch 측정항목을 수집하려면 다음이 필요합니다.

  • 다음을 수행할 수 있는 권한이 있는 Google Cloud 프로젝트.
    • VM 만들기
    • Cloud Logging에 로그 작성
    • Cloud Monitoring에 측정항목 기록
  • Prometheus 내보내기 도구가 측정항목을 가져오는 데 사용할 수 있는 AWS 사용자 인증 정보가 있는 AWS 계정. 자세한 내용은 Prometheus 내보내기 도구 실행을 참조하세요.

Compute Engine VM 만들기

특히 운영 에이전트 및 Prometheus CloudWatch 내보내기 도구를 실행하는 데 사용할 Linux Compute Engine VM을 만드는 것이 좋습니다. 이 VM은 모든 AWS 측정항목의 수집 사이트 역할을 합니다.

  1. 지정한 영역에서 aws-exporter-test라는 Debian Linux VM을 만들려면 다음 명령어를 실행합니다.

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    다음과 같이 명령어를 구성합니다.

    • ZONE을 새 VM의 영역으로 바꿉니다.
    • 선택사항입니다. aws-exporter-test를 VM의 다른 이름으로 바꿉니다.

    이 명령어에 대한 자세한 내용은 gcloud compute instances create 참조를 확인하세요.

  2. Prometheus CloudWatch 내보내기 도구 및 운영 에이전트를 설치할 수 있도록 VM에 액세스하려면 다음 명령어를 사용합니다.

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    다음과 같이 명령어를 구성합니다.

    • ZONE을 VM을 만든 영역으로 바꿉니다.
    • PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
    • 다른 이름으로 VM을 만든 경우 aws-exporter-test를 바꿉니다.

    이 명령어에 대한 자세한 내용은 gcloud compute ssh 참조를 확인하세요.

Prometheus CloudWatch 내보내기 도구 설정

다음 섹션에서는 Compute Engine VM에서 Prometheus CloudWatch 내보내기 도구를 다운로드, 설치, 구성하는 절차를 설명합니다.

Prometheus 내보내기 도구 및 JRE 다운로드

Prometheus CloudWatch 내보내기 도구를 실행하려면 내보내기 도구와 Java 런타임 환경(JRE) 버전 11 이상을 다운로드해야 합니다.

  1. Prometheus CloudWatch 내보내기 도구가 포함된 JAR 파일을 다운로드하려면 Compute Engine 인스턴스에서 다음 명령어를 실행합니다.

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. JRE를 설치하려면 다음과 같은 명령어를 사용하면 됩니다.

    sudo apt install default-jre
    

Prometheus 내보내기 도구 구성

Prometheus CloudWatch 내보내기 도구를 구성하려면 측정항목을 수집할 AWS 서비스의 구성 파일을 만듭니다. 일반적인 정보는 Prometheus CloudWatch 내보내기 도구 구성 문서를 참조하세요.

  • 사용자 마이그레이션: 기존 AWS CloudWatch 측정항목을 Prometheus CloudWatch 내보내기 도구로 이전하려는 경우 마이그레이션을 위한 Prometheus CloudWatch 내보내기 도구 구성에서 구성 파일을 사용할 수 있습니다. 이러한 구성 파일은 기존 측정항목을 최대한 가깝게 복제하도록 설계되었지만 AWS 서비스용 Prometheus CloudWatch 내보내기 도구를 사용하여 사용 가능한 모든 측정항목을 수집하지는 않습니다.

  • 신규 사용자: 기존 측정항목을 마이그레이션하지 않는 경우 마이그레이션 구성을 사용하지 않는 것이 좋습니다. 다른 서비스의 내보내기 도구 구성을 정의하는 방법은 AWS CloudWatch 서비스 문서를 참조하세요. Prometheus CloudWatch 내보내기 GitHub 저장소에서 추가 샘플을 찾을 수도 있습니다.

여러 AWS 서비스의 구성을 하나의 구성 파일로 결합할 수 있습니다. 이 문서의 예시에서는 구성 파일 이름이 config.yml이라고 가정합니다.

Prometheus 내보내기 도구 실행

Prometheus CloudWatch 내보내기 도구를 실행하려면 내보내기 도구에 사용자 인증 정보 및 승인을 제공해야 합니다. Prometheus CloudWatch 내보내기 도구는 다음 환경 변수를 사용하여 사용자 인증 정보를 제공하는 방법을 제공하는 AWS Java SDK를 사용합니다.

SDK에 사용자 인증 정보를 제공하는 방법에 대한 자세한 내용은 Java 2.x용 AWS SDK를 참조하세요.

측정항목을 검색하려면 CloudWatch API를 사용할 수 있는 권한이 있어야 하며, 다음 AWS IAM CloudWatch 권한이 필요합니다.

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

aws_tag_select 기능을 사용하려면 tag:GetResources AWS IAM 권한도 필요합니다.

AWS 서비스 액세스 승인에 대한 자세한 내용은 AWS Identity and Access Management를 참조하세요.

Prometheus CloudWatch 내보내기 도구를 실행하려면 다음을 수행합니다.

  1. 내보내기 도구에 사용자 인증 정보를 제공하려면 액세스 키 환경 변수를 설정합니다.

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    YOUR_KEY 변수를 액세스 키로 바꿉니다. 임시 사용자 인증 정보를 사용하는 경우에만 AWS_SESSION_TOKEN 환경 변수를 설정해야 합니다.

  2. 구성을 테스트하려면 내보내기 도구를 시작하고 구성 파일을 로드하려면 다음 명령어를 실행합니다.

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    필요한 경우 포트(9106) 및 구성 파일(config.yml) 값을 변경합니다.

    내보내기 도구가 실행되는 동안 config.yml 파일을 수정할 경우 다음 명령어를 실행하여 내보내기 도구를 새로고침할 수 있습니다.

    curl -X POST localhost:9106/-/reload
    

    프로덕션 환경에서 사용하려면 VM이 다시 시작될 경우 다시 시작하도록 내보내기 도구를 구성하면 됩니다. 예를 들어 Debian 시스템에서는 시스템 및 서비스 관리자 systemd를 사용할 수 있습니다.

운영 에이전트 설정

다음 섹션에서는 운영 에이전트를 설치, 구성하여 시작하는 방법을 설명합니다. 이 섹션에서는 운영 에이전트가 Prometheus CloudWatch 내보내기 도구에 사용할 최소한의 설정 정보를 제공합니다. 이러한 주제에 대한 자세한 내용은 운영 에이전트 개요를 참조하세요.

운영 에이전트 설치

운영 에이전트를 설치하려면 다음 명령어를 사용하여 에이전트의 설치 스크립트를 다운로드하고 실행합니다.

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

운영 에이전트 구성

운영 에이전트를 구성하려면 에이전트의 사용자 구성 파일에 구성 요소를 추가합니다. Linux에서 사용자 구성 파일은 /etc/google-cloud-ops-agent/config.yaml입니다.

Prometheus CloudWatch 내보내기 도구에서 AWS 측정항목을 수집하도록 운영 에이전트를 구성할 때 에이전트의 Prometheus 수신자를 사용합니다. 이 문서에서는 운영 에이전트의 두 가지 기본 구성을 설명합니다. 구성 중 하나를 선택하여 사용자 구성 파일에 추가합니다.

sudo vim /etc/google-cloud-ops-agent/config.yaml

운영 에이전트의 기본 구성

다음 구성은 운영 에이전트의 최소 구성을 제공합니다. 이 구성은 다음을 수행합니다.

  • prometheus 유형의 aws라는 수신자를 만듭니다. 수신자는 aws_exporter 작업에서 측정항목을 스크레이핑하도록 구성됩니다. 지정된 포트는 Prometheus CloudWatch 내보내기 도구가 측정항목을 내보내는 포트와 일치해야 합니다. Prometheus 내보내기 도구 실행을 참조하세요.

  • aws 측정항목 수신자를 사용하는 aws_pipeline이라는 파이프라인을 만듭니다.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

JVM 측정항목을 삭제하는 구성

다음 구성은 기본 구성에서 수행하는 모든 작업을 수행하지만 내보내기 도구로 생성된 JVM 측정항목을 삭제하는 라벨 재지정 구성도 추가합니다. 이러한 측정항목을 삭제하면 수집된 측정항목 데이터가 줄어들지만 내보내기 도구의 자체 측정항목을 받을 수 없으므로 내보내기 도구에서 디버깅이 어려워지는 문제가 발생할 수 있습니다.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

운영 에이전트에 훨씬 더 복잡한 구성을 만들 수 있습니다.

운영 에이전트 다시 시작

운영 에이전트에 구성 변경사항을 적용하려면 에이전트를 다시 시작해야 합니다.

  1. 에이전트를 다시 시작하려면 인스턴스에서 다음 명령어를 실행합니다.
    sudo service google-cloud-ops-agent restart
    
  2. 에이전트가 다시 시작되었는지 확인하려면 다음 명령어를 실행하고 '측정항목 에이전트' 및 'Logging 에이전트' 구성요소가 시작되었는지 확인합니다.
    sudo systemctl status google-cloud-ops-agent"*"
    

Cloud Monitoring에서 측정항목 보기

Cloud Monitoring에서는 AWS CloudWatch 측정항목을 쿼리하고 다른 측정항목과 마찬가지로 차트를 만들 수 있습니다. 측정항목 탐색기 인터페이스에서 PromQL, Monitoring Query Language(MQL) 또는 쿼리 빌더 인터페이스를 사용할 수 있습니다. 자세한 내용은 측정항목 탐색기로 차트 만들기를 참조하세요.

유지하려는 차트를 만든 경우 이를 커스텀 대시보드에 저장할 수 있습니다. 자세한 내용은 대시보드 개요를 참조하세요.

다음 차트는 AWS VM의 aws_ec2_cpuutilization_sum 측정항목에 대한 PromQL 쿼리를 보여줍니다.

이 차트는 PromQL을 사용하여 AWS VM의 aws_ec2_cpuutilization_sum 통계를 가져온 결과를 보여줍니다.

PromQL을 사용하여 Cloud Monitoring에서 측정항목을 쿼리할 수 있습니다. 자세한 내용은 Cloud Monitoring 측정항목을 PromQL에 매핑을 참조하세요.

PromQL을 사용하거나 모니터링 쿼리 언어(MQL)와 같은 Cloud Monitoring 도구를 사용하여 Prometheus 측정항목을 쿼리할 수 있습니다. Prometheus 측정항목이 Cloud Monitoring에 수집되면 각 측정항목은 표준 OpenTelemetry-Prometheus 변환을 사용하여 변환되고 Cloud Monitoring prometheus_target monitored-resource-type에 매핑됩니다. 변환에는 다음 변경사항이 포함됩니다.

  • 측정항목 이름에는 prometheus.googleapis.com/ 문자열이 프리픽스로 추가됩니다.
  • 측정항목 이름에 마침표(.)와 같은 영숫자가 아닌 문자는 밑줄(_)로 바뀝니다.
  • 측정항목 이름에는 /gauge 또는 /counter와 같은 측정항목 종류를 나타내는 문자열이 뒤에 붙습니다.

MQL을 사용하여 Prometheus aws_ec2_cpuutilization_sum 측정항목을 쿼리하려면 측정항목을 prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge로 참조하고 prometheus_target 모니터링 리소스 유형을 지정합니다.

fetch prometheus_target :: 'prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge'

다음 차트는 Prometheus aws_ec2_cpuutilization_sum 측정항목에 대한 MQL 쿼리 결과를 보여줍니다.

MQL을 사용하여 AWS VM의 aws_ec2_cpuutilization_sum 통계를 가져온 결과를 보여주는 차트

측정항목 동작 알림

Cloud Monitoring에서 [알림 정책][alert-intro]를 만들어 AWS CloudWatch 측정항목을 모니터링하고 측정항목 값의 급증, 하락, 트렌드를 알릴 수 있습니다.

여러 리전 모니터링

Prometheus CloudWatch 내보내기 도구 구성은 구성 파일당 하나의 리전만 사용하도록 지원합니다. 여러 리전을 모니터링해야 하는 경우 모니터링하려는 리전마다 하나씩 구성된 Prometheus 내보내기 도구의 여러 인스턴스를 실행하는 것이 좋습니다. 단일 VM에서 여러 내보내기 도구를 실행하거나 VM에 배포할 수 있습니다. 이 경우 Prometheus 내보내기 도구 Docker 이미지가 유용할 수 있습니다.

Compute Engine VM에서 실행되는 운영 에이전트가 여러 Prometheus 엔드포인트를 스크래핑하도록 구성할 수 있습니다. Prometheus 내보내기 도구의 여러 인스턴스를 구성할 때 문제 해결이 필요한 경우 내보내기 도구 인스턴스를 구분할 수 있도록 각 스크래핑 구성에 다른 job 이름을 사용하는 것이 좋습니다.

운영 에이전트 및 Prometheus 수신자 구성에 대한 자세한 내용은 운영 에이전트 구성을 참조하세요.

비용

Amazon은 CloudWatch API 요청 또는 요청하는 모든 CloudWatch 측정항목에 요금을 청구합니다. 현재 가격 책정은 Amazon CloudWatch 가격 책정을 참조하세요. Prometheus CloudWatch 내보내기 도구에는 Amazon 비용에 영향을 줄 수 있는 다음과 같은 쿼리 특성이 있습니다.

  • GetMetricStatistics 메서드(기본값)를 사용할 때는 모든 측정항목에 API 요청이 한 개 필요합니다. 각 요청에는 여러 통계가 포함될 수 있습니다.
  • aws_dimensions를 사용하는 경우 내보내기 도구는 요청하는 측정항목을 결정하기 위해 API 요청을 수행해야 합니다. 측정기준 요청 수는 일반적으로 측정항목 요청 수에 비해 무시할 수 있는 정도입니다.

Cloud Monitoring은 수집된 샘플 수에 따라 Prometheus 내보내기 도구의 AWS CloudWatch 측정항목에 대한 요금을 청구합니다. 현재 가격 책정은 Monitoring 가격 책정 요약을 참조하세요.

마이그레이션 가이드

이 섹션에서는 AWS 커넥터 프로젝트를 사용하여 기존 AWS CloudWatch 측정항목에서 Prometheus CloudWatch 내보내기 도구 솔루션으로 마이그레이션하는 고객에 대한 추가 정보를 제공합니다.

기존 솔루션에서 Prometheus CloudWatch 내보내기 도구로 마이그레이션하지 않는 경우 이 섹션을 건너뛸 수 있습니다.

기존 AWS CloudWatch 측정항목을 Prometheus CloudWatch 내보내기 도구 측정항목에 매핑

이 섹션에서는 AWS CloudWatch 측정항목 CPUUtilization을 예시로 사용하여 기존 AWS CloudWatch 측정항목이 Prometheus CloudWatch 내보내기 도구에서 수집한 측정항목에 어떻게 매핑되는지 설명합니다.

CPUUtilization 측정항목은 사용자 코드 및 Amazon EC2 코드 실행 시간을 포함하여 Amazon EC2에서 인스턴스를 실행하는 데 사용하는 물리적 CPU 시간의 비율을 측정합니다. 일반적으로 측정항목 값은 게스트 CPU 사용률과 하이퍼바이저 CPU 사용률의 합계입니다.

기존 솔루션은 다음 측정항목을 사용하여 Cloud Monitoring에 이 데이터를 보고합니다.

'평균' 및 '최대' 같은 값의 측정항목은 측정항목에 의미 있는 CloudWatch 통계를 나타내며, 각각은 AWS CPUUtilization 측정항목의 다른 집계를 보고합니다. 이러한 측정항목은 aws_ec2_instance 모니터링 리소스 유형에 대해 작성되며 instance_id 리소스 라벨 값은 측정항목을 작성하는 Amazon EC2 인스턴스의 식별자입니다.

Prometheus CloudWatch 내보내기 도구 및 운영 에이전트를 사용하면 측정항목이 다음과 같이 보고됩니다.

  • aws_ec2_cpuutilization_average
  • aws_ec2_cpuutilization_maximum
  • aws_ec2_cpuutilization_minimum
  • aws_ec2_cpuutilization_samplecount
  • aws_ec2_cpuutilization_sum

이러한 측정항목은 기존 솔루션에서 수집한 aws.googleapis.com/EC2/CPUUtilization/Statistic 측정항목에 해당합니다. 이러한 측정항목은 prometheus-target 모니터링 리소스 유형에서 작성됩니다.

prometheus-target 리소스의 라벨 값은 Amazon EC2 인스턴스의 값이 아니라 Prometheus CloudWatch 내보내기 도구가 실행 중인 Compute Engine VM을 반영합니다. 측정항목의 라벨 값은 Prometheus 내보내기 도구에서 설정됩니다. aws_ec2_cpuutilization_statistic 측정항목은 instance_id 측정항목 라벨에 Amazon EC2 인스턴스의 인스턴스 ID를 보존합니다. 다음 스크린샷은 aws_ec2_cpuutilization_sum 측정항목을 차트로 표시하는 PromQL 쿼리를 보여줍니다. 테이블에는 선택한 라벨의 값이 표시됩니다.

이 테이블은 EC2 측정항목의 `intance_id` 라벨 값을 보여줍니다.

제공된 마이그레이션용 Prometheus CloudWatch 내보내기 도구 구성 중 하나를 사용하고 측정항목의 추가 측정기준 또는 통계를 수집하려는 경우 구성을 수정할 수 있습니다. 자세한 내용은 Prometheus CloudWatch 내보내기 도구 구성 문서를 참조하세요.

대시보드 및 알림 정책 다시 빌드

기존 AWS CloudWatch 측정항목을 사용하는 기존 대시보드와 알림 정책은 Prometheus CloudWatch 내보내기 도구를 사용하여 수집된 측정항목에서 작동하지 않습니다. 이는 브레이킹 체인지입니다.

AWS 시스템에 동일한 관측 가능성을 가져오려면 Prometheus 내보내기 도구에서 수집한 측정항목을 사용하도록 대시보드 및 알림 정책을 다시 빌드해야 합니다.

메타데이터 손실

기존 솔루션은 AWS CloudWatch 측정항목을 수집하는 것 외에도 기존 Monitoring 에이전트 및 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행되는 기존 Logging 에이전트에서 메타데이터를 수집했습니다. 이러한 리소스 메타데이터는 Cloud Monitoring의 측정항목에 조인되었으며 인스턴스 이름, 가용성 영역, 머신 유형 등과 같은 시스템 또는 사용자 메타데이터 라벨로 표시되었습니다.

Prometheus CloudWatch 내보내기 도구는 동일한 메타데이터를 수집하지 않을 수 있습니다. 다음 섹션에서는 Amazon EC2 VM 인스턴스에서 기존 에이전트 중 하나를 사용하는 경우 Prometheus 내보내기 도구를 사용하여 누락된 메타데이터를 수집하고 이를 Prometheus 내보내기 도구에서 수집한 측정항목과 조인하는 방법을 설명합니다.

2024년 8월 21일 이후에 기존 AWS CloudWatch 솔루션의 지원 중단이 완료되면 이러한 메타데이터 라벨을 더 이상 사용할 수 없습니다. 측정항목 및 aws_ec2_instance 리소스 라벨은 영향을 받지 않습니다.

Amazon EC2 인스턴스의 기존 Monitoring 에이전트 사용자

차트 및 쿼리에서 AWS 메타데이터를 사용하고 유지하려는 경우 Prometheus CloudWatch 내보내기 도구를 사용하여 수집할 수 있습니다. 이 문서에 설명된 대로 Compute Engine VM을 만들고 Prometheus CloudWatch 내보내기 도구운영 에이전트를 설정합니다. Prometheus CloudWatch 내보내기 도구를 구성할 때 ec2.yml 구성 파일을 사용합니다.

ec2.yml 구성 파일은 aws_tag_select 기능을 사용합니다. 구성에서 aws_tag_select 기능을 사용하면 Prometheus CloudWatch 내보내기 도구가 aws_resource_info라는 측정항목을 내보냅니다. aws_resource_info 측정항목은 측정항목 라벨의 AWS 리소스 메타데이터가 있는 시계열을 보고합니다. 이 메타데이터에는 tag_Name 라벨에 인스턴스 이름을 포함한 모든 Amazon EC2 인스턴스 태그가 포함됩니다.

추가 메타데이터를 수집하려면 Amazon EC2 인스턴스의 인스턴스 태그를 사용하여 해당 메타데이터를 추가하면 됩니다. EC2 인스턴스 태그 추가 또는 삭제를 참조하세요. Prometheus 내보내기 도구에서 보고된 aws_resource_info 측정항목에는 추가 메타데이터가 포함됩니다.

그런 다음 aws_resource_info 측정항목의 메타데이터 라벨을 PromQL용 MQL을 사용하여 기존 Monitoring 에이전트의 자체 측정항목 또는 Amazon EC2 측정항목과 조인할 수 있습니다.

MQL 조인

예를 들어 다음 MQL 쿼리는 aws_ec2_instance 리소스 유형에 대해 작성된 에이전트 자체 측정항목 agent.googleapis.com/agent/uptimeprometheus-target 리소스 유형에 대해 작성된 Prometheus CloudWatch 내보내기 도구 aws_resource_info 측정항목과 조인합니다.

{
    aws_ec2_instance :: 'agent.googleapis.com/agent/uptime'
    | align next_older()
    | group_by [instance_id: resource.instance_id, resource.project_id, resource.region, resource.aws_account, metric.version]
    ;
    prometheus_target :: 'prometheus.googleapis.com/aws_resource_info/gauge'
    | align next_older()
    | group_by [instance_id: metric.instance_id, resource.project_id, aws_account: re_extract(metric.arn, "arn:aws:ec2:[^:]+:([^:]+):instance/.*"), region: concatenate("aws:", re_extract(metric.arn, "arn:aws:ec2:([^:]+):[^:]+:instance/.*")), name: metric.tag_Name]
}
| join
| val(0)

두 측정항목은 instance_id 라벨에 조인되므로 VM의 이름(aws_resource_info 측정항목의 metric.tag_Name 라벨 값)을 조인 결과에 추가할 수 있습니다. 에이전트 uptime 자체 측정항목에는 리소스 라벨 region이 포함되어 있습니다. region 라벨이 있는 조인은 AWS에서 인스턴스 ID가 리전별로 또는 전역적으로 고유해야 하는지를 지정하지 않기 때문에 작동합니다.

MQL에 대한 자세한 내용은 모니터링 쿼리 언어 개요를 참조하세요.

PromQL 조인

다음 예시는 Prometheus CloudWatch 내보내기 도구의 aws_ec2_cpuutilization_average 측정항목을 조인하는 PromQL 쿼리를 보여줍니다. 다음 예시는 Prometheus CloudWatch 내보내기 도구의 aws_ec2_cpuutilization_average 측정항목을 aws_resource_info 메타데이터 측정항목과 조인하는 PromQL 쿼리를 보여줍니다. 측정항목은 instance_id 라벨에 조인되어 메타데이터 측정항목의 tag_Name 라벨에서 쿼리 결과에 VM 이름을 추가합니다.

  aws_ec2_cpuutilization_average
* on(instance_id) group_left(tag_Name)
  aws_resource_info

Amazon EC2 인스턴스의 기존 Logging 에이전트 사용자

기존 Logging 에이전트인 google-fluentd는 메타데이터를 Cloud Logging에 직접 보고하므로 기존 Monitoring 에이전트를 사용하는 AWS CloudWatch 측정항목 솔루션이 지원 중단되어도 Logging 에이전트에서 수집하는 로그에는 영향을 주지 않습니다.

그러나 기존 Logging 에이전트는 몇 가지 측정항목을 직접 보고합니다. 이러한 자체 측정항목에 메타데이터를 추가하려면 이 문서에 설명된 대로 Compute Engine VM을 만들고 Prometheus CloudWatch 내보내기 도구작업 에이전트를 설정하세요. Prometheus CloudWatch 내보내기 도구를 구성할 때 ec2.yml 구성 파일을 사용합니다.

기존 Logging 에이전트의 구성을 수정해야 할 수도 있습니다. 기존 Logging 에이전트의 출력 플러그인은 AWS에 use_aws_availability_zone 옵션을 지원합니다. 에이전트가 availability_zone 라벨 대신 region 라벨을 작성할 수 있도록 이 옵션을 false로 설정해야 합니다. 플러그인 구성 파일 위치에 대한 자세한 내용은 Google Cloud fluentd 출력 플러그인 구성을 참조하세요.

ec2.yml 구성 파일은 aws_tag_select 기능을 사용합니다. 구성에서 aws_tag_select 기능을 사용하면 Prometheus CloudWatch 내보내기 도구가 aws_resource_info라는 측정항목을 내보냅니다. aws_resource_info 측정항목은 측정항목 라벨의 AWS 리소스 메타데이터가 있는 시계열을 보고합니다. 이 메타데이터에는 tag_Name 라벨에 인스턴스 이름을 포함한 모든 Amazon EC2 인스턴스 태그가 포함됩니다.

추가 메타데이터를 수집하려면 Amazon EC2 인스턴스의 인스턴스 태그를 사용하여 해당 메타데이터를 추가하면 됩니다. EC2 인스턴스 태그 추가 또는 삭제를 참조하세요. Prometheus 내보내기 도구에서 보고된 aws_resource_info 측정항목에는 추가 메타데이터가 포함됩니다.

그런 다음 MQL을 사용하여 aws_resource_info 측정항목의 메타데이터 라벨을 기존 Logging 에이전트의 자체 측정항목과 조인할 수 있습니다. 예를 들어 다음 MQL 쿼리는 aws_ec2_instance 리소스 유형에 대해 작성된 에이전트 자체 측정항목 agent.googleapis.com/agent/uptimeprometheus-target 리소스 유형에 대해 작성된 Prometheus CloudWatch 내보내기 도구 aws_resource_info 측정항목과 조인합니다.

{
    aws_ec2_instance :: 'agent.googleapis.com/agent/uptime'
    | align next_older()
    | group_by [instance_id: resource.instance_id, resource.project_id, resource.region, resource.aws_account, metric.version]
    ;
    prometheus_target :: 'prometheus.googleapis.com/aws_resource_info/gauge'
    | align next_older()
    | group_by [instance_id: metric.instance_id, resource.project_id, aws_account: re_extract(metric.arn, "arn:aws:ec2:[^:]+:([^:]+):instance/.*"), region: concatenate("aws:", re_extract(metric.arn, "arn:aws:ec2:([^:]+):[^:]+:instance/.*")), name: metric.tag_Name]
}
| join
| val(0)

두 측정항목은 instance_id 라벨에 조인되므로 VM의 이름(aws_resource_info 측정항목의 metric.tag_Name 라벨 값)을 조인 결과에 추가할 수 있습니다. 에이전트 uptime 자체 측정항목에는 리소스 라벨 region이 포함되어 있습니다. region 라벨이 있는 조인은 AWS에서 인스턴스 ID가 리전별로 또는 전역적으로 고유해야 하는지를 지정하지 않기 때문에 작동합니다.

MQL에 대한 자세한 내용은 모니터링 쿼리 언어 개요를 참조하세요.

AWS 계정에서 기존 측정항목 사용 중지

Google Cloud 프로젝트에서 AWS 커넥터 프로젝트를 만들 때 AWS 계정에 대한 Google Cloud 읽기 전용 액세스 권한을 부여한 AWS IAM 역할을 만들었습니다. AWS 콘솔에서 기존 AWS CloudWatch 측정항목을 해제하려면 이 역할을 제거합니다. 자세한 내용은 IAM 역할 삭제(콘솔)를 참조하세요.

마이그레이션을 위한 Prometheus CloudWatch 내보내기 도구 구성

이 섹션에서는 AWS 측정항목 목록에 문서화된 AWS 서비스 측정항목을 최대한 비슷하게 복제하는 구성을 제공합니다. 이러한 구성 파일은 기존 솔루션에서 Prometheus CloudWatch 내보내기 도구로 마이그레이션하는 고객이 사용해야 합니다. 마이그레이션하는 사용자가 아닌 Prometheus CloudWatch 내보내기 도구를 새 사용자로 설정하고 이러한 구성을 사용하는 경우 Prometheus CloudWatch 내보내기 도구를 사용할 수 있는 모든 AWS 측정항목을 수집하지 않습니다.

AWS CloudWatch 측정항목의 샘플 구성 파일을 보려면 다음 섹션 중 하나를 펼칩니다.