검색 구문 로그

개요

쿼리 필터는 용어와 연산자로 구성되어 있습니다.

용어에는 다음과 같은 두 가지 유형이 있습니다.

  • 단일 용어test 또는 hello 과 같은 하나의 단어입니다.

  • 시퀀스"hello dolly"와 같이 큰 따옴표로 묶인 단어의 그룹입니다.

복잡한 쿼리로 여러 용어를 결합하려면, 대소문자를 구분해 다음 부울 연산자를 사용할 수 있습니다.

연산자설명예시
ANDIntersection: 모든 용어가 선택한 이벤트에 존재합니다(추가된 것이 없으면 AND가 기본적으로 적용됨).인증 AND 실패
ORUnion 용어 중 하나가 선택한 이벤트에 포함되어 있습니다.인증 OR 비밀번호
-예외: 다음 용어가 이벤트에 존재하지 않습니다(개별 원본 텍스트 검색에 적용됨).인증 AND -비밀번호

전문 검색

전체 텍스트 검색 기능은 로그 관리에서만 사용할 수 있으며 모니터, 대시보드, 노트북 쿼리에서 작동합니다. 전체 텍스트 검색 구문은 인덱스 필터, 아카이브 필터, 로그 파이프라인 필터, 재수화 필터를 정의하는 데 사용할 수 없으며 라이브 테일에서도 사용할 수 없습니다.

*:search_term 구문을 사용하여 로그 메시지를 포함하는 모든 로그 속성에서 전체 텍스트 검색을 실행할 수 있습니다.

단일 검색어 예시

검색 구문검색 유형설명
*:hello전체 텍스트모든 로그 속성에서 정확히 hello 문자열을 검색합니다.
hello무료 텍스트로그 메시지에서 정확히 hello 문자열만 검색합니다.

와일드카드를 사용한 검색어 예시

검색 구문검색 유형설명
*:hello전체 텍스트모든 로그 속성에서 정확히 hello 문자열을 검색합니다.
*:hello*전체 텍스트전체 로그 속성에서 hello로 시작하는 문자열을 검색합니다. 예를 들어 hello_world가 있을 수 있습니다.

정확히 일치하는 여러 검색어 예시

검색 구문검색 유형설명
*:"hello world"전체 텍스트모든 로그 속성에서 정확히 hello world 문자열을 검색합니다.
hello world프리 텍스트로그 메시지에서만 helloworld 단어를 검색합니다. 예로 hello beautiful world가 있습니다.

특수 문자 및 공백 이스케이프

+, -, =, &&, ||, >, <, !, (, ), {, }, [, ], ^, ", , , ~, *, ?, :, \, #와 같은 특수 문자와 공백은 \ 문자로 이스케이프 처리해야 합니다. /는 특수 문자로 간주되지 않으므로 이스케이프 처리할 필요가 없습니다.

로그 메시지에서는 특수 문자를 검색할 수 없습니다. 특수 문자가 속성 내에 있는 경우에만 검색할 수 있습니다.

특수 문자를 검색하려면, Grok 파서가 포함된 속성으로 파싱한 다음 해당 속성을 포함하는 로그를 검색합니다.

속성 검색

특정 속성의 검색 에 @를 추가하여 검색 중인 속성을 지정합니다.

예를 들어, 속성 이름이 URL이고 URL 값을 필터링하려면 www.datadoghq.com 을 입력합니다:

@url:www.datadoghq.com

참고:

  1. 속성의 검색 및 태그 에 패싯을 정의할 필요는 없습니다.

  2. 속성 검색은 대소문자를 구분합니다. 대소문자를 구분하지 않는 결과를 얻으려면 [전체 텍스트 검색](#전체 텍스트-검색)를 사용하세요. 또 다른 옵션은 대소문자를 구분하지 않는 결과를 얻으려면 lowercase 필터를 Grok 파서와 함께 사용하고 파싱 동안 대소문자를 구분하지 않는 결과를 얻으려면 검색 을 사용하는 것입니다.

  3. 특수 문자가 포함된 속성 값을 검색하려면 이스케이프 또는 큰따옴표를 사용해야 합니다.

    • 예를 들어 값이 hello:world 값을 포함하는 my_attribute 속성의 경우 @my_attribute:hello\:world 또는 @my_attribute:"hello:world"를 사용하여 검색합니다.
    • 단일 특수 문자나 공백을 찾으려면 ? 와일드카드를 사용합니다. 예를 들어 hello world 값이 포함된 my_attribute 속성의 경우 @my_attribute:hello?world를 사용해 검색합니다.

예:

검색 쿼리설명
@http.url_details.path:"/api/v1/test"http.url_details.path 속성에서 /api/v1/test와 일치하는 모든 로그를 검색합니다.
@http.url:/api\-v1/*/api-v1/로 시작하는 http.url 속성의 값을 포함하는 모든 로그를 검색합니다.
@http.status_code:[200 TO 299] @http.url_details.path:/api\-v1/*http.status_code 값이 200에서 299 사이이고 /api-v1/로 시작하는 http.url_details.path 속성 값을 포함하는 모든 로그를 검색합니다.
-@http.status_code:*http.status_code 속성이 포함되지 않은 모든 로그 검색

검색 CIDR 표기법 사용

클래스 없는 도메인 간 라우팅(CIDR)은 사용자가 다양한 IP 주소(CIDR 블록으로도 명명)를 간결하게 정의할 수 있는 표기법입니다. CIDR은 네트워크 (예: VPC) 또는 서브네트워크(예: VPC 내의 공용/비공용 서브넷)를 정의하는 데 가장 일반적으로 사용됩니다.

사용자는 CIDR 표기법을 통해 로그에서 속성을 쿼리하는 데 CIDR() 함수를 사용할 수 있습니다. CIDR() 함수는 로그을 필터링할 파라미터로 로그 속성에 전달되어야 하며 이후 하나 이상의 CIDR 블록을 사용해야 합니다.

예시

  • CIDR(@network.client.ip,13.0.0.0/8)은 13.0.0.0/8 CIDR 블록에 속하는 network.client.ip 필드의 IP 주소를 포함하는 로그를 검색하고 필터링합니다.
  • CIDR(@network.ip.list,13.0.0.0/8, 15.0.0.0/8)은 배열 속성 network.ip.list에 13.0.0.0/8 또는 15.0.0.0/8 CIDR 블록에 속하는 IP 주소가 있는 로그를 검색하고 필터링합니다.
  • source:pan.firewall evt.name:reject CIDR(@network.client.ip, 13.0.0.0/8)은 출발지가 13.0.0.0/8 서브넷인 팔로 알토 방화벽의 거부 이벤트를 검색하고 필터링합니다.
  • source:vpc NOT(CIDR(@network.client.ip, 13.0.0.0/8)) CIDR(@network.destination.ip, 15.0.0.0/8)은 출발지 서브넷이 13.0.0.0/8이 아니며 목적지 서브넷이 15.0.0.0/8로 지정된 모든 VPC 로그를 표시합니다. 이는 서브넷 간 환경의 네트워크 트래픽을 분석하는 데 사용할 수 있습니다.

CIDR() 함수는 IPv4 및 IPv6 CIDR 표기법을 모두 지원하며 대시보드, 로그 모니터 및 로그 설정의 로그 탐색기, 라이브 테일, 로그 위젯에서 작동합니다.

와일드카드

와일드카드를 프리 텍스트 검색과 함께 사용할 수 있습니다. 그러나 로그 탐색기의 content 열에 있는 텍스트인 로그 메시지에 있는 용어만 검색합니다. 로그 속성에서 값을 검색하려면 전체 텍스트 검색을 참조하세요.

멀티 문자 와일드카드

로그 메시지(로그 탐색기의 content 열)에서 복수 문자에 대한 와일드카드 검색을 수행하려면 다음과 같이 * 기호를 사용합니다.

  • service:web*web으로 시작하는 서비스가 포함된 모든 로그 메시지를 찾습니다.
  • web*web으로 시작되는 모든 로그 메시지를 찾습니다.
  • *webweb으로 끝나는 모든 로그 메시지를 찾습니다.

참고: 와일드카드는 큰따옴표 밖에서만 와일드카드로 작동합니다. 예를 들어 "*test*"는 메시지에 *test* 문자열이 있는 로그를 찾습니다. *test* 는 메시지 내에서 그 위치와 관계없이 test 문자열이 있는 로그를 찾습니다.

와일드카드 검색은 이 구문을 포함하는 태그 및 속성(패싯 처리/처리 안 됨) 내에서 작동합니다. 이 쿼리는 mongo 문자열로 끝나는 모든 서비스를 반환합니다.

service:*mongo

와일드카드는 로그 속성의 일부가 아닌 로그의 일반 텍스트를 검색하는 데에도 사용할 수 있습니다. 예를 들어 이 쿼리는 NETWORK 문자열을 포함하는 콘텐츠(메시지)가 있는 모든 로그를 반환합니다.

*NETWORK*

그러나 이 검색어는 로그 메시지의 일부가 아니거나 로그 속성에 포함되지 않은 경우 NETWORK 문자열을 포함하는 로그를 반환하지 않습니다.

와일드카드 검색

특수 문자를 포함하거나 이스케이핑 또는 따옴표를 필요로 하는 속성 또는 태그 값을 검색하는 경우, ? 와일드카드를 사용해 단일 특수 문자나 공백을 찾습니다. 예를 들어 hello world 값이 포함된 my_attribute 속성을 검색하려면 @my_attribute:hello?world를 사용합니다.

숫자 값

숫자 속성을 검색하려면 먼저 패싯으로 추가합니다. 그런 다음 숫자 연산자(<,>, <=, 또는 >=)를 사용하여 숫자 패싯을 검색합니다. 예를 들어 다음을 사용해 응답 시간이 100ms 이상인 로그 을 모두 검색합니다.

@http.response_time:>100

특정 범위 내의 숫자 속성을 검색할 수 있습니다. 예를 들어 다음을 사용하여 4xx 오류 모두를 검색합니다.

@http.status_code:[400 TO 499]

태그

로그는 호스트통합에서 태그를 상속합니다. 검색에서 패싯으로도 사용할 수 있습니다.

  • test는 문자열 “test"를 검색합니다.
  • env:(prod OR test)env:prod 태그 또는 env:test 태그를 포함하는 모든 로그와 일치합니다.
  • (env:prod AND -version:beta)env:prod 태그를 포함하고 version:beta 태그를 포함하지 않는 모든 로그와 일치합니다.

태그가 태그 모범 사례를 따르지 않고 key:value 구문을 사용하지 않는 경우 이 검색 쿼리를 사용하세요.

  • tags:<MY_TAG>

배열

아래 예제에서 패싯의 Peter 값을 클릭하면 users.names 속성이 포함된 로그가 모두 반환되며, 그 값은 Peter 또는 Peter가 포함된 배열입니다.

배열 및 패싯

참고: 검색은 동등한 구문을 통해 패싯이 아닌 배열 속성에서도 사용할 수 있습니다.

다음 예시에서 윈도우즈(Windows)에 대한 클라우드와치(CloudWatch) 로그는 @Event.EventData.Data 아래에 JSON 객체 배열을 포함합니다. JSON 객체 배열에서는 패싯을 만들 수 없지만 다음 구문을 사용하여 검색할 수 있습니다.

  • @Event.EventData.Data.Name:ObjectServerName 키와 ObjectServer 값을 포함하는 모든 로그와 일치합니다.
JSON 객체 배열에서 패싯리스 쿼리

계산된 필드

계산된 필드는 로그 속성과 같이 기능하며, 검색, 집계, 시각화 및 기타 계산된 필드 정의에 사용할 수 있습니다. # 접두사를 사용하여 계산된 필드 이름을 참조합니다.

로그 탐색기에서 결과 필터링에 사용되는 계산된 필드인 request_duration

저장된 검색

저장된 보기에는 검색 쿼리 , 열, 시간대 및 패싯이 포함됩니다.

참고 자료