X-Ray API에 샘플링 규칙 사용 - AWS X-Ray

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

X-Ray API에 샘플링 규칙 사용

AWS X-Ray SDK는 X-Ray API를 사용하여 샘플링 규칙을 가져오고, 샘플링 결과를 보고하며, 할당량을 가져옵니다. 이러한 API를 사용하여 샘플링 규칙의 작동 방식을 더 잘 이해하거나, X-Ray SDK가 지원하지 않는 언어로 샘플링을 구현할 수 있습니다.

먼저 GetSamplingRules로 모든 샘플링 규칙을 가져옵니다.

$ aws xray get-sampling-rules { "SamplingRuleRecords": [ { "SamplingRule": { "RuleName": "Default", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/Default", "ResourceARN": "*", "Priority": 10000, "FixedRate": 0.01, "ReservoirSize": 0, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "Version": 1, "Attributes": {} }, "CreatedAt": 0.0, "ModifiedAt": 1530558121.0 }, { "SamplingRule": { "RuleName": "base-scorekeep", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/base-scorekeep", "ResourceARN": "*", "Priority": 9000, "FixedRate": 0.1, "ReservoirSize": 2, "ServiceName": "Scorekeep", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "Version": 1, "Attributes": {} }, "CreatedAt": 1530573954.0, "ModifiedAt": 1530920505.0 }, { "SamplingRule": { "RuleName": "polling-scorekeep", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/polling-scorekeep", "ResourceARN": "*", "Priority": 5000, "FixedRate": 0.003, "ReservoirSize": 0, "ServiceName": "Scorekeep", "ServiceType": "*", "Host": "*", "HTTPMethod": "GET", "URLPath": "/api/state/*", "Version": 1, "Attributes": {} }, "CreatedAt": 1530918163.0, "ModifiedAt": 1530918163.0 } ] }

출력에는 기본 규칙과 사용자 지정 규칙이 포함됩니다. 아직 샘플링 규칙을 만들지 않은 경우 샘플링 규칙을 참조하십시오.

우선 순위의 오름차순에 따라 수신 요청과 비교하여 규칙을 평가합니다. 규칙이 일치하면 고정 비율과 리저버 크기를 사용하여 샘플링 결정을 내립니다. 샘플링된 요청을 기록하고 샘플링되지 않은 요청을 무시합니다(추적 목적). 샘플링 결정을 내릴 때 규칙 평가를 중지합니다.

규칙 리저버 크기는 고정 비율을 적용하기 전에 초당 기록할 목표 트레이스 수입니다. 리저버는 모든 서비스에 누적 적용되므로 직접 사용할 수 없습니다. 하지만 0이 아닌 경우 X-Ray가 할당량을 할당할 때까지 리저버에서 초당 트레이스 하나를 빌릴 수 있습니다. 할당량을 수신하기 전에 매초 첫 번째 요청을 기록하고, 추가 요청에 고정 비율을 적용합니다. 고정 비율은 0~1.00(100%)의 십진수입니다.

다음 예제에서는 지난 10초간 내린 샘플링 결정에 대한 세부 정보가 포함된 GetSamplingTargets에 대한 호출을 보여 줍니다.

$ aws xray get-sampling-targets --sampling-statistics-documents '[ { "RuleName": "base-scorekeep", "ClientID": "ABCDEF1234567890ABCDEF10", "Timestamp": "2018-07-07T00:20:06", "RequestCount": 110, "SampledCount": 20, "BorrowCount": 10 }, { "RuleName": "polling-scorekeep", "ClientID": "ABCDEF1234567890ABCDEF10", "Timestamp": "2018-07-07T00:20:06", "RequestCount": 10500, "SampledCount": 31, "BorrowCount": 0 } ]' { "SamplingTargetDocuments": [ { "RuleName": "base-scorekeep", "FixedRate": 0.1, "ReservoirQuota": 2, "ReservoirQuotaTTL": 1530923107.0, "Interval": 10 }, { "RuleName": "polling-scorekeep", "FixedRate": 0.003, "ReservoirQuota": 0, "ReservoirQuotaTTL": 1530923107.0, "Interval": 10 } ], "LastRuleModification": 1530920505.0, "UnprocessedStatistics": [] }

X-Ray의 응답에는 리저버에서 빌리는 대신에 사용할 할당량이 포함됩니다. 이 예제에서 서비스는 10초간 리저버에서 트레이스 10개를 빌렸고, 다른 100개 요청에 고정 비율 10%를 적용했으며, 그 결과 샘플링된 요청은 총 20개입니다. 할당량은 5분 (유효 시간으로 표시) 동안 또는 새 할당량이 할당될 때까지 유효합니다. X-Ray는 기본값보다 긴 보고 간격을 할당할 수 있지만 여기서는 그렇지 않습니다.

참고

X-Ray의 응답에는 처음 직접 호출할 때의 할당량이 포함되지 않을 수 있습니다. 할당량이 할당될 때까지 리저버에서 계속 빌리십시오.

응답의 다른 두 필드는 입력과 관련된 문제를 나타낼 수 있습니다. GetSamplingRules를 마지막으로 호출한 시간과 비교하여 LastRuleModification을 확인합니다. 더 최신인 경우 규칙의 새 사본을 가져옵니다. UnprocessedStatistics에는 규칙이 삭제되었거나, 입력의 통계 문서가 너무 오래되었음을 나타내는 오류 또는 권한 오류가 포함될 수 있습니다.