

# CloudWatch 지표에 수학 표현식 사용
<a name="using-metric-math"></a>

지표 수학을 사용하면 여러 CloudWatch 지표를 쿼리하고 수학 표현식을 활용함으로써 이러한 지표를 기반으로 새로운 시계열을 만들 수 있습니다. CloudWatch 콘솔에서 결과 시계열을 시각화하고 대시보드에 추가할 수 있습니다. 예를 들어 AWS Lambda 지표를 사용하여 `Errors` 지표를 `Invocations` 지표로 나누어 오류 발생률을 얻을 수 있습니다. 그런 다음, 결과 시계열을 CloudWatch 대시보드의 그래프에 추가합니다.

`GetMetricData` API 작업을 사용하여 지표 계산을 프로그래밍방식으로 실행할 수도 있습니다. 자세한 내용은 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) 단원을 참조하세요.

## CloudWatch 그래프에 수학 표현식 추가
<a name="adding-metrics-expression-console"></a>

CloudWatch 대시보드의 그래프에 수학 표현식을 추가할 수 있습니다. 각 그래프의 지표와 표현식은 최대 500개까지 사용할 수 있도록 제한되므로 그래프의 지표가 499개 이하일 경우에만 수학 표현식을 추가할 수 있습니다. 이것은 그래프에 모든 지표가 표시되지 않는 경우에도 적용됩니다.

**그래프에 수학 표현식을 추가하려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

1. 그래프를 생성하거나 편집합니다. 그래프에 지표가 하나 이상 있어야 합니다.

1. **그래프로 표시된 지표(Graphed metrics)**를 선택합니다.

1. **수학 표현식**, **빈 표현식으로 시작**을 선택합니다. 표현식의 새 줄이 나타납니다.

1. 새 행의 **세부 정보** 열에 수학 표현식을 입력합니다. **지표 수식 구문 및 함수** 섹션의 테이블에는 표현식에 사용할 수 있는 함수가 나열됩니다.

   이 표현식을 위한 공식의 일부로 지표 또는 다른 표현식 결과를 사용하려면 **Id** 열에 표시된 값을 사용합니다(예: **m1\$1m2** 또는 **e1-MIN(e1)**).

   **Id** 값은 변경할 수 없습니다. 숫자, 문자, 밑줄이 포함될 수 있으며, 소문자로 시작해야 합니다. **Id**의 값을 좀 더 의미 있는 이름으로 변경하면 그래프를 더 쉽게 이해할 수 있습니다(예: **m1** 및 **m2**에서 **errors** 및 **requests**로 변경하는 경우).
**작은 정보**  
**수식 표현식** 옆의 아래쪽 화살표를 선택하여 표현식을 만들 때 사용할 수 있는 지원되는 함수 목록을 확인합니다.

1. 표현식의 **레이블** 열에는 표현식으로 계산되는 사항을 설명하는 이름을 입력합니다.

   표현식의 결과가 시계열 배열인 경우, 그 각각의 시계열이 그래프에 각각의 행과 서로 다른 색상으로 표시됩니다. 그래프 바로 아래에 그래프 내 각 행의 범례가 표시됩니다. 하나의 표현식이 여러 개의 시계열을 생성하는 경우, 해당 시계열의 범례 캡션은 ***Expression-Label Metric-Label(표현식-레이블 지표-레이블)*** 형식으로 표시됩니다. 예를 들어 그래프에 [**오류(Errors)**] 레이블이 있는 지표와 [**0으로 채워짐:(Filled With 0:)**] 레이블이 있는 [**FILL(METRICS(), 0)**] 표현식이 포함되어 있는 경우 범례의 한 줄은 [**0으로 채워짐: 오류(Filled With 0: Errors)**]가 됩니다. 범례에 원래의 지표 레이블만 표시하려면 *Expression-Label(표현식-레이블)*을 비워둡니다.

   한 표현식이 그래프에 시계열 배열을 생성하면 해당 시계열 각각에 사용된 색상을 변경할 수 없습니다.

1. 원하는 표현식을 추가한 후에는 원래 지표 일부를 숨겨 그래프를 간소화할 수 있습니다. 지표 또는 표현식을 숨기려면 **Id** 필드 좌측의 확인란 선택을 지웁니다.

## 지표 수학 구문 및 함수
<a name="metric-math-syntax"></a>

아래 단원에서는 지표 수식에서 사용되는 함수를 설명합니다. 모든 함수는 대문자로 작성해야 하며(예: **AVG**), 모든 지표와 수학 표현식의 **Id** 필드는 소문자로 시작해야 합니다.

수학 표현식의 최종 결과는 단일 시계열이거나 시계열 배열이어야 합니다. 일부 함수는 스칼라 수를 생성합니다. 최종적으로 하나의 시계열을 생성하는 더 큰 함수 안에서 이러한 함수를 사용할 수 있습니다. 예를 들어, 단일 시계열에서 **AVG**를 빼면 스칼라 수가 생성되므로 최종 표현식 결과가 될 수 없습니다. 그러나 **m1-AVG(m1)** 함수에서 이를 사용하면 각 개별 데이터 요소와 시계열의 평균값 간 차이에 대한 시계열을 표시할 수 있습니다.

### 데이터 유형 약어
<a name="metric-math-syntax-datatypes"></a>

일부 함수는 특정 형식의 데이터에만 유효합니다. 다음 목록에 나와 있는 약어는 각 함수에 지원되는 데이터 형식을 나타내는 함수 표에서 사용됩니다.
+ **S**는 2, -5 또는 50.25와 같은 스칼라 수를 나타냅니다.
+ **TS**는 지난 3일 동안 `i-1234567890abcdef0` 인스턴스의 `CPUUtilization` 지표와 같은 시계열(시간 경과에 따른 일련의 단일 CloudWatch 지표 값)입니다.
+ **TS[]**는 시계열 배열입니다(예: 여러 지표에 대한 시계열).
+ **String[]**은 문자열 배열입니다.

### METRICS() 함수
<a name="metric-math-syntax-metrics-function"></a>

**METRICS()** 함수는 요청에 모든 지표를 반환합니다. 수학 표현식은 포함되지 않습니다.

단일 시계열이나 시계열 배열을 생성하는 더 큰 표현식 안에 **METRICS()** 를 사용할 수 있습니다. 예를 들어, 표현식 **SUM(METRICS())**은 모든 그래프 지표 값의 합인 시계열(TS)을 반환합니다. **METRICS()/100** 은 시계열 배열을 반환하며 그 각각은 지표 중 하나의 각 데이터 요소를 100으로 나눈 값을 표시하는 시계열입니다.

**METRICS()** 함수를 문자열과 함께 사용하여 그 **Id** 필드에 해당 문자열이 있는 그래프 지표만 반환할 수 있습니다. 예를 들어, 표현식 **SUM(METRICS("errors"))**은 그 **Id** 필드에 '오류'가 있는 모든 그래프 지표 값의 합인 시계열을 반환합니다. **SUM([METRICS(“4xx”), METRICS(“5xx”)])**을 사용하여 여러 문자열을 일치시킬 수도 있습니다.

### 기본 산술 함수
<a name="metric-math-syntax-arithmetic"></a>

다음 표에는 지원되는 기본 산술 함수가 나와 있습니다. 시계열의 누락 값은 0으로 처리됩니다. 데이터 요소의 값 때문에 함수에서 0으로 나누려고 시도할 경우 해당 데이터 요소가 누락됩니다.


| 연산 | 인수 | 예제 | 
| --- | --- | --- | 
|  산술 연산자: \$1 - \$1 / ^ |  S, S S, TS TS, TS S, TS[] TS, TS[]  |  PERIOD(m1)/60 **5 \$1 m1** **m1 - m2** **SUM(100/[m1, m2])** **AVG(METRICS())** **METRICS()\$1100**  | 
|  빼기 기호 -  |  S TS TS[]  |  **-5\$1m1** **-m1** **SUM(-[m1, m2])**  | 

### 비교 및 논리 연산자
<a name="metric-math-syntax-operators"></a>

비교 및 논리 연산자를 시계열 쌍이나 단일 스칼라 값 쌍과 함께 사용할 수 있습니다. 비교 연산자를 시계열 쌍과 함께 사용하면 연산자는 각 데이터 요소가 0(false) 또는 1(true)인 시계열을 반환합니다. 스칼라 값 쌍에 비교 연산자를 사용하면 0 또는 1 중 하나의 스칼라 값이 반환됩니다.

비교 연산자가 두 시계열 사이에 사용되고 시계열 중 하나에만 특정 타임스탬프에 대한 값이 있는 경우, 이 함수는 다른 시계열의 누락 값을 **0**으로 처리합니다.

논리 연산자를 비교 연산자와 함께 사용하여 보다 복잡한 함수를 만들 수 있습니다.

다음 표에는 지원되는 연산자가 나와 있습니다.


| 연산자 유형 | 지원되는 연산자 | 
| --- | --- | 
|  비교 연산자 |  == \$1= <= >= < >  | 
|  논리 연산자 |  AND 및 && OR 또는 \$1\$1  | 

이러한 연산자가 어떻게 사용되는지 알아보기 위해 2개의 시계열이 있다고 가정해 보겠습니다. **metric1**의 값은 `[30, 20, 0, 0]`이고 **metric2**의 값은 `[20, -, 20, -]`입니다. 여기서 `-` 기호는 해당 타임스탬프에 대한 값이 없음을 나타냅니다.


| 표현식 | 출력 | 
| --- | --- | 
|  **(metric1 < metric2)** |  **0, 0, 1, 0**  | 
|  **(metric1 >= 30)** |  **1, 0, 0, 0**  | 
|  **(metric1 > 15 AND metric2 > 15)** |  **1, 0, 0, 0**  | 

### 지표 수학에 지원되는 함수
<a name="metric-math-syntax-functions-list"></a>

다음 표에서는 수학 표현식에서 사용할 수 있는 함수를 설명합니다. 모든 함수를 대문자로 입력합니다.

수학 표현식의 최종 결과는 단일 시계열이거나 시계열 배열이어야 합니다. 아래 단원에 나오는 표의 일부 함수는 스칼라 수를 생성합니다. 최종적으로 하나의 시계열을 생성하는 더 큰 함수 안에서 이러한 함수를 사용할 수 있습니다. 예를 들어, 단일 시계열에서 **AVG**를 빼면 스칼라 수가 생성되므로 최종 표현식 결과가 될 수 없습니다. 그렇지만 이것을 함수 **m1-AVG(m1)**에서 사용하여 각 개별 데이터 요소와 해당 데이터 요소의 평균값 차이인 시계열을 표시할 수 있습니다.

아래의 표에서 **예제** 열의 모든 예제는 단일 시계열이나 시계열 배열을 생성하는 표현식입니다. 스칼라 수를 반환하는 함수를 단일 시계열을 생성하는 유효한 표현식의 일부로 사용하는 방법을 보여주는 예제입니다.


| 함수 | 인수 | 반환 유형**\$1** | 설명 | 예제 | 교차 계정에 대해 지원됩니까? | 
| --- | --- | --- | --- | --- | --- | 
|  **ABS** |  TS TS[]  |  TS TS[]  | 각 데이터 요소의 절대값을 반환합니다. |  **ABS(m1-m2)** **MIN(ABS([m1, m2]))** **ABS(METRICS())**  | ✓ | 
|  **ANOMALY\$1DETECTION\$1BAND** |  TS TS, S  |  TS[]  | 지정된 지표에 대한 이상 탐지 밴드를 반환합니다. 밴드는 두 시계열로 구성되어 있으며 하나는 지표의 "정상" 기댓값에 대한 상한 치수를 나타내며 다른 하나는 하한 치수를 나타냅니다. 함수는 두 개의 인수가 필요합니다. 첫 번째는 밴드를 생성할 지표의 ID입니다. 두 번째 인수는 밴드에 사용할 표준 편차의 수입니다. 이 인수를 지정하지 않으면, 두 개의 기본값이 사용됩니다. 자세한 내용은 [CloudWatch 이상 탐지 사용](CloudWatch_Anomaly_Detection.md) 섹션을 참조하세요. |  **ANOMALY\$1DETECTION\$1BAND(m1)** **ANOMALY\$1DETECTION\$1BAND(m1,4)**  |  | 
|  **AVG** |  TS TS[]  |  S TS  | 단일 시계열의 **AVG**는 지표의 모든 데이터 요소 평균을 나타내는 스칼라를 반환합니다. 시계열 배열의 **AVG**는 단일 시계열을 반환합니다. 누락된 값은 0로 처리됩니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 예를 들어 `AVG(m2)`입니다. 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 요소를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다. 이 기능을 경보, 특히 Auto Scaling 동작이 있는 경보에 사용하려면 경보가 N개의 데이터 포인트 중 M개를 사용하도록 설정하는 것이 좋습니다(여기서 M < N).   |  **SUM([m1,m2])/AVG(m2)** **AVG(METRICS())**  | ✓ | 
|  **CEIL** |  TSTS[]  |  TS TS[]  | 각 지표의 상한을 반환합니다. 상한은 각 값보다 크거나 같은 가장 작은 정수입니다. |  **CEIL(m1)** **CEIL(METRICS())** **SUM(CEIL(METRICS()))**  | ✓ | 
|  **DATAPOINT\$1COUNT** |  TS TS[]  |  S TS  | 값을 보고한 데이터 포인트의 수를 반환합니다. 이는 희소 지표의 평균을 계산하는 데 유용합니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 요소를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **SUM(m1) / DATAPOINT\$1COUNT(m1)** **DATAPOINT\$1COUNT(METRICS())**  | ✓ | 
|  **DB\$1PERF\$1INSIGHTS** |  문자열, 문자열, 문자열 문자열, 문자열, 문자열[]  |  TS(단일 문자열이 주어진 경우) TS[](문자열 배열이 주어진 경우)  | Amazon 관계형 데이터베이스 서비스 및 Amazon DocumentDB(MongoDB 호환)와 같은 데이터베이스에 대한 성능 개선 도우미 카운터 지표를 반환합니다. 이 함수는 Performance Insights API를 직접 쿼리하여 얻을 수 있는 것과 동일한 양의 데이터를 반환합니다. CloudWatch에서 이러한 지표를 사용하여 그래프를 작성하고 경보를 생성할 수 있습니다.  이 함수를 사용할 때는 데이터베이스의 고유 데이터베이스 리소스 ID를 지정해야 합니다. 이는 데이터베이스 식별자와는 다릅니다. Amazon RDS 콘솔에서 데이터베이스 리소스 ID를 찾으려면 DB 인스턴스를 선택하여 세부 정보를 확인합니다. 그런 다음 **구성** 탭을 선택합니다. 그러면 **리소스 ID**가 **구성** 섹션에 표시됩니다.  또한 **DB\$1PERF\$1INSIGHTS**는 1분 미만의 간격으로 `DBLoad` 지표를 가져옵니다. 이 함수로 검색된 성능 개선 도우미 지표는 CloudWatch에 저장되지 않습니다. 따라서 계정 간 통합 가시성, 이상 탐색, 지표 스트림, 지표 탐색기, Metric Insights와 같은 일부 CloudWatch 기능은 **DB\$1PERF\$1INSIGHTS**로 검색하는 성능 개선 도우미 지표에서는 작동하지 않습니다. **DB\$1PERF\$1INSIGHTS** 함수를 사용하는 단일 요청으로 다음과 같은 개수의 데이터 포인트를 검색할 수 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/using-metric-math.html) **DB\$1PERF\$1INSIGHTS** 함수는 다음 기간 길이만 지원합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/using-metric-math.html) Amazon RDS Performance Insights 카운터 지표에 대한 자세한 내용은 [성능 개선 도우미 카운터](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html) 섹션을 참조하세요. Amazon DocumentDB 성능 개선 도우미 카운터 지표에 대한 자세한 내용은 [성능 개선 도우미 카운터](https://docs.aws.amazon.com/documentdb/latest/developerguide/performance-insights-counter-metrics.html) 섹션을 참조하세요.  **DB\$1PERF\$1INSIGHTS**가 검색하는 분 단위 이하의 고분해능 지표는 **DBLoad** 지표 또는 운영 체제 지표(고분해능에서 Enhanced Monitoring을 사용하도록 설정한 경우)에만 적용됩니다. Amazon RDS 확장 모니터링에 대한 자세한 내용은 [Enhanced Monitoring을 사용하여 OS 지표 모니터링](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html)을 참조하세요. **DB\$1PERF\$1INSIGHTS** 함수를 사용하여 최대 3시간 범위의 고분해능 경보를 생성할 수 있습니다. CloudWatch 콘솔을 사용하여 **DB\$1PERF\$1INSIGHTS** 함수로 검색된 지표를 원하는 시간 범위에 대해 그래프로 표시할 수 있습니다.  |  **DB\$1PERF\$1INSIGHTS(‘RDS’, ‘db-ABCDEFGHIJKLMNOPQRSTUVWXY1’, ‘os.cpuUtilization.user.avg’)** **DB\$1PERF\$1INSIGHTS(‘DOCDB, ‘db-ABCDEFGHIJKLMNOPQRSTUVWXY1’, [‘os.cpuUtilization.idle.avg’, ‘os.cpuUtilization.user.max’])**  |  | 
|  **DIFF** |  TSTS[]  |  TS TS[]  | 시계열의 각 값과 해당 시계열의 이전 값 간 차이를 반환합니다. |  **DIFF(m1)**  | ✓ | 
|  **DIFF\$1TIME** |  TSTS[]  |  TS TS[]  | 시계열에 있는 각 값의 타임스탬프와 해당 시계열에 있는 이전 값의 타임스탬프 간 차이(초)를 반환합니다. |  **DIFF\$1TIME(METRICS())**  | ✓ | 
|  **FILL** |  TS, [S \$1 REPEAT \$1 LINEAR] TS[], [TS \$1 S \$1 REPEAT \$1 LINEAR]  |  TS TS[]  | 시계열의 누락된 값을 채웁니다. 누락된 값의 필러로 사용할 값과 관련하여 다음과 같은 몇 가지 옵션이 있습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/using-metric-math.html)  경보에 이 함수를 사용할 때 지표를 약간 지체하여 게시하고 가장 최근 분에 데이터가 없는 경우 문제가 발생할 수 있습니다. 이 경우 **FILL**은 누락된 데이터 요소를 요청된 값으로 바꿉니다. 그러면 지표의 최신 데이터 요소가 항상 FILL 값이 되어 경보가 OK 상태 또는 ALARM 상태에서 멈추게 될 수 있습니다. ‘M out of N’ 경보를 사용하여 이 문제를 해결할 수 있습니다. 자세한 내용은 [경보 평가](alarm-evaluation.md) 섹션을 참조하세요.  |  **FILL(m1,10)** **FILL(METRICS(), 0)** **FILL(METRICS(), m1)** **FILL(m1, MIN(m1))** **FILL(m1, REPEAT)** **FILL(METRICS(), LINEAR)**  | ✓ | 
|  **FIRST** **LAST** |  TS[]  |  TS  | 시계열 배열에서 첫 번째 시계열 또는 마지막 시계열을 반환합니다. **SORT** 함수와 함께 사용할 때 유용합니다. 또한 **ANOMALY\$1DETECTION\$1BAND** 함수에서 높은 임곗값과 낮은 임곗값을 가져오는 데도 사용할 수 있습니다. |  **IF(FIRST(SORT(METRICS(), AVG, DESC))>100, 1, 0)** 배열에서 AVG별로 정렬된 상위 지표를 확인합니다. 그런 다음, 해당 데이터 포인트 값이 100 이상인지 여부에 따라 각 데이터 포인트에 대해 1 또는 0을 반환합니다. **LAST(ANOMALY\$1DETECTION\$1BAND(m1))**은 이상 예측 대역의 상한값을 반환합니다.  | ✓ | 
|  **FLOOR** |  TSTS[]  |  TS TS[]  | 각 지표의 하한을 반환합니다. 하한은 각 값보다 작거나 같은 가장 큰 정수입니다. |  **FLOOR(m1)** **FLOOR(METRICS())**  | ✓ | 
|  **IF** |  **IF** 표현식  |  TS  | **IF**를 비교 연산자와 함께 사용하여 시계열에서 데이터 요소를 필터링하거나 수집된 여러 시계열로 구성된 혼합 시계열을 생성합니다. 자세한 내용은 [IF 표현식 사용](#using-IF-expressions) 섹션을 참조하세요. | 예시는 [IF 표현식 사용](#using-IF-expressions) 섹션을 참조하세요.  | ✓ | 
|  **INSIGHT\$1RULE\$1METRIC** |  **INSIGHT\$1RULE\$1METRIC(ruleName, metricName)**  |  TS  | **INSIGHT\$1RULE\$1METRIC**을 사용하여 Contributor Insights의 규칙에서 통계를 추출합니다. 자세한 내용은 [CloudWatch에서 규칙에 따라 생성된 지표 그래프 작성Contributor Insights 지표 데이터에 대한 경보 설정하기](ContributorInsights-GraphReportData.md) 섹션을 참조하세요. |   |  | 
|  **LAMBDA** |  **LAMBDA(LambdaFunctionName [, optional-arg]\$1)**  |  TS TS[]  | Lambda 함수를 직접적으로 호출하여 CloudWatch가 아닌 데이터 소스에서 지표를 쿼리합니다. 자세한 내용은 [Lambda 함수에 인수를 전달하는 방법](CloudWatch_MultiDataSources-Custom-Use.md#MultiDataSources-Connect-Custom-Lambda-arguments) 섹션을 참조하세요. |   |  | 
|  **LOG** |  TS TS[]  |  TS TS[]  | 시계열의 **LOG**는 시계열에 있는 각 값의 자연 로그 값을 반환합니다. |  **LOG(METRICS())**  | ✓ | 
|  **LOG10** |  TS TS[]  |  TS TS[]  | 시계열의 **LOG10**은 시계열에 있는 각 값의 base-10 로그 값을 반환합니다. |  **LOG10(m1)**  | ✓ | 
|  **MAX** |  TS TS[]  |  S TS  | 단일 시계열의 **MAX**는 지표의 모든 데이터 요소의 최대값을 나타내는 스칼라를 반환합니다. 시계열 배열을 입력하면 **MAX** 함수는 입력으로 사용된 시계열 중에서 각 데이터 포인트의 가장 큰 값으로 구성된 시계열을 만들어 반환합니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 예를 들어 `MAX(m2)`의 경우 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 포인트를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **MAX(m1)/m1** **MAX(METRICS())**  | ✓ | 
|  **METRIC\$1COUNT** |  TS[]  |  S  | 시계열 어레이의 지표 수를 반환합니다. |  **m1/METRIC\$1COUNT(METRICS())**  | ✓ | 
|  **지표** |  null 문자열  |  TS[]  | **METRICS()** 함수는 요청의 모든 CloudWatch 지표를 반환합니다. 수학 표현식은 포함되지 않습니다. 단일 시계열이나 시계열 배열을 생성하는 더 큰 표현식 안에 **METRICS()** 를 사용할 수 있습니다. **METRICS()** 함수를 문자열과 함께 사용하여 그 **Id** 필드에 해당 문자열이 있는 그래프 지표만 반환할 수 있습니다. 예를 들어, 표현식 **SUM(METRICS("errors"))**은 그 **Id** 필드에 '오류'가 있는 모든 그래프 지표 값의 합인 시계열을 반환합니다. **SUM([METRICS(“4xx”), METRICS(“5xx”)])**을 사용하여 여러 문자열을 일치시킬 수도 있습니다. |  **AVG(METRICS())** **SUM(METRICS("errors"))**  | ✓ | 
|  **MIN** |  TS TS[]  |  S TS  | 단일 시계열의 **MIN**은 지표의 모든 데이터 요소의 최소값을 나타내는 스칼라를 반환합니다. 시계열 배열을 입력하면 **MIN** 함수는 입력으로 사용된 시계열 중에서 각 데이터 포인트의 가장 작은 값으로 구성된 시계열을 만들어 반환합니다. 시계열 배열을 입력하면 **MIN** 함수는 입력으로 사용된 시계열 중에서 각 데이터 포인트의 가장 작은 값으로 구성된 시계열을 만들어 반환합니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 예를 들어 `MIN(m2)`의 경우 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 포인트를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **m1-MIN(m1)** **MIN(METRICS())**  | ✓ | 
|  **분** **시간** **요일** **날짜** **달** **년** **EPOCH** |  TS  |  TS  | 이러한 함수는 시계열의 기간 및 범위를 사용하여 각 값이 해당 타임스탬프를 기반으로 하는 새로운 비희소 시계열을 반환합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/using-metric-math.html) |  **MINUTE(m1)** **IF(DAY(m1)<6,m1)**는 월요일부터 금요일까지 평일의 지표만 반환합니다. **IF(MONTH(m1) == 4,m1)**는 4월에 게시된 지표만 반환합니다.  | ✓ | 
|  **PERIOD** |  TS  |  S  | 지표의 기간(초)을 반환합니다. 유효한 입력은 지표이지 다른 표현식의 결과가 아닙니다. |  **m1/PERIOD(m1)**  | ✓ | 
|  **속도** |  TS TS[]  |  TS TS[] | 지표의 초당 변경 비율을 반환합니다. 이것은 마지막 데이터 요소 값과 그 이전의 데이터 요소 값의 차이를 두 값의 시간차(초)로 나눈 값으로 계산됩니다.  희소 데이터가 포함된 지표에 RATE 함수를 사용하는 표현식에 대한 경보를 설정하면 경보를 평가할 때 가져온 데이터 포인트의 범위가 데이터 포인트의 마지막 게시 시기에 따라 달라질 수 있기 때문에 예상치 못한 동작이 발생할 수 있습니다.  |  **RATE(m1)** **RATE(METRICS())**  | ✓ | 
|  **REMOVE\$1EMPTY** |  TS[]  |  TS[] | 시계열 배열에서 데이터 포인트가 없는 시계열을 제거합니다. 결과는 각 시계열에 적어도 하나의 데이터 포인트가 포함된 시계열 배열입니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 요소를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **REMOVE\$1EMPTY(METRICS())**   | ✓ | 
|  **RUNNING\$1SUM** |  TS TS[]  |  TS TS[]  | 원래 시계열에 값의 누적 합계가 있는 시계열을 반환합니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 요소를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **RUNNING\$1SUM([m1,m2])**  | ✓ | 
|  **SEARCH** |  검색 표현식  |  하나 이상의 TS  | 지정한 검색 기준과 일치하는 시계열을 하나 이상 반환합니다. **SEARCH** 함수를 사용하면 표현식 하나로 그래프에 관련된 시계열을 여러 개 추가할 수 있습니다. 나중에 추가되고 검색 기준과 일치하는 새 지표를 포함하도록 그래프가 동적으로 업데이트됩니다. 자세한 내용은 [그래프에서 검색 표현식 사용](using-search-expressions.md) 섹션을 참조하세요. **SEARCH** 표현식을 기반으로 경보를 생성할 수 없습니다. 검색 표현식은 여러 시계열을 반환하고 수학 표현식 기반 경보는 하나의 시계열만 관찰할 수 있기 때문입니다. CloudWatch 크로스 계정 관찰성의 모니터링 계정에 로그인한 경우 **SEARCH** 함수는 소스 계정과 모니터링 계정에서 지표를 찾습니다. |   | ✓ | 
|  **SERVICE\$1QUOTA** |  사용량 지표인 TS  |  TS  | 지정된 사용량 지표에 대한 서비스 할당량을 반환합니다. 이 함수를 사용하여 현재 사용량을 할당량과 비교하는 방법을 시각화하고 할당량에 접근할 때 경고하는 경보를 설정할 수 있습니다. 자세한 내용은 [AWS 사용량 지표](CloudWatch-Service-Quota-Integration.md) 섹션을 참조하세요. |   | ✓ | 
|  **SLICE** |  (TS[], S, S) 또는 (TS[], S)  |  TS[] TS  | 시계열 배열의 일부를 검색합니다. **SORT**와 결합할 때 특히 유용합니다. 예를 들어 시계열 배열에서 상위 결과를 제외할 수 있습니다. 2개의 스칼라 인수를 사용하여 반환하려는 시계열 집합을 정의할 수 있습니다. 2개의 스칼라는 반환할 배열의 시작(포함)과 끝(제외)을 정의합니다. 배열은 0을 기반으로 인덱싱되므로 배열의 첫 번째 시계열은 시계열 0입니다. 또는 값을 하나만 지정할 수 있습니다. 그러면 CloudWatch는 해당 값으로 시작하는 모든 시계열을 반환합니다.  | **SLICE(SORT(METRICS(), SUM, DESC), 0, 10)**는 요청의 지표 배열에서 SUM 값이 가장 높은 10개의 지표를 반환합니다. **SLICE(SORT(METRICS(), AVG, ASC), 5)**는 AVG 통계별로 지표 배열을 정렬한 다음 AVG가 가장 낮은 5를 제외한 모든 시계열을 반환합니다.  | ✓ | 
|  **SORT** |  (TS[], FUNCTION, SORT\$1ORDER) (TS[], FUNCTION, SORT\$1ORDER, S)  |  TS[]  | 지정한 함수에 따라 시계열 배열을 정렬합니다. 사용하는 함수는 **AVG**, **MIN**, **MAX** 또는 **SUM**일 수 있습니다. 정렬 순서는 가장 낮은 값을 먼저 정렬하는 오름차순의 **ASC** 또는 더 높은 값을 먼저 정렬하는 **DESC**일 수 있습니다. 선택적으로 정렬 순서 뒤에 제한 역할을 하는 숫자를 지정할 수 있습니다. 예를 들어 제한을 5로 지정하면 정렬에서 상위 5개의 시계열만 반환됩니다. 이 수학 함수가 그래프에 표시되면 그래프의 각 지표에 대한 레이블도 정렬되고 번호가 매겨집니다.  | **SORT(METRICS(), AVG, DESC, 10)**은 각 시계열의 평균값을 계산하고, 정렬의 시작 부분에서 가장 높은 값을 가진 시계열을 정렬하고, 평균이 가장 높은 10개의 시계열만 반환합니다. **SORT(METRICS(), MAX, ASC)**는 MAX 통계별로 지표 배열을 정렬한 다음 모두 오름차순으로 반환합니다.  | ✓ | 
|  **STDDEV** |  TS TS[]  |  S TS  | 단일 시계열의 **STDDEV**는 지표의 모든 데이터 요소의 표준편차를 나타내는 스칼라를 반환합니다. 시계열 배열의 **STDDEV** 는 단일 시계열을 반환합니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 예를 들어 `STDDEV(m2)`의 경우 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 포인트를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **m1/STDDEV(m1)** **STDDEV(METRICS())**  | ✓ | 
|  **SUM** |  TS TS[]  |  S TS  | 단일 시계열의 **SUM**은 지표의 모든 데이터 요소 값의 합을 나타내는 스칼라를 반환합니다. 시계열 배열의 **SUM** 은 단일 시계열을 반환합니다.  CloudWatch 경보에 이 함수를 사용하지 않는 것이 좋습니다. 예를 들어 `SUM(m1)`입니다. 경보가 상태 변경 여부를 평가할 때마다 CloudWatch는 평가 기간으로 지정된 수보다 더 높은 수의 데이터 요소를 검색하려고 합니다. 이 함수는 추가 데이터가 요청될 때 다르게 작동합니다.  |  **SUM(METRICS())/SUM(m1)** **SUM([m1,m2])** **SUM(METRICS("errors"))/SUM(METRICS("requests"))\$1100**  | ✓ | 
|  **TIME\$1SERIES** |  S  |  TS  | 모든 값이 스칼라 인수로 설정된 비희소 시계열을 반환합니다. |  **TIME\$1SERIES(MAX(m1))** **TIME\$1SERIES(5\$1AVG(m1))** **TIME\$1SERIES(10)**  | ✓ | 

**\$1**스칼라 수만 반환하는 함수만 사용하는 것은 유효하지 않습니다. 표현식의 모든 최종 결과가 단일 시계열 또는 시계열 배열이어야 하기 때문입니다. 이러한 함수는 시계열을 반환하는 더 큰 표현식의 일부로 사용하세요.

## IF 표현식 사용
<a name="using-IF-expressions"></a>

**IF**를 비교 연산자와 함께 사용하여 시계열에서 데이터 요소를 필터링하거나 수집된 여러 시계열로 구성된 혼합 시계열을 생성합니다.

**IF**는 다음 인수를 사용합니다.

```
IF(condition, trueValue, falseValue)
```

조건은 조건 데이터 요소의 값이 0이면 FALSE로, 조건 값이 양수인지 음수인지 여부에 관계없이 다른 값이면 TRUE로 평가됩니다. 조건이 시계열이면 모든 타임스탬프에 대해 개별적으로 평가됩니다.

다음에는 유효한 구문이 나와 있습니다. 이러한 각 구문에 대한 출력은 단일 시계열입니다.
+ **IF(TS *Comparison Operator* S, S \$1 TS, *S \$1 TS*)**
**참고**  
`TS comparison operator S`가 TRUE이지만 해당하는 데이터 포인트가 `metric2`에 없는 경우 출력은 0이 됩니다.
+ **IF(TS, TS, *TS*)**
+ **IF(TS, S, *TS*)**
+ **IF(TS, TS, S)**
+ **IF(TS, S, S)**
+ **IF(S, TS, *TS*)**

다음 섹션에서는 이러한 구문에 대한 세부 정보와 관련 예제를 제공합니다.

**IF(TS *Comparison Operator* S, scalar2 \$1 metric2, scalar3 \$1 metric3)**

해당 출력 시계열 값:
+ **TS *비교 연산자* S**가 TRUE인 경우 값은 **scalar2** 또는 **metric2**입니다.
+ **TS *비교 연산자* S**가 FALSE인 경우 값은 **scalar3** 또는 **metric3**입니다.
+ **TS *비교 연산자***가 TRUE이고 **metric2**의 해당 데이터 요소가 존재하지 않는 경우 값은 **0**입니다.
+ **TS *비교 연산자***가 FALSE이고 **metric3**의 해당 데이터 요소가 존재하지 않는 경우 값은 **0**입니다.
+ 해당 데이터 요소가 **metric3**에 없거나 **scalar3** /**metric3**이 이 표현식에서 생략된 경우 빈 시계열입니다.

**IF(metric1, metric2, *metric3*)**

**metric1**의 각 데이터 요소의 경우, 해당 출력 시계열 값:
+ **metric1**의 해당 데이터 요소가 TRUE인 경우 값은 **metric2**입니다.
+ **metric1**의 해당 데이터 요소가 FALSE인 경우 값은 **metric3**입니다.
+ **metric1**의 해당 데이터 요소가 TRUE이고 해당 데이터 요소가 **metric2**에 없는 경우 값은 **0**입니다.
+ **metric1**의 해당 데이터 포인트가 FALSE이고 해당 데이터 포인트가 **metric3**에 없는 경우 값은 **0**입니다.
+ **metric1**의 해당 데이터 요소가 FALSE이고 **metric3**이 표현식에서 생략된 경우 삭제됩니다.
+ **metric1**의 해당 데이터 요소가 없는 경우 삭제됩니다.

다음 표에서는 이 구문의 예제를 보여줍니다.


| 지표 또는 함수 | 값 | 
| --- | --- | 
|  **(metric1)** |  **[1, 1, 0, 0, -]**  | 
|  **(metric2)** |  **[30, -, 0, 0, 30]**  | 
|  **(metric3)** |  **[0, 0, 20, -, 20]**  | 
|  **IF(metric1, metric2, metric3)** |  **[30, 0, 20, 0, -]**  | 

**IF(metric1, scalar2, metric3)**

**metric1**의 각 데이터 요소의 경우, 해당 출력 시계열 값:
+ **metric1**의 해당 데이터 요소가 TRUE인 경우 값은 **scalar2**입니다.
+ **metric1**의 해당 데이터 요소가 FALSE인 경우 값은 **metric3**입니다.
+ **metric1**의 해당 데이터 요소가 FALSE이고 해당 데이터 요소가 **metric3**에 없는 경우 또는 **metric3**이 표현력에서 생략된 경우 삭제됩니다.


| 지표 또는 함수 | 값 | 
| --- | --- | 
|  **(metric1)** |  **[1, 1, 0, 0, -]**  | 
|  **scalar2** |  **5**  | 
|  **(metric3)** |  **[0, 0, 20, -, 20]**  | 
|  **IF(metric1, scalar2, metric3)** |  **[5, 5, 20, -, -]**  | 

**IF(metric1, metric2, scalar3)**

**metric1**의 각 데이터 요소의 경우, 해당 출력 시계열 값:
+ **metric1**의 해당 데이터 요소가 TRUE인 경우 값은 **metric2**입니다.
+ **metric1**의 해당 데이터 요소가 FALSE인 경우 값은 **scalar3**입니다.
+ **metric1**의 해당 데이터 요소가 TRUE이고 해당 데이터 요소가 **metric2**에 없는 경우 값은 **0**입니다.
+ **metric1**의 해당 데이터 요소가 없으면 삭제됩니다.


| 지표 또는 함수 | 값 | 
| --- | --- | 
|  **(metric1)** |  **[1, 1, 0, 0, -]**  | 
|  **(metric2)** |  **[30, -, 0, 0, 30]**  | 
|  **scalar3** |  **5**  | 
|  **IF(metric1, metric2, scalar3)** |  **[30, 0, 5, 5, -]**  | 

**IF(scalar1, metric2, *metric3*)**

해당 출력 시계열 값:
+ **scalar1**이 TRUE인 경우 값은 **metric2**입니다.
+ **scalar1**이 FALSE인 경우 값은 **metric3**입니다.
+ **metric3**이 표현식에서 생략된 경우 빈 시계열입니다.

### IF 표현식의 사용 사례 예
<a name="using-IF-expressions-use-cases"></a>

다음 예제에서는 **IF** 함수의 가능한 용도를 보여줍니다.
+ 지표의 하한값만 표시하려면:

  **IF(metric1<400, metric1)**
+ 지표의 각 데이터 요소를 두 값 중 하나로 변경하고 원래 지표의 상대적 상한값 및 하한값을 표시하려면:

  **IF(metric1<400, 10, 2)**
+ 지연 시간이 임곗값을 초과하는 각 타임 스탬프에 대해 1을 표시하고 다른 모든 데이터 요소에 대해 0을 표시하려면:

  **IF(latency>threshold, 1, 0)**

### GetMetricData API 작업에서 지표 수학 사용
<a name="using-metrics-expression-api"></a>

`GetMetricData`를 사용하여 수학 표현식을 사용하는 계산을 수행할 수 있을 뿐만 아니라 하나의 API 호출에서 대규모 지표 데이터 배치를 검색할 수도 있습니다. 자세한 내용은 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) 단원을 참조하세요.

## 지표 수학에 대한 이상 탐지
<a name="using-anomaly-detection-on-metric-math"></a>

지표 수학에 대한 이상 탐지는 단일 지표와 지표 수학 표현식의 출력에 대한 이상 탐지 경보를 만드는 데 사용할 수 있는 기능입니다. 이러한 표현식을 사용하여 이상 탐지 밴드를 시각화하는 그래프를 만들 수 있습니다. 이 기능은 기본 산술 함수, 비교 및 논리 연산자 및 대부분의 기타 함수를 지원합니다.

**지표 수학에 대한 이상 탐지는 다음 함수를 지원하지 않습니다.**
+ 같은 줄에 둘 이상의 **ANOMALY\$1DETECTION\$1BAND**를 포함하는 표현식.
+ 10개 이상의 지표 또는 수학 표현식을 포함하는 표현식.
+ **METRICS** 표현식을 포함하는 표현식.
+ **SEARCH** 함수를 포함하는 표현식.
+ **DP\$1PERF\$1INSIGHTS** 함수를 사용하는 식입니다.
+ 기간이 다른 지표를 사용하는 표현식.
+ 1시간보다 긴 기간을 입력으로 사용하는 표현식.
+ 높은 분해능의 지표를 입력으로 사용하는 표현식.

이 기능에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [CloudWatch 이상 탐지 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Anomaly_Detection.html#anomaly_detection_on_metric_math)을 참조하세요.