

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

# 지표 쿼리 옵션을 사용하여 CloudWatch Metrics Insights 데이터 쿼리
<a name="CloudWatch-using-the-metric-query"></a>

**참고**  
Amazon CloudWatch Metrics Insights는 평가판으로 제공됩니다. CloudWatch Metrics Insights 기능은 모든 AWS 계정에서 이용 가능합니다. 기능은 변경될 수 있습니다.

 **지표 쿼리 편집기**에서 `metric query` 모드를 선택하여 CloudWatch Metrics Insights 데이터를 쿼리할 수 있습니다.

 CloudWatch Metrics Insights는 대규모 지표를 쿼리하는 데 사용할 수 있는 강력한 고성능 SQL 쿼리 엔진입니다. 빠르고 유연한 SQL 기반 쿼리 엔진으로, 모든 CloudWatch 지표 내 추세와 패턴을 실시간으로 식별하는 데 사용할 수 있습니다. SQL 언어를 사용합니다. Metrics Insights 쿼리 구문에 대한 자세한 내용은 [쿼리 구문 및 키워드](#metrics-insights-syntax-keywords) 섹션을 참조하세요.

## 쿼리 구문 및 키워드
<a name="metrics-insights-syntax-keywords"></a>

CloudWatch Metrics Insights는 SQL 언어를 사용합니다. 다음 예제에서는 쿼리 구문을 보여줍니다.

```
SELECT FUNCTION(metricName)
FROM namespace | [ SCHEMA(namespace[, labelKey [, ...] ]) ]
     [ WHERE labelKey OPERATOR labelValue [AND|OR|([...])*] [, ...] ]
[ GROUP BY labelKey [, ...]]
[ ORDER BY FUNCTION() [DESC | ASC] ]
[ LIMIT number]
```

 키워드는 대소문자를 구분하지 않지만 식별자는 대소문자를 구분합니다. 식별자에는 지표 이름, 네임스페이스 및 차원이 포함됩니다.

 다음 표에서는 가능한 키워드 및 해당 설명을 제공합니다.


|  키워드  |  설명  | 
| --- | --- | 
|  FUNCTION  |  필수 사항입니다. 사용할 집계 함수를 지정하고 쿼리할 지표의 이름도 지정합니다. 유효한 값은 AVG, COUNT, MAX, MIN 및 SUM입니다. | 
|  MetricName   |  필수 사항입니다. 예를 들어 CPUUtilization입니다. | 
|  FROM  |  필수 사항입니다. 지표의 소스를 지정합니다. 쿼리할 지표를 포함하는 지표 네임스페이스 또는 SCHEMA 테이블 함수를 지정할 수 있습니다. 일부 네임스페이스 예제로 AWS/EC2 및 AWS/Lambda가 있습니다. | 
|  SCHEMA  |  (선택 사항) 쿼리 결과를 필터링하여 정확히 일치하는 지표 또는 일치하지 않는 지표만 표시합니다. | 
|  WHERE  |  (선택 사항) 결과를 필터링하여 지정된 표현식과 일치하는 지표만 표시합니다. 예를 들어 WHERE InstanceType \$1= 'c3.4xlarge'입니다. | 
|  GROUP BY  |  (선택 사항) 쿼리 결과를 여러 시계열로 그룹화합니다. 예를 들어 GROUP BY ServiceName입니다. | 
|  ORDER BY  |  (선택 사항) 반환할 시계열의 순서를 지정합니다. 옵션으로 ASC 및 DESC가 있습니다. | 
|  LIMIT  |  (선택 사항) 반환할 시계열 수를 제한합니다. | 

다음은 몇 가지 예시입니다.
+ 

  ```
  SELECT AVG(CPUUtilization) FROM "AWS/EC2" 
  ```

   `AWS/EC2` 네임스페이스의 모든 `CPUUtilization` 지표를 일치시키고(이때 차원 무시) 집계된 단일 시계열을 반환합니다.
+ 

  ```
  SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2")
  ```

   `AWS/EC2` 네임스페이스에서 정의된 차원이 없는 `CPUUtilization` 지표만 일치시킵니다.
+ 

  ```
  SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId)
  ```

   CloudWatch에 보고된 `CPUUtilization` 지표를 일치시킵니다(이때 정확히 하나의 차원 `InstanceId` 포함).
+ 

  ```
  SELECT SUM(RequestCount) FROM SCHEMA("AWS/ApplicationELB", LoadBalancer,
  AvailabilityZone)
  ```

   `AWS/ApplicationELB`에서 CloudWatch에 보고된 `RequestCount` 지표만 일치시킵니다(이때 정확히 두 개의 `LoadBalancer` 및 `AvailabilityZone` 차원 포함).

 레이블 값은 작은따옴표로 묶어야 합니다.

### 이스케이프 문자
<a name="escape-characters"></a>

쿼리에서 레이블 값은 항상 작은따옴표로 묶어야 합니다.   예를 들어 `SELECT MAX(CPUUtilization) FROM "AWS/EC2" WHERE AutoScalingGroupName = 'my-production-fleet'`입니다.

 문자, 숫자 및 밑줄(`_`) 이외의 문자가 포함된 지표 네임스페이스, 지표 이름 및 레이블 키는 큰따옴표로 묶어야 합니다. 예를 들어 `SELECT MAX("My.Metric")`입니다. 이 중 하나에 큰따옴표 자체(예: `Bytes"Input"`)가 포함된 경우 `SELECT AVG("Bytes\"Input\"")`에서와 같이 해당 큰따옴표를 백슬래시로 이스케이프 처리해야 합니다. 지표 네임스페이스, 지표 이름 또는 레이블 키에 Metrics Insights의 예약된 키워드 단어가 포함되어 있는 경우 이러한 단어도 큰따옴표로 묶어야 합니다. 예를 들어 `LIMIT`으로 이름 붙인 지표가 있는 경우 `SELECT AVG("LIMIT")`를 사용합니다. 예약어가 포함되어 있지 않더라도 네임스페이스, 지표 이름 또는 레이블을 큰따옴표로 묶는 것도 유효합니다.

## 빌더 모드 및 코드 모드
<a name="metrics-insights-query-modes"></a>

`Builder` 모드 또는 `Code` 모드에서 쿼리를 생성할 수 있습니다.

**`Builder` 모드에서 쿼리를 생성하는 방법**

1. 이전 테이블의 정보를 사용하여 지표 네임스페이스, 지표 이름, 필터, 그룹 및 정렬 옵션을 찾아 선택하세요.

1. 이러한 각 옵션에 대해 가능한 옵션 목록 중에서 선택하세요.

**`Code` 모드에서 쿼리를 생성하는 방법**

1. 코드 편집기에 쿼리를 작성하세요.

1. 쿼리를 실행하려면 코드 편집기에서 **쿼리 실행**을 선택하세요.

`builder` 모드에서 쿼리를 생성하는 방법
+ 위 테이블의 정보를 사용하여 지표 네임스페이스, 지표 이름, 필터, 그룹 및 정렬 옵션을 찾아 선택하세요.
+ 이러한 각 옵션에 대해 가능한 옵션 목록 중에서 선택하세요.

Grafana는 선택 사항에 따라 SQL 쿼리를 자동으로 작성합니다.

 `code` 모드에서 쿼리를 생성하는 방법
+ 코드 편집기에 쿼리를 작성하세요.
+ 쿼리를 실행하려면 코드 편집기에서 **쿼리 실행**을 선택하세요.

코드 편집기에는 키워드, 집계, 네임스페이스, 지표, 레이블 및 레이블 값에 대한 제안을 제공하는 기본 제공 자동 완성 기능이 있습니다. 제안은 공백, 쉼표 또는 달러 기호를 입력할 때 표시됩니다. `CTRL+Space` 키보드 조합을 사용할 수도 있습니다.

코드 편집기에서 쿼리를 자동으로 완료할 수 있습니다. 그러나 코드 편집기에서 템플릿 변수를 사용하면 자동 완성이 방해를 받을 수 있습니다.

## CloudWatch Metrics Insights 예제
<a name="goldeneye-examples"></a>

**참고**  
CloudWatch Metrics Insights는 평가판이 공개되어 있습니다. 미리 보기는 모든 AWS 계정에 열려 있으며 액세스를 요청할 필요가 없습니다. 정식 출시를 발표하기 전에 기능이 추가되거나 변경될 수 있습니다.

이 섹션에는 쿼리 편집기에서 직접 복사 및 사용하거나 복사 및 수정할 수 있는 유용한 CloudWatch Metrics Insights 쿼리의 예제가 포함되어 있습니다. 이러한 예제 중 일부는 콘솔에서 이미 사용할 수 있으며 **지표(Metrics)** 보기의 **쿼리 추가(Add query)**를 선택하여 액세스할 수 있습니다.

### EC2 예제
<a name="goldeneye-EC2-examples"></a>

 인스턴스당 CPU 사용률 지표 보기

```
SELECT AVG(CPUUtilization)
FROM "AWS/EC2"
GROUP BY InstanceId
```

전체 플릿에서 평균 CPU 사용률 보기

```
SELECT AVG(CPUUtilization)
FROM SCHEMA("AWS/EC2", InstanceId)
```

 평균 CPU 사용률이 가장 높은 인스턴스 10개 보기 

```
SELECT MAX(CPUUtilization)
FROM "AWS/EC2"
GROUP BY InstanceId
LIMIT 10
```

CPU 사용률이 가장 높은 인스턴스 10개 보기(최댓값을 기준으로 내림차순 정렬)

```
SELECT AVG(CPUUtilization)
FROM "AWS/EC2"
GROUP BY InstanceId
ORDER BY MAX() DESC
LIMIT 10
```

이 경우 CloudWatch 에이전트가 애플리케이션당 CPU 사용률 지표를 수집합니다. 이 쿼리는 특정 애플리케이션 이름에 대해 해당 지표의 평균을 필터링합니다.

```
SELECT AVG(CPUUtilization)
FROM "AWS/CWAgent"
WHERE ApplicationName = 'eCommerce'
SELECT AVG(ConcurrentExecutions)
FROM "AWS/Lambda"
```

상위 10개 Lambda 함수의 평균 실행 시간 보기(최댓값을 기준으로 내림차순 정렬)

```
SELECT AVG(Duration)
FROM "AWS/Lambda"
GROUP BY FunctionName
ORDER BY MAX() DESC
LIMIT 10
```

Lambda 실행 시간의 평균, 최솟값 및 최댓값 보기

```
SELECT MAX(Duration)
FROM "AWS/Lambda"
```

### Application Load Balancer 예제
<a name="application-loadbalancer-examples"></a>

 **LoadBalancer** 및 **AvailabilityZone** 차원을 포함하는 지표 보기

```
SELECT SUM(RequestCount)
FROM SCHEMA("AWS/ApplicationELB", LoadBalancer, AvailabilityZone)
```

활성 동시 TCP 연결 수를 포함하는 지표 보기

```
SELECT AVG(ActiveConnectionCount)
FROM "AWS/ApplicationELB"
```

### Amazon EBS 예제
<a name="Amazon-elastic-block-store-examples"></a>

 볼륨당 상위 10개 평균 쓰기 바이트 보기(내림차순 정렬)

```
SELECT AVG(VolumeWriteBytes)
FROM "AWS/EBS"
GROUP BY VolumeId
ORDER BY MAX() DESC
LIMIT 10
```

평균 Amazon EBS 볼륨 쓰기 시간 보기

```
SELECT AVG(VolumeTotalWriteTime)
FROM "AWS/EBS"
```

평균 Amazon EBS 볼륨 유휴 시간 보기

```
SELECT AVG(VolumeIdleTime)
FROM "AWS/EBS"
View average burst balance per volume
SELECT AVG(BurstBalance)
FROM "AWS/EBS"
GROUP BY VolumeId
View average read bytes across Amazon EBS volumes
SELECT AVG(VolumeReadBytes)
FROM "AWS/EBS"
```

Amazon EBS 볼륨에서 평균 쓰기 바이트 보기

```
SELECT AVG(VolumeWriteBytes)
FROM "AWS/EBS"
```

### Amazon Simple Storage Service 예제
<a name="simple-storage-service-examples"></a>

 버킷 이름별 평균 지연 시간 그룹 보기

```
SELECT AVG(TotalRequestLatency)
FROM "AWS/S3"
GROUP BY BucketName
```

모든 Amazon S3 버킷에서 버킷당 평균 객체 수 보기

```
SELECT AVG(NumberOfObjects)
FROM "AWS/S3"
GROUP BY BucketName
```

### Amazon Simple Notification Service 예제
<a name="Amazon-simple-notificaation-service-examples"></a>

Amazon-simple-notificaation-service-examples 

```
SELECT AVG(NumberOfMessagesPublished)
FROM "AWS/SNS"
```

각 주제 이름에 대해 실패한 평균 메시지 수 보기

```
SELECT AVG(NumberOfNotificationsFailed)
FROM "AWS/SNS"
GROUP BY TopicName
```

### AWS API 사용 예제
<a name="AWS-API-usage-examples"></a>

계정의 호출 수를 기준으로 상위 20 AWS APIs 보기 

```
SELECT COUNT(CallCount)
FROM "AWS/Usage"
WHERE "Type" = 'API'
GROUP BY "Service", "Resource"
ORDER BY SUM() DESC
LIMIT 20
```

## CloudWatch Metrics Insights 제한
<a name="metrics-insights-limits"></a>

CloudWatch Metrics Insights에는 현재 다음과 같은 제한이 있습니다.
+ 가장 최근 3시간의 데이터만 쿼리할 수 있습니다.
+ 단일 쿼리는 10,000개 이하의 지표를 처리할 수 있습니다. 즉, `SELECT`, `FROM`, `WHERE` 절이 10,000개가 넘는 지표와 일치하면 발견된 해당 지표 중 처음 10,000개만 쿼리에 의해 처리됩니다.
+ 단일 쿼리는 500개 이하의 시계열을 반환할 수 있습니다. 즉, 쿼리에서 500개가 넘는 지표를 반환하는 경우 일부 지표만 쿼리 결과에 반환됩니다. `ORDER BY` 절을 사용하면 처리되는 모든 지표가 정렬되고 `ORDER BY` 절에 따라 내림차순 또는 오름차순으로 500개가 반환됩니다. `ORDER BY` 절을 포함하지 않는 경우 반환되는 500개의 일치하는 지표을 제어할 수 없습니다.
+ 각 `GetMetricData` 작업에는 쿼리가 하나만 있을 수 있지만 대시보드에는 각 쿼리가 포함된 위젯이 여러 개 있을 수 있습니다.