검색 쿼리 구문
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:resolveduser.username:"Jane Doe"server:web-8example error
토큰 is:resolved와 user.username:"Jane Doe"는 예약된 키워드를 사용하므로 표준 검색 토큰입니다. 적절한 키워드 사용법에 대해서는 이슈 속성 및 이벤트 속성을 참조하십시오. 토큰 server:web-8는 Sentry SDK가 전송한 사용자 정의 태그를 가리킵니다.
토큰 example error는 선택적인 원본 검색을 사용하며, 이슈 검색 쿼리의 일부로 전달됩니다(SQL과 유사한 CONTAINS 일치 사용). 선택적인 원본 검색을 사용할 때 전체 문자열을 제공하면 쿼리가 해당 문자열을 사용합니다.
OR 및 AND 사용
OR 및 AND 검색 조건은 Discover, Performance 및 Metric Alerts에만 적용됩니다.
토큰 간에는 OR 및 AND를 사용하고 괄호 ()로 조건을 그룹화합니다. 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, server 및 browser를 제공합니다. 또한 검색할 사용자 정의 태그를 만들 수 있습니다. 다음은 모든 사용 가능한 이슈 및 이벤트 검색어의 사양 목록입니다.
이슈 속성
이슈는 하나 이상의 이벤트의 모음입니다. 검색 가능한 속성에는 워크플로 상태(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-0201: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)
- 사용자의 언어
저장된 검색
"이슈" 페이지의 "저장된 검색" 탭에서는 권장 검색에 액세스하고, 가장 유용한 검색을 고정하며, 조직 전체의 저장된 검색을 활용할 수 있습니다.
권장 검색
권장 검색은 사용할 가능성이 있는 일반적인 검색어입니다. 이 미리 진행된 검색은 "저장된 검색" 드롭다운 목록의 "권장 검색" 아래에 나열되며, 가장 최근에 사용한 순서대로 나열됩니다.
고정 검색
검색을 고정하여 "이슈" 페이지에서 볼 수 있는 기본 뷰로 만들 수 있습니다. 고정 검색은 본인에게만 표시되며 프로젝트와 관련이 있습니다.
- 검색창에 검색어를 입력합니다.
- 검색 옆에 핀 아이콘을 클릭합니다.
- 고정되면 Sentry가 검색을 "저장된 검색" 드롭다운 목록에 추가합니다. 텍스트의 검색 태그는 "내 고정 검색"으로 표시됩니다.
고정 검색 변경
고정 검색을 변경하려면:
- 고정 검색을 선택합니다. 핀 아이콘을 클릭하여 해제합니다. 기본 검색이 is:unresolved로 돌아갑니다.
- 다른 검색을 실행합니다. 핀 아이콘을 클릭합니다. "내 고정 검색"으로 표시된 쿼리가 이제 새로운 고정 쿼리가 되어 원래 쿼리를 대체합니다.
권장 검색 고정
다른 검색과 마찬가지로 권장 검색을 고정할 수 있습니다. 권장 검색을 선택하고 권장 검색 쿼리가 검색창에 채워지면 고정합니다.
조직 전체 저장된 검색
조직 전체 저장된 검색 생성
소유자(Owner) 및 관리자(Manager)는 조직을 위해 사용자 정의 저장된 검색을 만들어 지속적인 뷰를 생성할 수 있습니다. 이 저장된 검색은 특정 프로젝트와 연관되지 않으며, 조직의 모든 프로젝트(및 사용자)와 연관됩니다.
- 검색창에 검색어를 입력하고 작업 메뉴(세 개의 점)를 클릭합니다. "저장된 검색 생성"을 선택합니다.
- 열리는 모달에서 검색에 이름을 지정하고 이슈 목록의 정렬 순서를 설정합니다. 여기서 쿼리를 업데이트할 수도 있습니다. 그런 다음 "저장"을 클릭합니다.
- 그러면 해당 뷰가 "저장된 검색" 드롭다운 목록의 일부가 됩니다.
조직 전체 저장된 검색 삭제
이 작업은 조직 소유자 또는 관리자에게만 적용됩니다.
사용자 정의 저장된 검색 위로 마우스를 가져가면 검색 이름 옆에 휴지통 아이콘이 나타납니다. 휴지통 아이콘을 클릭하여 사용자 정의 저장된 검색을 드롭다운 목록에서 삭제합니다.