태그 카디널리티 제어 프로세서

이 제품은 선택한 Datadog 사이트에서 지원되지 않습니다. ().
이용 가능:

메트릭

개요

태그 카디널리티 제어 프로세서는 각 메트릭의 태그 값 수를 제한합니다. 예를 들어 userID와 같이 태그 키가 제한되지 않은 메트릭은 메트릭의 카디널리티를 급증시켜 수집 및 인덱싱 비용에 영향을 줄 수 있습니다. 이러한 예기치 않은 급증을 방지하려면 프로세서를 사용하여 필터 쿼리와 일치하는 메트릭에 대한 카디널리티 제한을 설정하고, 제한에 도달한 후 수신된 메트릭을 삭제하거나 해당 메트릭의 태그를 삭제하세요.

선택적으로 메트릭별 재정의를 구성하여 특정 메트릭에 대한 제한을 설정하거나 해당 메트릭을 모든 카디널리티 제한에서 제외할 수도 있습니다. 각 메트릭별 재정의에 대해 메트릭 내 개별 태그에 대한 사용자 지정 제한을 설정하거나 메트릭별 카디널리티 제한에서 제외할 수도 있습니다.

설정

태그 카디널리티 제어 프로세서를 설정하려면 다음을 수행하세요.

  1. 필터 쿼리를 정의합니다. 자세한 내용은 메트릭 검색 구문을 참조하세요.
    • 필터와 일치하는 메트릭만 처리됩니다.
    • 모든 메트릭은 필터 쿼리와 일치하는지 여부에 관계없이 파이프라인의 다음 단계로 전송됩니다.
  2. 드롭다운 메뉴에서 추적 모드를 선택합니다. 자세한 내용은 정확 모드 및 확률 모드 섹션을 참조하세요.
  3. 태그당 고유 값의 최대 개수에 대한 카디널리티 제한을 입력합니다. 이 제한은 필터 쿼리와 일치하는 모든 메트릭에 적용됩니다.
  4. 제한 도달 시 드롭다운 메뉴에서 카디널리티 제한을 초과한 메트릭에 대해 태그 삭제 또는 이벤트 삭제 중 하나를 선택합니다.
카디널리티 제한이 200으로 설정되고 제한 도달 시 태그를 삭제하도록 설정된 태그 카디널리티 제어 프로세서입니다.

선택적 메트릭별 재정의 설정

특정 메트릭에 대한 카디널리티 제한을 설정하려면 다음을 수행하세요.

  1. 재정의 관리를 클릭한 다음, 사이드 패널에서 메트릭 재정의 추가를 클릭합니다.
  2. 메트릭의 이름을 입력합니다.
  3. 드롭다운 메뉴에서 재정의 모드를 선택합니다.
    • 사용자 지정 제한: 이 메트릭에 대한 카디널리티 제한을 설정합니다.
    • 제한에서 제외: 이 메트릭을 카디널리티 제한 계산에서 제외합니다. 이는 중요한 메트릭을 추적 중이며 카디널리티 제한으로 인해 샘플이나 태그가 삭제되는 것을 원하지 않을 때 유용합니다.
  4. 제한 도달 시 드롭다운 메뉴에서 카디널리티 제한을 초과한 메트릭에 대해 태그 삭제 또는 이벤트 삭제 중 하나를 선택합니다.

태그별 재정의

이 메트릭에 대한 특정 태그 재정의를 추가하려면 다음을 수행하세요.

  1. 태그 재정의 추가를 클릭합니다.
  2. 제한을 설정할 태그 키를 입력합니다.
  3. 드롭다운 메뉴에서 재정의 모드를 선택합니다.
    • 사용자 지정 제한: 태그당 고유 값 수에 제한을 설정합니다. 예를 들어, 태그 제한이 5로 설정된 경우, 처음 수신된 5개의 태그 값이 사용됩니다.
      • 참고: 태그 값은 워커가 다시 시작되거나 파이프라인 구성이 업데이트될 때까지 유지됩니다. 파이프라인 구성이 업데이트되면 태그 카디널리티 제어 프로세서를 수정하지 않더라도 태그 값이 재설정됩니다.
    • 제한에서 제외: 지정된 태그가 있는 메트릭을 카디널리티 제한 계산에서 제외합니다.
  4. 태그 키 값의 최대 개수에 대한 제한을 입력합니다.
  5. 재정의 추가를 클릭합니다.
사용자 지정 제한이 100으로 설정되고, 태그당 재정의에서 호스트 태그는 제한에서 제외되며 리전 태그는 5개로 제한되는 메트릭별 재정의 패널입니다.

프로세서 작동 방식

정확 모드 및 확률 모드

태그 카디널리티 제어 프로세서는 태그 카디널리티를 추적하기 위해 다음 두 가지 모드를 지원합니다.

  • 정확: 메모리 사용량을 최적화하기 위해 태그 값을 8바이트 해시로 저장하지만, 서로 다른 두 값이 동일한 지문으로 해싱될 가능성이 매우 미세하게 존재합니다.
  • 확률: 블룸 필터를 사용하여 확인된 값을 추적하며 메모리 사용량을 크게 최적화할 수 있지만, 간혹 오탐이 발생할 수 있습니다. 오탐은 아직 확인되지 않은 값을 확인된 것으로 잘못 판단할 때 발생하며, 이로 인해 프로세서가 지정된 카디널리티 제한을 약간 초과하게 됩니다.

정확 모드의 메모리 사용량

다음은 정확 모드가 사용하는 메모리 양을 계산하는 공식입니다.

$$A = \text"총 메트릭 수"\ \×\ \text"메트릭당 평균 태그 키 수"$$

$$B = \text"각 태그 키의 평균 길이"\ + (\text"value_limit"\ \×\ \text"태그 값의 평균 길이")$$

$$\text"메모리 사용량" = A\ \×\ B$$

모든 태그 값은 8바이트 해시 지문으로 저장되므로 average length of tag values는 8입니다.

확률 모드의 메모리 사용량

확률 모드는 블룸 필터를 사용하여 모든 (메트릭, 태그) 쌍에 대해 확인된 값을 추적합니다. 예를 들어, 메트릭 이름이 request.latency이고 태그 키가 host 및 region인 경우 추적되는 쌍은 다음과 같습니다.

  • (request.latency, host)
  • (request.latency, region)

다음은 확률 모드의 메모리 사용량을 추정하는 공식입니다.

$$A = \text"총 메트릭 수"\ \×\ \text"메트릭당 평균 태그 키 수"$$

$$B = \text"태그 필드 이름의 평균 길이"\ +\ \text"cache_size_per_key"$$

$$\text"메모리 사용량" = A\ \×\ B$$

표준 공식을 사용하는 블룸 필터 계산기로 cache_size_per_key를 계산할 수 있습니다. 여기서 n은 카디널리티 제한이며 오탐률(p)은 워커에서 0.1%로 고정됩니다.

정확 모드와 확률 모드의 벤치마크 비교

다음 표는 정확 모드와 확률 모드에 대한 벤치마크를 보여줍니다. 각 태그의 고유 값 수가 증가함에 따라 확률 모드의 메모리 효율성이 더 높아집니다. 이 벤치마크에 사용된 메트릭 이름과 태그 이름은 무작위로 생성된 20바이트 문자열입니다.

벤치마킹에 사용된 머신 유형은 AWS M6gd.4xlarge 인스턴스입니다.

추적된 메트릭 10,000개에 대한 벤치마크

다음 표는 10,000개의 메트릭을 추적할 때 확률 모드와 정확 모드에서 워커의 RSS 메모리 사용량을 보여줍니다.

메트릭당 태그 10개

태그당 고유 값확률 모드(GB)정확 모드(GB)
5000.201.04
2500.130.56
1000.100.21

추적된 메트릭 50,000개에 대한 벤치마크

다음 표는 50,000개의 메트릭을 추적할 때 확률 모드와 정확 모드에서 워커의 RSS 메모리 사용량을 보여줍니다.

메트릭당 태그 10개

태그당 고유 값확률 모드(GB)정확 모드(GB)
1000.350.92
2500.542.67
5000.835.06

메트릭당 태그 50개

태그당 고유 값확률 모드(GB)정확 모드(GB)
1001.273.98
2502.0812.91
5003.3324.87

추적된 메트릭 100,000개에 대한 벤치마크

다음 표는 100,000개의 메트릭을 추적할 때 확률 모드와 정확 모드에서 워커의 RSS 메모리 사용량을 보여줍니다.

메트릭당 태그 10개

태그당 고유 값확률 모드(GB)정확 모드(GB)
1000.661.79
2501.025.29
5001.6110.11

메트릭당 태그 50개

태그당 고유 값확률 모드(GB)정확 모드(GB)
1002.497.86
2504.0825.74
5006.6147.15 (estimate)