사용자 지정 지표를 CloudWatch로 푸시하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 6월 21일

사용자 지정 지표를 Amazon CloudWatch로 푸시하려면 어떻게 해야 합니까?

간략한 설명

AWS 서비스는 기본적으로 데이터 포인트를 CloudWatch로 푸시합니다. 그러나 AWS 서비스에서 지원하지 않는 지표를 기반으로 리소스의 성능을 보정해야 하는 인스턴스가 있을 수 있습니다. 이러한 경우 통합 CloudWatch 에이전트 또는 API를 사용하여 사용자 지정 지표를 CloudWatch로 푸시할 수 있습니다.

중요: 사용자 지정 지표는 스토리지 및 API 사용에 따라 요금이 청구됩니다.

해결 방법

CloudWatch 에이전트를 사용한 사용자 지정 지표 푸시하기

통합 CloudWatch 에이전트는 시스템 수준 지표를 수집하여 CloudWatch에 사용자 지정 지표로 보냅니다. 에이전트를 사용하여 다음과 같은 사용자 지정 지표를 푸시할 수 있습니다.

  • Linux 또는 Windows 서버
  • Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 온프레미스 서버

Linux의 경우 지원되는 지표 목록을 참조하세요.

디스크 지표에 대한 샘플 에이전트 구성 파일 지표 블록(Linux):

"disk": 
    {
        "measurement": [
          
          "used_percent"
        ],
        "resources": [
          
          "*"
        ],
        "drop_device": 
        true
      }

Windows의 경우 에이전트 구성 파일의 Windows 성능 모니터에 언급된 모든 카운터를 참조할 수 있습니다.

프로세서 카운터에 대한 샘플 에이전트 구성 파일 지표 블록(Windows):

"Processor": {
        "measurement": [
          {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"},
          "% Interrupt Time",
          "% User Time",
          "% Processor Time"
        ],
        "resources": [
          "*"
        ],
        "append_dimensions": {
          "d1": "win_foo",
          "d2": "win_bar"
        }
      }

또한 ‘StatsD’ 및 collectd’ 프로토콜을 사용하여 애플리케이션 또는 서비스에서 사용자 지정 지표를 검색할 수 있습니다. 그런 다음 지표가 에이전트를 통해 푸시됩니다. StatsD는 Linux와 Windows 서버 모두에서 지원됩니다. collectd는 Linux 서버에서만 지원됩니다. 이 프로토콜을 사용하려면 다음을 수행합니다.

1.    CloudWatch 통합 에이전트를 설치합니다.

2.    CloudWatch 권한을 사용하여 인스턴스에 역할 또는 자격 증명을 할당합니다.

3.    CloudWatch 에이전트 구성 파일을 생성합니다.

4.    에이전트를 시작합니다.

PutMetricData를 사용하여 사용자 지정 지표 푸시하기

사용 사례에서 CloudWatch 통합 에이전트의 사용을 지원하지 않는 경우 PutMetricData API를 사용하여 사용자 지정 지표를 CloudWatch로 푸시할 수 있습니다.

예를 들어 특정 포트에 대한 연결을 사용자 지정 지표로 푸시하려면 값을 로컬로 검색하여 API에서 전송할 수 있습니다.

total_conn=$(netstat -an | grep <port> | wc -l) 

aws cloudwatch put-metric-data   --namespace "totalconn"   --metric-name <port> --dimensions Instance=<InstanceId> --value $  total_conn

마찬가지로 AWS SDK를 통해 PutMetricData API를 사용하고 사용자 지정 지표를 CloudWatch로 전송할 수 있습니다. 사용자 지정 지표를 전송하기 위해 주기적으로 실행되는 로컬 스크립트를 만듭니다. API는 다음과 같은 이유로 서로 다른 지표 및 여러 값을 푸시하는 데 안성맞춤입니다.

  • 단일 API에서 최대 20개의 서로 다른 지표를 사용할 수 있습니다.
  • 값 및 개수 메서드를 사용하면 하나의 PutMetricData 요청으로 지표당 최대 150개의 값을 게시할 수 있습니다.
  • 지표당 최대 10개의 차원을 사용할 수 있습니다.
  • HTTP POST 요청의 경우 각 PutMetricData 요청은 40KB로 제한됩니다.

예를 들어, 각 지표에 대해 별도의 API 호출을 하는 대신 단일 API 호출을 사용하여 여러 지표를 푸시할 수 있습니다.

aws cloudwatch put-metric-data --namespace "Usage Metrics" --metric-data file://metric.json

여기서 metric.json은 다음과 같습니다.

[
  {
    "MetricName": "DiskMetric",
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  },
  {
    "MetricName": "MemoryMetric",
    
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  }
]

이 접근 방식은 일반적으로 사용자 지정 지표에 API 및 스토리지 수를 기준으로 요금이 부과되므로 비용이 절감됩니다. 이 방법은 또한 PutMetricData API의 제한을 줄이는 데 도움이 될 수 있습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?