본문 바로가기
WIKI 기술 지식 베이스

로그 패싯 (Log Facets)

원문 보기 위키 갱신

패싯은 인덱스된 로그에서 나온 사용자 정의 태그와 속성이에요. 질적·양적 데이터 분석 모두에 쓰이기 때문에, Log Explorer에서 다음과 같은 일을 할 수 있게 해줘요.

출처: 문서

본문

개요

패싯은 다음을 위해 사용해요:

패싯은 로그 모니터, 대시보드의 로그 위젯, 노트북에서도 로그를 조작할 수 있게 해줘요.

참고: 로그 처리, livetail 검색, 로그 탐색기 검색, 로그에서 메트릭 생성, 아카이브 전달, 재수화(rehydration)를 지원하는 데 패싯이 필요한 건 아니에요. 로그를 필터가 있는 파이프라인과 인덱스로 라우팅하거나, 제외 필터로 인덱스에서 로그를 제외·샘플링하는 것도 패싯 없이 가능해요.

이 모든 맥락에서 자동 완성 기능은 기존 패싯에 의존하지만, 들어오는 로그와 일치하는 입력이라면 무엇이든 동작해요.

질적 패싯 (Qualitative facets)

차원 (Dimensions)

다음이 필요할 때 질적 패싯을 사용해요:

  • 값에 대한 상대적 인사이트를 얻기 위해. 예를 들어 NGINX 웹 접근 로그에서 Datadog GeoIP 프로세서로 보강한 5XX 오류 수에 따라 가장 영향이 큰 상위 국가를 보려면 http.network.client.geoip.country.iso_code에 패싯을 만들어요.
  • 고유 값 수를 세기 위해. 예를 들어 Kong 로그에서 user.email에 패싯을 만들어 매일 웹사이트에 접속하는 사용자 수를 알 수 있어요.
  • 특정 값으로 로그를 자주 필터링하기 위해. 예를 들어 environment 태그에 패싯을 만들어 트러블슈팅 범위를 development, staging, production 환경으로 좁혀요.

참고: 속성 값으로 필터링하기 위해 패싯을 만들 필요는 없지만, 조사 중에 자주 쓰는 속성에 패싯을 정의하면 해결 시간을 줄이는 데 도움이 돼요.

유형 (Types)

질적 패싯은 문자열(string) 또는 숫자(정수) 유형을 가질 수 있어요. 문자열 유형을 차원에 할당하는 건 언제나 동작하지만, 차원에 정수 유형을 쓰면 위의 모든 기능에 더해 범위 필터링도 가능해져요. 예를 들어 http.status_code:[200 TO 299]는 정수 유형 차원에서 사용 가능한 유효한 쿼리예요. 참고 자료는 검색 구문을 봐요.

양적 패싯 (Quantitative facets)

측정값 (Measures)

다음이 필요할 때 측정값을 사용해요:

  • 여러 로그의 값을 집계하기 위해. 예를 들어 맵 서버의 Varnish cache가 제공하는 타일 크기에 측정값을 만들어 평균 일일 처리량을 추적하거나, 요청된 타일 크기의 합계 기준 상위 리퍼러를 추적해요.
  • 로그를 범위 필터링하기 위해. 예를 들어 Ansible 작업의 실행 시간에 측정값을 만들어 10초 이상 걸린 실행이 가장 많은 서버 목록을 볼 수 있어요.
  • 그 값 기준으로 로그를 정렬하기 위해. 예를 들어 Python 마이크로서비스로 수행한 결제 금액에 측정값을 만들어, 최고 금액 로그부터 시작해 모든 로그를 검색할 수 있어요.
유형 (Types)

측정값은 (long) 정수 또는 double 값을 가지며, 동등한 기능을 제공해요.

단위 (Units)

측정값은 시간 또는 크기 단위를 지원해 쿼리 시점과 표시 시점에 수 자릿수를 더 쉽게 다룰 수 있게 해줘요.

유형 단위
BYTES bit / byte / kibibyte / mebibyte / gibibyte / tebibyte / pebibyte / exbibyte
TIME nanosecond / microsecond / millisecond / second / minute / hour / day / week

단위는 필드의 속성이 아니라 측정값 자체의 속성이에요. 예를 들어 나노초 단위의 duration 측정값을 생각해 볼게요. service:A에는 duration:1000이 1000밀리초를 의미하는 로그가, service:B에는 duration:500이 500마이크로초를 의미하는 로그가 있다고 해요.

  1. 산술 프로세서로 흘러 들어오는 모든 로그의 duration을 나노초로 조정해요. service:A 로그에는 *1000000 배율을, service:B 로그에는 *1000 배율을 사용해요.
  2. duration:>20ms(참고: 검색 구문)를 사용해 두 서비스의 로그를 한 번에 일관되게 쿼리하고, 최대 1 min의 집계 결과를 확인해요.

패싯 패널

검색창은 데이터를 필터링하고 그룹화하는 가장 포괄적인 상호작용 집합을 제공해요. 하지만 대부분의 경우 패싯 패널이 데이터를 탐색하는 더 직관적인 방법일 가능성이 높아요. 패싯을 열면 현재 쿼리 범위에서 콘텐츠 요약을 볼 수 있어요.

패싯 (질적) 에는 고유 값의 상위 목록과 각 값과 일치하는 로그 수가 함께 제공돼요:

아무 값이나 클릭해 검색 쿼리의 범위를 좁혀요. 값을 클릭하면 이 고유 값과 모든 값에 대한 검색이 토글돼요. 체크박스를 클릭하면 이 특정 값을 모든 값 목록에서 추가하거나 제거할 수 있고, 그 내용으로 검색할 수도 있어요.

측정값에는 최소값과 최대값을 나타내는 슬라이더가 제공돼요. 슬라이더를 사용하거나 숫자 값을 입력해 검색 쿼리 범위를 다른 경계로 좁힐 수 있어요.

패싯 숨기기

조직에는 로그를 쓰는 여러 팀의 다양한 사용 사례를 다루는 패싯 컬렉션이 있어요. 하지만 특정 트러블슈팅 상황에서 유용한 건 그중 일부일 가능성이 높아요. 일상적으로 쓰지 않는 패싯은 숨겨 트러블슈팅 세션에 가장 관련 있는 패싯만 남겨두세요.

  1. Logs Explorer에서 숨길 패싯을 찾아요.
  2. 패싯 옆의 톱니바퀴 아이콘을 클릭해요.
  3. Hide Facet을 선택해요.

숨긴 패싯은 필요할 때를 대비해 패싯 검색(Filter Facet 섹션 참고)에 계속 표시돼요. 거기서 숨긴 패싯을 다시 표시할 수 있어요.

숨긴 패싯은 검색창의 자동 완성과 Log Explorer 분석의 드롭다운(예: measure, group-by)에서도 숨겨져요. 하지만 숨긴 패싯은 검색 쿼리에는 여전히 유효해요(예: log-explorer 링크를 복사해 붙여넣는 경우).

숨긴 패싯은 log explorer 외에는 아무 영향이 없어요(예: live tail, 모니터, 대시보드의 위젯 정의).

숨긴 패싯과 팀원

패싯 숨기기는 자신의 트러블슈팅 컨텍스트에만 해당하며, Saved View를 업데이트하지 않는 한 팀원의 보기에 영향을 주지 않아요. 숨긴 패싯은 saved view에 저장되는 컨텍스트의 일부예요.

패싯 그룹화하기

패싯은 패싯 목록 탐색을 쉽게 하도록 의미 있는 주제로 그룹화돼요. 패싯에 그룹을 할당하거나 재할당하는 건 패싯 목록의 표시에만 영향을 주고 검색·분석 기능에는 영향을 주지 않아요.

패싯을 그룹화하려면:

  1. 패싯의 톱니바퀴를 클릭해요.
  2. Edit facet를 선택해요.
  3. Advanced options 섹션을 클릭해 펼쳐요.
  4. Group 필드에 패싯이 들어갈 그룹 이름을 입력해요.
  5. Update를 클릭해요.

패싯 필터링하기

패싯의 검색 상자를 사용해 전체 패싯 목록 범위를 좁히고, 상호작용해야 할 패싯으로 더 빠르게 이동해요. 패싯 검색은 패싯 표시 이름과 패싯 필드 이름을 모두 사용해 결과 범위를 좁혀요.

별칭 패싯 (Aliased facets)

일부 패싯은 별칭이 지정되어 있을 수 있어요(별칭 패싯 섹션 참고). 별칭이 지정된 패싯은 데이터 쪼개기(slicing and dicing)에는 여전히 유효하지만, 조직에서는 더 이상 쓰지 않는 것으로 간주해요:

트러블슈팅할 때 다른 팀의 콘텐츠(자체 팀 콘텐츠와 함께)는 별칭 패싯보다 표준 패싯에서 찾을 가능성이 더 높아요. 이렇게 하면 다양한 출처의 콘텐츠 상관 관계를 더 쉽게 맺을 수 있어요.

패싯 목록에서 별칭 패싯을 보게 되면, 별칭으로 전환(switch to alias) 메뉴 항목을 클릭해 표준 패싯을 사용하는 것도 고려해 보세요. 이 작업은 별칭 패싯을 숨기고 표준 패싯을 다시 표시해요. 이로 인해 saved view를 업데이트하게 된다면, 별칭이 이 saved view를 쓰는 모든 사람에게 적용되도록 saved view를 저장하는 것을 고려해 보세요.

조직이 이 패싯의 별칭을 설정하기 전의 오래된 콘텐츠로 트러블슈팅한다면 비표준 별칭 버전의 패싯을 유지하고 싶을 수 있어요.

패싯 관리하기

기본 제공 패싯

Host와 Service 같은 가장 흔한 패싯은 기본 제공되므로, 로그가 로그 인덱스로 흘러 들어오자마자 바로 트러블슈팅을 시작할 수 있어요.

예약 속성과 대부분의 표준 속성에 대한 패싯은 기본으로 제공돼요.

인덱스 패싯

인덱스 패싯은 조직에 여러 인덱스가 있거나 활성 히스토리컬 뷰가 있을 때만 나타나는 특수 패싯이에요. 이 패싯을 쿼리 범위를 인덱스 일부로 좁히고 싶을 때 사용해요.

패싯 만들기

좋은 관행으로, 새 패싯을 만들기보다 기존 패싯을 사용하는 것을 항상 고려해요(별칭 패싯 섹션 참고). 비슷한 성격의 정보에 고유한 패싯을 사용하면 팀 간 협업을 촉진해요.

JSON 객체 배열에 패싯을 만들려면 먼저 grok 파서로 속성을 추출한 다음 그 속성에 패싯을 만들어요.

참고: 패싯을 만들면 그 콘텐츠가 모든 새 로그에 대해 채워져요. Log Management 솔루션을 최적으로 사용하려면 Datadog는 최대 1000개의 패싯을 권장해요.

로그 사이드 패널

패싯을 만드는 가장 쉬운 방법은 로그 사이드 패널에서 추가하는 거예요. 필드 이름이나 기본 데이터 유형 같은 대부분의 패싯 세부 정보가 미리 채워져 있어서 확인만 하면 되거든요. Log Explorer에서 패싯을 만들 필드를 가진 관심 로그로 이동해요. 이 로그의 사이드 패널을 열고 해당 필드(태그 또는 속성)를 클릭해 거기서 패싯을 만들어요:

  • 필드에 문자열 값이 있으면 패싯 생성만 가능해요.
  • 필드에 숫자 값이 있으면 패싯과 측정값 생성이 모두 가능해요.

참고: 모범 사례로 패싯을 1000개 이하로 사용하는 것이 권장돼요.

패싯 목록

일치하는 로그를 찾지 못하는 경우에는 패싯 패널에서 add facet 버튼을 사용해 새 패싯을 직접 만들어요.

이 패싯의 기본 필드(키) 이름을 정의해요:

  • 태그에는 태그 키 이름을 사용해요.
  • 속성에는 @ 접두사를 붙인 속성 경로를 사용해요.

현재 보기의 로그 콘텐츠를 기반으로 한 자동 완성이 올바른 필드 이름을 정의하는 데 도움을 줘요. 하지만 사실상 어떤 값이든 사용할 수 있어요. 특히 인덱스에 아직 일치하는 로그가 흘러 들어오지 않은 경우에는요.

패싯 별칭 (Alias facets)

비슷한 콘텐츠를 고유한 패싯 아래로 모으면 팀 간 분석이 가능해지고 팀 간 트러블슈팅이 쉬워져요. 참고 자료는 명명 규칙을 봐요.

일관되지 않은 명명 규칙에 의존하는 팀을 부드럽게 정렬하려면 별칭을 옵션으로 사용해요. 별칭을 쓰면 모두가 조직에서 표준 패싯으로 부상한 패싯을 사용하게 만들 수 있어요.

패싯을 패싯으로 별칭 (Aliasing facet to facet)

조직의 여러 팀이 비슷한 콘텐츠에 이미 여러 패싯을 만든 경우 이 옵션이 가장 좋아요.

별칭 패싯을 표준 패싯으로 별칭할 때:

  • 사용자는 별칭 패싯과 표준 패싯을 모두 트러블슈팅에 사용할 수 있어요. 다양하고 이질적인 출처에서 흘러 들어오는 콘텐츠의 상관 관계를 쉽게 해주는 표준 패싯을 선호할 수 있어요.
  • 사용자는 별칭 패싯 대신 표준 패싯을 사용하도록 유도돼요.

패싯을 표준 패싯으로 별칭하려면 패싯 메뉴에서 Alias to… 액션 항목을 선택해요. 조직에 존재하는 모든 표준 패싯 중에서 대상 패싯을 골라요.

속성을 패싯으로 별칭 (Aliasing attribute to facet)

새 소스에서 흘러 들어오는 로그를 온보딩할 때 이 옵션이 가장 좋아요. 그 로그의 어떤 필드에 패싯을 만든 다음 바로 그 패싯을 표준 패싯으로 별칭해 폐기하는 대신, 필드를 기존 패싯에 직접 별칭해요:

패싯 삭제하기

⚠️ 인덱스, 모니터, 대시보드, 제한 쿼리에 사용 중이거나 다른 팀이 쓰는 패싯을 삭제하면 구성이 깨질 수 있어요.

패싯을 삭제하려면 다음 단계를 따라요:

  • 패싯 패널 상단의 Showing xx of xx를 클릭해요.
  • 패싯을 검색해요.
  • 패싯의 연필 아이콘을 클릭해요.
  • Delete를 클릭해요.

더 알아보기 (Learn more)