datadog 로그 검색 문법
( datadog에서는 검색될 값을 용어라고도 부르고 태그라고도 부르는 것 같음 )
데이타독의 로그 검색은 용어와 연산자를 통해서 진행
그리고, 용어에는 두가지 유형이 존재
- single term ( 단일 용어 )
- sequence ( 시퀀스, 연속 용어 )
single term
띄어 쓰기 단위로 구분된 모든 단어.
예를 들어서 test hello 는 test와 hello 로 이루어진 single term.
다음과 같은 연산자를 사용해 조건을 추가할 수 있다.
연산자 설명 예시
AND | 두 용어 모두 포함한 로그 검색 | test AND hello |
OR | 둘 중 하나 용어 포함한 로그 검색 | test OR hello |
- | 이 연산자 다음에 오는 용어는 이벤트에 포함되지 않습니다. (test 는 포함하되, hello 는 포함하지 않는 로그 검색) | test AND -hello |
sequence
큰 따옴표로 묶은 단어 그룹
예를 들어서 test hello 를 문자 그대로 검색하고 싶다면 "test hello"로 입력하면 됩니다.
test + "띄어쓰기" + hello 로 구성된 문장이 검색 됩니다.
특수문자 검색
+ = & | > < ! ( ) { } [ ] ^ " “ ” ~ ? : \ / 같은 특수문자를 검색하려면 \ 이 필요합니다. 또는 sequence 검색을 통해서 문장 전체를 검색하는 방법이 있습니다.
와일드카드
다중 문자 와일드카드
다중 문자 와일드 카드 검색을 수행하려면 별표 기호 * 를 사용하세요.
- web* ⇒ web 으로 시작하는 모든 log 검색
- *web ⇒ web 으로 끝나는 모든 log 검색
- *web* ⇒ web 이란 문자열을 포함한 모든 log 검색
와일드 카드
하나의 문장 자리에, 어떤 문자가 와도 상관 없는 단어를 검색하고 싶은 경우 ? 를 사용합니다.
예를 들어서 4자리의 단어를 검색하는데 맨 앞자리가 f 이고 맨 뒷자리가 m 입니다. 중간 2개의 알파벳은 기억이 나지 않을 때 다음과 같은 문자열을 검색하면 됩니다.
f??m
속성검색
특정 속성을 검색하려면 @ 키워드를 사용.
예를 들어서 속성 이름이 level이고 level의 값이 INFO 인 데이터를 필터링 하려면 다음과 같이 입력
@level:INFO
context, level, logger 등등이 속성이다.
만약, mdc 라는 속성 안에 있는 method 가 "GET" 인 데이터를 찾으려면 아래와 같이 단어를 찾으면 된다.
@mdc.method:GET
이스케이프 문자가 있는 경우
사진 속의 속성인 sessionId 이 !test 인 경우를 찾을 땐, 다음과 같이 두가지 방법으로 찾을 수 있다.
@mdc.sessionId:\!test
- \ 을 사용
@mdc.sessionId:"!test"
- 큰 따옴표로 감싸기
주의 : 이스케이프 문자를 가진 단어를 포함한 log 검색
속성 검색은 전체 텍스트가 일치하는 경우에만 검색이 됩니다.
따라서 단어 일부를 포함하고 있는 데이터를 검색하고 싶다면 다중 문자 와일드 카드를 사용해서 검색해야 합니다.
// mdc 의 params 속성의 텍스트가 code=YA 를 포함하는 경우 집계
@mdc.params:code=YA
=> @mdc.params:code=YA* 으로 변경하여야 함
특수문자가 들어갔는데, 다중 문자 와일드 카드를 사용하고 싶은 경우 에는 sequence 검색을 사용할 수 없습니다.
// mdc 의 params 속성이 {code=YA, message=null} 을 검색하고 싶은 경우
@mdc.params:{code=YA
=> @mdc.params:\{code=YA* 으로 변경해야 합니다.
sequence 를 사용해서 검색하려면 @mdc.params:"{code=YA, message=null}" 을 사용해야 합니다.
sequence 와 다중 와일드 카드를 섞어 사용할 수는 없습니다. @mdc.params:"{code=YA,"*
숫자 검색
숫자는 다음과 같이 숫자 연산자를 사용할 수 있습니다. http 응답시간 100ms 를 초과하는 데이터를 검색하고 싶은 경우 다음과 같이 검색할 수 있습니다.
@http.response_time:>100
특정 범위 내의 값을 검색하고 싶은 경우 이렇게 할 수 있습니다.
@http.response_time:[400 TO 499]
응답시간이 400ms 를 초과하고 499 ms 는 넘지 않는 로그 검색
태그
( datadog에서는 검색될 값을 용어라고도 부르고 태그라고도 부르는 것 같음 )
사용될 값들은 따로 사용하거나, 하나로 묶어서 사용할 수도 있습니다.
- test : test 문자열을 포함한 log 검색
- env:(prod OR test) : env 속성이 prod 이거나 test 인 log 검색
- (env:prod AND -version:beta) : env 속성 값이 prod 이고, version 속성 값이 beta 가 아닌 값 검색