지표 수식 사용 - Amazon CloudWatch

지표 수식 사용

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

GetMetricData API 작업을 사용하여 지표 계산을 프로그래밍방식으로 실행할 수도 있습니다. 자세한 내용은 GetMetricData 단원을 참조하십시오.

CloudWatch 그래프에 수학 표현식 추가

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

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

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

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

  3. 그래프로 표시된 지표를 선택합니다.

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

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

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

    Id 값은 변경할 수 없습니다. 숫자, 문자, 밑줄이 포함될 수 있으며, 소문자로 시작해야 합니다. Id의 값을 좀 더 의미 있는 이름으로 변경하면 그래프를 더 쉽게 이해할 수 있습니다(예: m1m2에서 errorsrequests로 변경하는 경우).

    작은 정보

    수식 표현식 옆의 아래쪽 화살표를 선택하여 표현식을 만들 때 사용할 수 있는 지원되는 함수 목록을 확인합니다.

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

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

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

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

지표 수학 구문 및 함수

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

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

데이터 형식 약어

일부 함수는 특정 형식의 데이터에만 유효합니다. 다음 목록에 나와 있는 약어는 각 함수에 지원되는 데이터 형식을 나타내는 함수 표에서 사용됩니다.

  • S는 2, -5 또는 50.25 같은 스칼라 수를 나타냅니다.

  • TS는 시계열(시간 경과에 따른 일련의 단일 CloudWatch 지표 값)입니다. 예를 들어, 지난 3일 동안 i-1234567890abcdef0 인스턴스에 대한 CPUUtilization 지표입니다.

  • TS[]는 시계열 배열입니다(예: 여러 지표에 대한 시계열).

METRICS() 함수

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

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

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

기본 산술 함수

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

연산 인수 예제

산술 연산자: + - * / ^

S, S

S, TS

TS, TS

S, TS[]

TS, TS[]

PERIOD(m1)/60

5 * m1

m1 - m2

SUM(100/[m1, m2])

AVG([m1,m2]/m3)

METRICS()*100

빼기 기호 -

S

TS

TS[]

-5*m1

-m1

SUM(-[m1, m2])

비교 및 논리 연산자

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

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

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

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

연산자 유형 지원되는 연산자

비교 연산자

==

!=

<=

>=

<

>

논리 연산자

AND 및 &&

OR 또는 ||

이 연산자가 사용되는 방법을 보기 위해 두 개의 시계열이 있다고 가정해 보겠습니다. metric1에는 [30, 20, 0, 0]의 값이 있고 metric2에는 [20, -, 20, -]의 값이 있습니다. 여기서 -는 해당 타임스탬프에 대한 값이 없음을 나타냅니다.

Expression 출력

(metric1 < metric2)

0, 0, 1, 0

(metric1 >= 30)

1, 0, 0, 0

(metric1 > 15 AND metric2 > 15)

1, 0, 0, 0

지표 수식에 지원되는 함수

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

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

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

함수 인수 반환 유형* 설명 예제

ABS

TS

TS[]

TS

TS[]

각 데이터 요소의 절대값을 반환합니다.

ABS(m1-m2)

MIN(ABS([m1, m2]))

ABS(METRICS())

ANOMALY_DETECTION_BAND

TS

TS, S

TS[]

지정된 지표에 대한 이상 탐지 밴드를 반환합니다. 밴드는 두 시계열로 구성되어 있으며 하나는 지표의 "정상" 기댓값에 대한 상한 치수를 나타내며 다른 하나는 하한 치수를 나타냅니다. 함수는 두 개의 인수가 필요합니다. 첫 번째는 밴드를 생성할 지표의 ID입니다. 두 번째 인수는 밴드에 사용할 표준 편차의 수입니다. 이 인수를 지정하지 않으면, 두 개의 기본값이 사용됩니다. 자세한 내용은 CloudWatch 이상 탐지 사용 단원을 참조하십시오.

ANOMALY_DETECTION_BAND(m1)

ANOMALY_DETECTION_BAND(m1,4)

AVG

TS

TS[]

S

TS

단일 시계열의 AVG는 지표의 모든 데이터 요소 평균을 나타내는 스칼라를 반환합니다. 시계열 배열의 AVG는 단일 시계열을 반환합니다. 누락된 값은 0로 처리됩니다.

SUM([m1,m2])/AVG(m2)

AVG(METRICS())

CEIL

TS

TS[]

TS

TS[]

각 지표의 상한을 반환합니다. 상한은 각 값보다 크거나 같은 가장 작은 정수입니다.

CEIL(m1)

CEIL(METRICS())

SUM(CEIL(METRICS()))

FILL

TS, TS/S

TS[], TS/S

TS

TS[]

지표 값이 부족할 때 지정된 필터 값으로 지표의 누락 값을 채웁니다.

FILL(m1,10)

FILL(METRICS(), 0)

FILL(m1, MIN(m1))

FIRST

LAST

TS[]

TS

시계열 배열에서 첫 번째 시계열 또는 마지막 시계열을 반환합니다. SORT 함수와 함께 사용할 때 유용합니다. 또한 ANOMALY_DETECTION_BAND 함수에서 높은 임계값과 낮은 임계값을 가져오는 데도 사용할 수 있습니다.

IF(FIRST(SORT(METRICS(), AVG, DESC))>100, 1, 0) 배열에서 AVG별로 정렬된 상위 지표를 확인합니다. 그런 다음 해당 데이터 요소 값이 100 이상인지 여부에 따라 각 데이터 요소에 대해 1 또는 0을 반환합니다.

LAST(ANOMALY_DETECTION_BAND(m1))은 이상 예측 밴드의 하한을 반환합니다.

FLOOR

TS

TS[]

TS

TS[]

각 지표의 하한을 반환합니다. 하한은 각 값보다 작거나 같은 가장 큰 정수입니다.

FLOOR(m1)

FLOOR(METRICS())

IF

IF 표현식

TS

IF를 비교 연산자와 함께 사용하여 시계열에서 데이터 요소를 필터링하거나 수집된 여러 시계열로 구성된 혼합 시계열을 생성합니다. 자세한 내용은 IF 표현식 사용 단원을 참조하십시오.

INSIGHT_RULE_METRIC

INSIGHT_RULE_METRIC(ruleName, metricName)

TS

INSIGHT_RULE_METRIC을 사용하여 Contributor Insights의 규칙에서 통계를 추출합니다. 자세한 내용은 규칙에 의해 생성된 지표 그래프 작성 Contributor Insights 지표 데이터에 대한 경보 설정 단원을 참조하십시오.

MAX

TS

TS[]

S

TS

단일 시계열의 MAX는 지표의 모든 데이터 요소의 최대값을 나타내는 스칼라를 반환합니다. 시계열 배열의 MAX 값은 단일 시계열을 반환합니다.

MAX(m1)/m1

MAX(METRICS())

METRIC_COUNT

TS[]

S

시계열 어레이의 지표 수를 반환합니다.

m1/METRIC_COUNT(METRICS())

METRICS()

null

string

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 은 단일 시계열을 반환합니다.

m1-MIN(m1)

MIN(METRICS())

PERIOD

TS

S

지표의 기간(초)을 반환합니다. 유효한 입력은 지표이지 다른 표현식의 결과가 아닙니다.

m1/PERIOD(m1)

속도

TS

TS[]

TS

TS[]

지표의 초당 변경 비율을 반환합니다. 이것은 마지막 데이터 요소 값과 그 이전의 데이터 요소 값의 차이를 두 값의 시간차(초)로 나눈 값으로 계산됩니다.

RATE(m1)

RATE(METRICS())

REMOVE_EMPTY

TS[]

TS[]

시계열 배열에서 데이터 포인터가 없는 시계열을 제거합니다. 결과는 각 시계열에 적어도 하나의 데이터 포인터가 포함된 시계열 배열입니다.

REMOVE_EMPTY(METRICS())

SEARCH

검색 표현식

하나 이상의 TS

지정한 검색 기준과 일치하는 시계열을 하나 이상 반환합니다. SEARCH 함수를 사용하면 표현식 하나로 그래프에 관련된 시계열을 여러 개 추가할 수 있습니다. 나중에 추가되고 검색 기준과 일치하는 새 지표를 포함하도록 그래프가 동적으로 업데이트됩니다. 자세한 내용은 그래프에서 검색 표현식 사용 단원을 참조하십시오.

SERVICE_QUOTA

사용량 지표인 TS

TS

지정된 사용량 지표에 대한 서비스 할당량을 반환합니다. 이 함수를 사용하여 현재 사용량을 할당량과 비교하는 방법을 시각화하고 할당량에 접근할 때 경고하는 경보를 설정할 수 있습니다. 자세한 내용은 서비스 할당량 통합 및 사용량 지표 단원을 참조하십시오.

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를 제외한 모든 시계열을 반환합니다.

정렬

(TS[], FUNCTION, SORT_ORDER)

(TS[], FUNCTION, SORT_ORDER, 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 는 단일 시계열을 반환합니다.

m1/STDDEV(m1)

STDDEV(METRICS())

SUM

TS

TS[]

S

TS

단일 시계열의 SUM은 지표의 모든 데이터 요소 값의 합을 나타내는 스칼라를 반환합니다. 시계열 배열의 SUM 은 단일 시계열을 반환합니다.

SUM(METRICS())/SUM(m1)

SUM([m1,m2])

SUM(METRICS("errors"))/SUM(METRICS("requests"))*100

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

IF 표현식 사용

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

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

IF(condition, trueValue, falseValue)

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

다음은 유효한 구문 목록입니다. 이러한 구문 각각에 대한 출력은 단일 시계열입니다.

  • IF(TS Comparison Operator S, S | TS, S | TS)

  • 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 | metric2, scalar3 | metric3)

해당 출력 시계열 값:

  • TS Comparison Operator S가 TRUE인 경우 값이 scalar2 또는 metric2입니다.

  • TS Comparison Operator S가 FALSE인 경우 값이 scalar3 또는 metric3입니다.

  • 해당 데이터 요소가 metric3에 없거나 scalar3 /metric3이 이 표현식에서 생략된 경우 빈 시계열입니다.

IF(metric1, metric2, metric3)

metric1의 각 데이터 요소의 경우, 해당 출력 시계열 값:

  • metric1의 해당 데이터 요소가 TRUE인 경우 값이 metric2입니다.

  • metric1의 해당 데이터 요소가 FALSE인 경우 값이 metric3입니다.

  • metric1의 해당 데이터 요소가 TRUE이고 해당 데이터 요소가 metric2에 없는 경우 값이 0입니다.

  • metric1의 해당 데이터 요소가 FALSE이고 해당 데이터 요소가 metric3에 없는 경우 또는 metric3이 표현식에서 생략된 경우 삭제됩니다.

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

지표 또는 함수 Values

(metric1)

[1, 1, 0, 0, -]

(metric2)

[30, -, 0, 0, 30]

(metric3)

[0, 0, 20, -, 20]

IF(metric1, metric2, metric3)

[30, 0, 20, -, -]

IF(metric1, scalar2, metric3)

metric1의 각 데이터 요소의 경우, 해당 출력 시계열 값:

  • metric1의 해당 데이터 요소가 TRUE인 경우 값이 scalar2입니다.

  • metric1의 해당 데이터 요소가 FALSE인 경우 값이 metric3입니다.

  • metric1의 해당 데이터 요소가 FALSE이고 해당 데이터 요소가 metric3에 없는 경우 또는 metric3이 표현력에서 생략된 경우 삭제됩니다.

지표 또는 함수 Values

(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입니다.

지표 또는 함수 Values

(metric1)

[1, 1, 0, 0, -]

(metric2)

[30, -, 0, 0, 30]

scalar3

5

IF(metric1, metric2, scalar3)

[30, 0, 5, 5, 5]

IF(scalar1, metric2, metric3)

해당 출력 시계열 값:

  • scalar1이 TRUE인 경우 값이 metric2입니다.

  • scalar1이 FALSE인 경우 값이 metric3입니다.

  • metric3이 표현식에서 생략된 경우 빈 시계열입니다.

IF 표현식에 대한 사용 사례 예제

다음 예제에서는 IF 함수의 가능한 용도를 보여줍니다.

  • 지표의 하한값만 표시하려면:

    IF(metric1<400, metric1)

  • 지표의 각 데이터 요소를 두 값 중 하나로 변경하고 원래 지표의 상대적 상한값 및 하한값을 표시하려면:

    IF(metric1<400, 10, 2)

  • 지연 시간이 임계값을 초과하는 각 타임 스탬프에 대해 1을 표시하고 다른 모든 데이터 요소에 대해 0을 표시하려면:

    IF(latency>threshold, 1, 0)

GetMetricData API 작업과 함께 지표 수식 사용

GetMetricData를 사용하여 수학 표현식을 사용하는 계산을 수행할 수 있을 뿐만 아니라 하나의 API 호출에서 대규모 지표 데이터 배치를 검색할 수도 있습니다. 자세한 내용은 GetMetricData 단원을 참조하십시오.