이 페이지에서는 가용성 및 지연 시간 SLI의 OpenCensus 측정항목을 만드는 기본 사항을 설명합니다. 또한 OpenCensus 측정항목을 사용하여 SLO를 정의하는 방법의 구현 예시를 제공합니다.
OpenCensus 기본 사항
OpenCensus는 OpenCensus GitHub 페이지에서 제공되는 라이브러리의 단일 오픈소스 배포로, trace와 측정항목을 자동으로 수집하여 백엔드로 전송합니다. OpenCensus를 사용하면 서비스를 계측하여 Cloud Monitoring으로 수집할 수 있는 커스텀 측정항목을 내보낼 수 있습니다. 그런 다음 이 측정항목을 SLI로 사용할 수 있습니다.
OpenCensus를 사용하여 특별히 SLI로 의도하지 않은 Monitoring 측정항목을 만드는 예시는 OpenCensus의 커스텀 측정항목을 참조하세요.
측정항목
OpenCensus를 사용하여 서비스에서 측정항목 데이터를 수집하려면 다음 OpenCensus 구성을 사용해야 합니다.
-
Measure
: 기록할 측정항목 유형을 나타내며 측정항목 이름으로 지정됩니다.Measure
는 Int64 또는 Float64 값을 기록할 수 있습니다. -
Measurement
: 특정 이벤트에 대해Measure
에서 수집 및 기록한 특정 데이터 포인트를 기록합니다. 예를 들어Measurement
는 특정 응답의 지연 시간을 기록할 수 있습니다. -
View
:Measure
에 적용되는 집계를 지정합니다. OpenCensus는 다음 집계 유형을 지원합니다.- 개수: 측정 지점 수입니다.
- 분포: 측정 지점의 히스토그램 분포입니다.
- 합계: 측정 값의 합계입니다.
- LastValue: 측정을 통해 기록된 마지막 값입니다.
자세한 내용은 OpenCensus 통계/측정항목을 참조하세요. OpenCensus는 측정항목을 주로 통계라고 지칭합니다.
도구 작동
OpenCensus 라이브러리는 여러 언어로 제공됩니다. 측정항목을 내보내기 위한 서비스 계측에 대한 언어별 정보는 OpenCensus 언어 지원을 참조하세요. 또한 OpenCensus를 사용한 커스텀 측정항목에서는 Monitoring에서 일반적으로 사용되는 언어의 예시를 제공합니다.
기본 사례에서는 다음을 수행해야 합니다.
- 측정항목을 기록하여 내보내도록 서비스를 계측합니다.
- 측정항목을 수신할 내보내기를 정의합니다.
측정항목마다 값 유형(Int64 또는 Float64)을 지정하려면 Measure
를 정의해야 합니다. 또한 View
를 정의하고 등록하여 집계 유형(개수, 분포, 합계 또는 마지막 값)을 지정해야 합니다. 분산 집계 유형을 사용하려면 히스토그램 버킷 경계를 명시적으로 지정해야 합니다. View
에 측정항목 이름을 지정할 수도 있습니다.
내보내기 도구
마지막으로 내보내기를 사용하여 측정항목을 수집하고 Cloud Monitoring 또는 다른 백엔드에 기록해야 합니다. Monitoring에 사용할 수 있는 언어별 내보내기는 OpenCensus 내보내기를 참조하세요.
고유한 내보내기를 작성할 수도 있습니다. 자세한 내용은 커스텀 내보내기 작성을 참조하세요.
SLI 측정항목 만들기
애플리케이션은 Cloud Monitoring에서 SLI로 사용할 수 있는 OpenCensus 측정항목을 만들어야 합니다.
- 요청 개수와 오류 개수에 대한 가용성 SLI의 경우 개수 집계와 함께
Measure
를 사용합니다. - 지연 시간 SLI의 경우 분포 집계와 함께
Measure
를 사용합니다.
가용성 SLI 측정항목
Cloud Monitoring API에서 TimeSeriesRatio
구조를 사용하여 총 요청에 대한 '양호' 또는 '불량' 요청의 비율을 설정해 요청 기반 가용성 SLI를 표현합니다. 이 비율은 RequestBasedSli
구조의 goodTotalRatio
필드에서 사용됩니다.
애플리케이션에서 이 비율을 구성하는 데 사용할 수 있는 OpenCensus 측정항목을 만들어야 합니다. 애플리케이션에서 다음 중 최소 두 개 이상을 만들어야 합니다.
총 이벤트 수를 계산하는 측정항목. 비율의
totalServiceFilter
에서 이 측정항목을 사용합니다.개수 집계를 사용하는 Int64 유형의 OpenCensus 측정항목을 만들 수 있습니다. 여기서 모든 수신된 요청에
1
값을 기록합니다.'불량' 이벤트를 계산하는 측정항목. 비율의
badServiceFilter
에서 이 측정항목을 사용합니다.개수 집계를 사용하는 Int64 유형의 OpenCensus 측정항목을 만들 수 있습니다. 여기서 모든 오류나 실패한 요청에
1
값을 기록합니다.'양호' 이벤트를 계산하는 측정항목. 비율의
goodServiceFilter
에서 이 측정항목을 사용합니다.개수 집계를 사용하는 Int64 유형의 OpenCensus 측정항목을 만들 수 있습니다. 여기서 모든 성공한 응답에
1
값을 기록합니다.
지연 시간 SLI 측정항목
Cloud Monitoring API에서 DistributionCut
구조를 사용하여 요청 기반 지연 시간 SLI를 표현합니다. 이 구조는 RequestBasedSli
구조의 distributionCut
필드에서 사용됩니다.
분포 집계 유형을 사용하여 View
가 포함된 Int64 또는 Float64 Measure
를 만들 수 있습니다. 버킷 경계를 명시적으로 정의해야 합니다. 원하는 기준점 내에 있는 요청 비율을 정확하게 측정할 수 있게 해주는 방식으로 버킷을 정의하는 것이 중요합니다. 이 주제에 대한 자세한 내용은 사이트 안정성 엔지니어링 통합문서의 SLO 구현을 참조하세요.
구현 예시
이 섹션에서는 Node.js에서 OpenCensus를 사용하여 기본 가용성 및 지연 시간 SLI의 측정항목을 구현하는 예시를 보여줍니다.
도구 작동
OpenCensus를 사용하여 측정항목을 내보내도록 서비스를 계측하려면 다음 단계를 따르세요.
- 필요한 라이브러리를 포함합니다.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
- 내보내기를 정의하고 등록합니다.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
- 측정항목마다
Measure
를 정의합니다.Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
- 적절한 집계 유형이 있는 각
Measure
에 그리고 응답 지연 시간, 버킷 경계에View
를 정의하고 등록합니다.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
- 요청 개수 및 오류 개수 측정항목의 값을 기록합니다.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
- 지연 시간 값을 기록합니다.
Go
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
Monitoring에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
수집된 측정항목
측정항목을 Cloud Monitoring으로 내보내면 측정항목이 OpenCensus에서 시작했음을 나타내는 프리픽스가 포함된 측정항목 유형으로 표시됩니다. 예를 들어 Node.js 구현에서 각 OpenCensus View
의 이름은 다음과 같이 매핑됩니다.
request_count_sli
는custom.googleapis.com/opencensus/request_count_sli
가 됩니다.error_count_sli
는custom.googleapis.com/opencensus/error_count_sli
가 됩니다.response_latency_sli
는custom.googleapis.com/opencensus/response_latency_sli
가 됩니다.
서비스가 실행된 후 측정항목 탐색기에서 측정항목을 검색하여 측정항목이 Monitoring으로 수집되고 있는지 확인할 수 있습니다.
가용성 SLI
Cloud Monitoring에서 TimeSeriesRatio
구조를 사용하여 요청 기반 가용성 SLI를 표현합니다. 다음 예시에서는 수집된 OpenCensus 측정항목을 사용하고 28일 동안 request_count_sli
에 대한 error_count_sli
비율을 계산하여 서비스가 98% 가용성이라고 예상하는 SLO를 보여줍니다.
{
"serviceLevelIndicator": {
"requestBased": {
"goodTotalRatio": {
"totalServiceFilter":
"metric.type=\"custom.googleapis.com/opencensus/request_count_sli\",
"badServiceFilter":
"metric.type=\"custom.googleapis.com/opencensus/error_count_sli\"
}
}
},
"goal": 0.98,
"rollingPeriod": "2419200s",
"displayName": "98% Availability, rolling 28 days"
}
지연 시간 SLI
Cloud Monitoring에서 DistributionCut
구조를 사용하여 요청 기반 지연 시간 SLI를 표현합니다. 다음 예시에서는 수집된 OpenCensus 지연 시간 측정항목을 사용하고 요청의 98%가 1일 동안 1000ms 이내로 완료된다고 예상하는 SLO를 보여줍니다.
{
"serviceLevelIndicator": {
"requestBased": {
"distributionCut": {
"distributionFilter":
"metric.type=\"custom.googleapis.com/opencensus/response_latency_sli\",
"range": {
"min": 0,
"max": 1000
}
}
}
},
"goal": 0.98,
"rollingPeriod": "86400s",
"displayName": "98% requests under 1000 ms"
}