Sentry 모니터링: 검색 쿼리 심화 가이드

검색 쿼리 구문

Sentry의 검색 쿼리는 key:value 패턴으로 구성되며, 마지막에 선택적인 원본 검색이 옵니다. 각 key:value는 하나의 토큰이며, 선택적인 원본 검색 자체도 하나의 토큰입니다. key:value 쌍 토큰은 이슈(issue)나 이벤트(event) 속성으로 간주됩니다. 선택적인 원본 검색은 단일 토큰으로 취급되며 이벤트 제목/메시지(title/message)를 검색합니다.

예시:

is:resolved user.username:"Jane Doe" server:web-8 example error

위 예시에서는 세 개의 키(is:, user.username:, server:)가 있지만, 네 개의 토큰이 있습니다:

  • is:resolved
  • user.username:"Jane Doe"
  • server:web-8
  • example error

토큰 is:resolveduser.username:"Jane Doe"는 예약된 키워드를 사용하므로 표준 검색 토큰입니다. 적절한 키워드 사용법에 대해서는 이슈 속성 및 이벤트 속성을 참조하십시오. 토큰 server:web-8는 Sentry SDK가 전송한 사용자 정의 태그를 가리킵니다.

토큰 example error는 선택적인 원본 검색을 사용하며, 이슈 검색 쿼리의 일부로 전달됩니다(SQL과 유사한 CONTAINS 일치 사용). 선택적인 원본 검색을 사용할 때 전체 문자열을 제공하면 쿼리가 해당 문자열을 사용합니다.

OR 및 AND 사용

ORAND 검색 조건은 Discover, Performance 및 Metric Alerts에만 적용됩니다.

토큰 간에는 ORAND를 사용하고 괄호 ()로 조건을 그룹화합니다. AND는 비집계(non-aggregate) 및 집계(aggregate) 필드 모두에 사용할 수 있습니다. 그러나 OR는 그렇지 않습니다.

  • 비집계는 특정 태그나 속성에 기반하여 데이터를 필터링합니다. 예를 들어, user.username:jane은 비집계 필드입니다.
  • 숫자 척위(numerical scales)에서 집계 필터링 데이터. 예를 들어, count()는 집계 함수이며, count():>100은 집계 필터입니다.

OR 조건 사용 예시:

# 유효한 OR 쿼리
browser:Chrome OR browser:Opera

# 유효하지 않은 OR 쿼리
user.username:janedoe OR count():>100

또한, 쿼리는 OR보다 AND를 우선시합니다. 예를 들어, "x AND y OR z"는 "(x AND y) OR z"와 같습니다. 괄호를 사용하여 그룹화를 변경할 수 있습니다. 예를 들어, "x AND (y OR z)"입니다.

동일한 키의 여러 값

값을 목록에 배치하여 동일한 키의 여러 값을 검색할 수 있습니다. 예를 들어, "x:[value1, value2]""x:value1 OR x:value2"와 동일한 결과를 찾습니다. 이 작업을 수행할 때 검색은 검색어와 일치하는 이슈/이벤트를 반환합니다.

동일한 키에 대한 값 목록을 사용한 검색 예시:

release:[12.0, 13.0]

현재 is 키워드에 이러한 유형의 검색을 사용할 수 없습니다.

명시적 태그 구문

예약된 키워드(예: project_id)를 태그로 사용하지 않는 것이 좋습니다. 그러나 이렇게 하는 경우 다음 구문으로 검색해야 합니다:

tags[project_id]:tag_value

고급 기능

제외

기본적으로 검색어는 AND 연산자를 사용합니다. 즉, 모든 검색어와 일치하는 이슈/이벤트의 교집합을 반환합니다.

이를 변경하려면 부정 연산자 !를 사용하여 검색 매개변수를 제외할 수 있습니다.

is:unresolved !user.email:example@customer.com

위 예시에서 검색 쿼리는 해결되지 않았으며 이메일 주소가 example@customer.com인 사용자에게 영향을 주지 않는 모든 이슈를 반환합니다.

와일드카드(*)

검색은 특정 문자 및 문자열을 위한 자리 표시자로 와일드카드 *를 지원합니다.

browser:"Safari 11*"

위 예시에서 검색 쿼리는 "Safari 11.0.2", "Safari 11.0.3" 등과 같은 browser 값을 일치시킵니다.

연산자를 이렇게 조합할 수도 있습니다:

!message:"*Timeout"

위 예시에서 검색 쿼리는 ConnectionTimeout, ReadTimeout 등과 같은 message 값이 없는 결과를 반환합니다.

검색 가능한 속성

Sentry의 검색은 이슈와 이벤트 속성을 검색하기 위해 사용할 수 있는 예약된 키워드인 is, user, serverbrowser를 제공합니다. 또한 검색할 사용자 정의 태그를 만들 수 있습니다. 다음은 모든 사용 가능한 이슈 및 이벤트 검색어의 사양 목록입니다.

이슈 속성

이슈는 하나 이상의 이벤트의 모음입니다. 검색 가능한 속성에는 워크플로 상태(workflow status), 할당(assignment), 집계 카운트(aggregate counts) 및 나이(age)가 포함됩니다.

다음은 Sentry에서 예약하고 알려진 이슈 수준의 키와 토큰 목록입니다:

키/토큰 설명
age 결과를 age 이후에 생성된 이슈로 제한합니다. Unix find 명령어와 유사한 구문을 지원합니다. 접미사 지원: m -> 분, h -> 시간, d -> 일, w -> 주
age:-24h 지난 24시간 내에 새로 생성된 이슈를 반환합니다.
age:+12h 12시간 이상 지난 이슈를 반환합니다.
age:+12h age:-24h 12시간에서 24시간 사이에 생성된 이슈를 반환합니다.
assigned 사용자에게 할당된 이슈를 필터링합니다. 값은 사용자 ID(이메일 주소), 자신을 나타내는 me, 자신이 없거나 미할당인 경우 me_or_none, 또는 #팀-이름일 수 있습니다.
assigned_or_suggested 할당되었거나 제안된 이슈를 필터링합니다. 제안된 담당자는 소유권 규칙과 의심스러운 커밋으로 결정됩니다. 값은 사용자 ID(이메일 주소), 자신을 나타내는 me, 자신이 없거나 제안되지 않은 경우 me_or_none, 또는 #팀-이름일 수 있습니다.
bookmarks 이슈에 북마크를 추가한 사용자를 필터링합니다. 값은 사용자 ID(이메일 주소) 또는 자신을 나타내는 me일 수 있습니다.
first-release 결과를 지정된 버전에서 처음 나타난 이슈로 제한합니다. 릴리스 버전과 정확히 일치하거나 first-release:latest를 선택하여 최신 버전을 선택합니다.
has 모든 태그 값을 가진 이슈로 결과를 제한합니다.
has:user user 태그 값을 가진 이슈로 결과를 제한합니다.
is 이슈의 다양한 속성을 필터링합니다.
is:unresolved
is:resolved
is:ignored
이슈 상태에 따라 필터링합니다.
is:assigned
is:unassigned
이슈가 할당되었는지에 따라 이슈를 반환합니다.
is:linked
is:unlinked
이슈가 외부 이슈 트래커에 연결되었는지에 따라 이슈를 반환합니다.
lastSeen 지정된 시점 이후(since) 또는 이전(until)에 마지막으로 나타난 이슈로 결과를 제한합니다. age 토큰과 유사한 방식으로 사용합니다(위 참조).
lastSeen:+30d 30일 이상 전에 마지막으로 나타난 이슈를 반환합니다.
lastSeen:-2d 최근 2일 내에 나타난 이슈를 반환합니다.
timesSeen 결과를 정확히, 최소 또는 최대 횟수의 이슈로 제한합니다.
정확히 일치: timesSeen:10
상한 또는 하한 토큰: timesSeen:>10, timesSeen:>=10, timesSeen:<10, timesSeen:<=10

이벤트 속성

이벤트는 Sentry SDK를 사용하여 캡처된 기본 이벤트 데이터(errors 및 transactions)입니다.

"이슈" 페이지에서 이벤트 속성을 검색할 때 검색은 제공된 이벤트 필터와 일치하는 하나 이상의 이벤트를 가진 모든 이슈를 반환합니다.

다음은 Sentry에서 예약하고 알려진 이벤트 수준의 키와 토큰 목록입니다:

키/토큰 설명
location 일치하는 위치를 가진 이벤트로 결과를 제한합니다.
message 일치하는 메시지를 가진 이벤트로 결과를 제한합니다.
environment 일치하는 환경으로 태그가 지정된 이벤트로 결과를 제한합니다.
release 일치하는 버전으로 태그가 지정된 이벤트로 결과를 제한합니다. 릴리스 버전과 정확히 일치하는 토큰을 만들거나 release:latest를 선택하여 최신 버전을 선택할 수 있습니다.
release.package
release.version
release.build
일치하는 버전으로 태그가 지정된 이벤트로 결과를 제한합니다. 범위와 와일드카드(*)를 지원합니다.
release.stage 일치하는 릴리스 단계로 태그가 지정된 릴리스로 결과를 제한합니다.
transaction URL 템플릿/작업 이름으로 태그가 지정된 이벤트로 결과를 제한합니다.
geo.country_code
geo.region
geo.city
지리적 영역에서 발생한 이벤트로 결과를 제한합니다.
http.method
http.referer
http.url
HTTP 요청 컨텍스트에 따라 결과를 제한합니다.
user.id
user.email
user.username
user.ip
지정된 사용자에게 영향을 미치는 이벤트로 결과를 제한합니다.
event.timestamp 지정된 타임스탬프에 발생한 이벤트로 결과를 제한합니다. 이 필터는 두 번 제공하여 범위를 제공할 수 있습니다.
2016년 1월 2일에 발생한 이벤트: event.timestamp:2016-01-02
01:00과 02:00(UTC) 사이의 이벤트: event.timestamp:>=2016-01-02T01:00:00 event.timestamp:<2016-01-02T02:00:00
다음 비교 연산자 사용 가능: 보다 크다(>), 보다 크거나 같다(>=), 보다 작다(<), 보다 작거나 같다(<=)
device.arch
device.battery_level
device.brand
device.charging
device.locale
device.model_id
device.name
device.online
device.orientation
device.simulator
device.uuid
특정 장치 속성으로 태그가 지정된 이벤트로 결과를 제한합니다.
os.build
os.kernel_version
특정 운영체제 속성으로 태그가 지정된 이벤트로 결과를 제한합니다.
stack.abs_path
stack.filename
stack.function
stack.module
stack.package
stack.stack_level
stack.lineno
일치하는 스택 속성을 가진 이벤트로 결과를 제한합니다.
Native SDK 사용자의 경우 stack.module의 Native 동등어는 stack.package입니다.
error.type
error.value
error.mechanism
error.handled
일치하는 오류 속성을 가진 이벤트로 결과를 제한합니다.

사용자 정의 태그

또한 토큰으로 지정된 모든 태그를 사용할 수 있습니다. 태그는 이벤트에 할당된 다양한 키/값 쌍이며, 나중에 세부 분석이나 관련 이벤트를 빠르게 찾기 위해 사용할 수 있습니다.

태그의 일반적인 용도는 다음과 같습니다:

  • 서버의 hostname
  • 플랫폼 버전(예: iOS 5.0)
  • 사용자의 언어

저장된 검색

"이슈" 페이지의 "저장된 검색" 탭에서는 권장 검색에 액세스하고, 가장 유용한 검색을 고정하며, 조직 전체의 저장된 검색을 활용할 수 있습니다.

권장 검색

권장 검색은 사용할 가능성이 있는 일반적인 검색어입니다. 이 미리 진행된 검색은 "저장된 검색" 드롭다운 목록의 "권장 검색" 아래에 나열되며, 가장 최근에 사용한 순서대로 나열됩니다.

고정 검색

검색을 고정하여 "이슈" 페이지에서 볼 수 있는 기본 뷰로 만들 수 있습니다. 고정 검색은 본인에게만 표시되며 프로젝트와 관련이 있습니다.

  1. 검색창에 검색어를 입력합니다.
  2. 검색 옆에 핀 아이콘을 클릭합니다.
  3. 고정되면 Sentry가 검색을 "저장된 검색" 드롭다운 목록에 추가합니다. 텍스트의 검색 태그는 "내 고정 검색"으로 표시됩니다.

고정 검색 변경

고정 검색을 변경하려면:

  1. 고정 검색을 선택합니다. 핀 아이콘을 클릭하여 해제합니다. 기본 검색이 is:unresolved로 돌아갑니다.
  2. 다른 검색을 실행합니다. 핀 아이콘을 클릭합니다. "내 고정 검색"으로 표시된 쿼리가 이제 새로운 고정 쿼리가 되어 원래 쿼리를 대체합니다.

권장 검색 고정

다른 검색과 마찬가지로 권장 검색을 고정할 수 있습니다. 권장 검색을 선택하고 권장 검색 쿼리가 검색창에 채워지면 고정합니다.

조직 전체 저장된 검색

조직 전체 저장된 검색 생성

소유자(Owner) 및 관리자(Manager)는 조직을 위해 사용자 정의 저장된 검색을 만들어 지속적인 뷰를 생성할 수 있습니다. 이 저장된 검색은 특정 프로젝트와 연관되지 않으며, 조직의 모든 프로젝트(및 사용자)와 연관됩니다.

  1. 검색창에 검색어를 입력하고 작업 메뉴(세 개의 점)를 클릭합니다. "저장된 검색 생성"을 선택합니다.
  2. 열리는 모달에서 검색에 이름을 지정하고 이슈 목록의 정렬 순서를 설정합니다. 여기서 쿼리를 업데이트할 수도 있습니다. 그런 다음 "저장"을 클릭합니다.
  3. 그러면 해당 뷰가 "저장된 검색" 드롭다운 목록의 일부가 됩니다.

조직 전체 저장된 검색 삭제

이 작업은 조직 소유자 또는 관리자에게만 적용됩니다.

사용자 정의 저장된 검색 위로 마우스를 가져가면 검색 이름 옆에 휴지통 아이콘이 나타납니다. 휴지통 아이콘을 클릭하여 사용자 정의 저장된 검색을 드롭다운 목록에서 삭제합니다.

태그: Sentry 모니터링 검색 쿼리 이슈 추적 오류 분석

5월 28일 20:32에 게시됨