카디널리티가 높은 작업 관리 - Amazon CloudWatch

카디널리티가 높은 작업 관리

Application Signals에는 작업의 카디널리티를 관리하고 지표 내보내기를 관리하여 비용을 최적화하는 데 사용할 수 있는 CloudWatch 에이전트의 설정이 포함되어 있습니다. 기본적으로 지표 제한 기능은 시간 경과에 따른 서비스의 개별 작업 수가 기본 임곗값인 500을 초과할 때 활성 상태가 됩니다. 구성 설정을 조정하여 동작을 미세 조정할 수 있습니다.

지표 제한이 활성화되었는지 확인

다음 방법을 사용하여 기본 지표 제한이 발생하는지 확인할 수 있습니다. 제한이 있는 경우 다음 섹션의 단계에 따라 카디널리티 제어 최적화를 고려해야 합니다.

  • CloudWatch 콘솔에서 Application Signals, Services를 선택합니다. 이름이 AllOtherOperationsOperation 또는 AllOtherRemoteOperationsRemoteOperation이 표시되는 경우 지표 제한이 발생하고 있습니다.

  • Application Signals에서 수집한 지표의 Operation 차원에 AllOtherOperations 값이 있는 경우 지표 제한이 발생하는 것입니다.

  • Application Signals에서 수집한 지표의 RemoteOperation 차원에 AllOtherRemoteOperations 값이 있는 경우 지표 제한이 발생하는 것입니다.

카디널리티 제어 최적화

카디널리티 제어를 최적화하기 위해 다음을 수행할 수 있습니다.

  • 사용자 지정 규칙을 만들어 작업을 집계합니다.

  • 지표 제한 정책을 구성합니다.

사용자 지정 규칙을 만들어 작업을 집계합니다.

카디널리티가 높은 작업은 컨텍스트에서 추출된 부적절한 고유 값으로 인해 발생할 수 있습니다. 예를 들어 경로에 사용자 ID 또는 세션 ID가 포함된 HTTP/S 요청을 보내면 수백 개의 서로 다른 작업이 발생할 수 있습니다. 이러한 문제를 해결하려면 이러한 작업을 재작성하는 사용자 지정 규칙을 사용하여 CloudWatch 에이전트를 구성하는 것이 좋습니다.

PUT /api/customer/owners/123, PUT /api/customer/owners/456 등과 같은 개별 RemoteOperation 호출과 유사한 요청을 통한 다양한 지표 생성이 급증하는 경우 이러한 작업을 단일 RemoteOperation로 통합하는 것이 좋습니다. 한 가지 접근 방식은 특히 PUT /api/customer/owners/{ownerId}와 같이 PUT /api/customer/owners/로 시작하는 모든 RemoteOperation 호출을 통일된 형식으로 표준화하는 것입니다. 다음 예는 이를 보여 줍니다. 기타 사용자 지정 규칙에 대한 자세한 내용은 CloudWatch Application Signals 활성화 섹션을 참조하세요.

{ "logs":{ "metrics_collected":{ "application_signals":{ "rules":[ { "selectors":[ { "dimension":"RemoteOperation", "match":"PUT /api/customer/owners/*" } ], "replacements":[ { "target_dimension":"RemoteOperation", "value":"PUT /api/customer/owners/{ownerId}" } ], "action":"replace" } ] } } } }

경우에 따라 카디널리티가 높은 지표가 AllOtherRemoteOperations에 집계되고, 어떤 특정 지표가 포함되는지 명확하지 않을 수 있습니다. CloudWatch 에이전트는 중단된 작업을 로깅할 수 있습니다. 중단된 작업을 식별하려면 다음 예시의 구성을 사용하여 문제가 다시 나타날 때까지 로깅을 활성화합니다. 그런 다음 CloudWatch 에이전트 로그(컨테이너 stdout 또는 EC2 로그 파일로 액세스 가능)를 검사하고 drop metric data 키워드를 검색합니다.

{ "agent": { "config": { "agent": { "debug": true }, "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { "limiter": { "log_dropped_metrics": true } } } } } } }

지표 제한 정책 생성

기본 지표 제한 구성으로 서비스의 카디널리티를 해결할 수 없는 경우 지표 제한기 구성을 사용자 지정할 수 있습니다. 이를 위해 CloudWatch 에이전트 구성 파일의 logs/metrics_collected/application_signals 섹션에 limiter 섹션을 추가합니다.

다음 예시에서는 지표 제한 임곗값을 500개의 개별 지표에서 100개로 줄입니다.

{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "drop_threshold": 100 } } } } }