FIELDS 명령어

FIELDS 명령어

fields 명령어는 검색 결과에 포함하거나 제외할 필드를 지정해요.

출처: 문서

본문

fields 명령어는 검색 결과에 포함하거나 제외할 필드를 지정해요.

구문 (Syntax)

fields 명령어의 구문은 다음과 같아요:

fields [+|-] <field-list>

매개변수 (Parameters)

fields 명령어는 다음 매개변수를 지원해요.

매개변수 필수/선택 설명
<field-list> 필수 유지하거나 제거할 필드의 쉼표 또는 공백으로 구분된 목록이에요. 와일드카드 패턴을 지원해요.
`[+ -]` 선택

예제 1: 트리아지에 필요한 필드 선택하기

다음 쿼리는 검색 결과에서 특정 필드를 선택해요:

source=otellogs
| where severityText IN ('ERROR', 'WARN')
| sort severityNumber, `resource.attributes.service.name`
| fields severityText, `resource.attributes.service.name`, body
| head 3

쿼리는 다음과 같은 결과를 반환해요:

severityText resource.attributes.service.name body
WARN frontend-proxy SSL certificate for api.example.com expires in 14 days
WARN frontend-proxy Rate limit threshold reached: 450/500 requests per minute for API key ending in …abc789
WARN product-catalog Slow query detected: SELECT * FROM products WHERE category = ‘electronics’ took 3200ms

예제 2: 결과에서 시끄러운 필드 제거하기

다음 쿼리는 필요한 것을 추출한 후 원본 body 필드를 제거해 출력을 깔끔하게 유지해요:

source=otellogs
| where severityText IN ('ERROR', 'WARN')
| sort severityNumber, `resource.attributes.service.name`
| fields severityText, `resource.attributes.service.name`, severityNumber, body
| fields - body, severityNumber
| head 3

쿼리는 다음과 같은 결과를 반환해요:

severityText resource.attributes.service.name
WARN frontend-proxy
WARN frontend-proxy
WARN product-catalog

예제 3: 접두사 와일드카드로 severity 관련 필드 모두 선택하기

정확한 필드 이름을 모를 때는 와일드카드를 사용해 공통 접두사로 시작하는 모든 필드를 가져올 수 있어요. 이렇게 하면 severityText와 severityNumber가 모두 선택돼요:

source=otellogs
| where severityText IN ('ERROR', 'WARN')
| sort severityNumber, `resource.attributes.service.name`
| fields severity*
| head 3

쿼리는 다음과 같은 결과를 반환해요:

severityText severityNumber
WARN 13
WARN 13
WARN 13

예제 4: 접미사 와일드카드로 trace 상관관계 필드 선택하기

다음 쿼리는 Id로 끝나는 모든 필드를 가져와요. 분산 요청을 디버깅할 때 trace 상관관계 식별자를 끌어오는 데 유용해요:

source=otellogs
| where LENGTH(traceId) > 0
| fields *Id
| head 3

쿼리는 다음과 같은 결과를 반환해요:

spanId traceId
span0001 abcd1234efgh5678
span0002 abcd1234efgh5678
span0003 abcd1234efgh5678

예제 5: 명시적 필드와 와일드카드 조합하기

다음 쿼리는 어떤 필드를 선택하면서 와일드카드로 일치하는 필드도 함께 선택해요. 한 번의 쿼리로 severity 텍스트와 모든 trace 식별자를 가져와요:

source=otellogs
| where LENGTH(traceId) > 0
| fields severityText, *Id
| head 3

쿼리는 다음과 같은 결과를 반환해요:

severityText spanId traceId
INFO span0001 abcd1234efgh5678
INFO span0002 abcd1234efgh5678
WARN span0003 abcd1234efgh5678

예제 6: 와일드카드 제외로 trace 필드 제거하기

다음 쿼리는 출력에서 모든 식별자 필드를 제거해요. tracing 메타데이터 없이 로그 내용만 원할 때 유용해요:

source=otellogs
| where severityText = 'ERROR'
| sort `resource.attributes.service.name`
| fields - *Id
| head 1

쿼리는 다음과 같은 결과를 반환해요:

@timestamp instrumentationScope severityText resource flags attributes droppedAttributesCount severityNumber time body
2024-02-01 09:15:00 {} ERROR {‘attributes’: {‘service’: {‘name’: ‘checkout’}, ‘host’: {‘name’: ‘checkout-8b4c2d-jp5r7’}}, ‘droppedAttributesCount’: 0} 0 {} 0 17 2024-02-01 09:15:00 NullPointerException in CheckoutService.placeOrder at line 142

예제 7: 필드 중복 제거

다음 쿼리는 와일드카드가 이미 지정된 필드로 확장될 때 중복 컬럼을 자동으로 방지해요:

source=otellogs
| fields severityText, severity*
| head 3

쿼리는 다음과 같은 결과를 반환해요. severityText가 명시적으로 지정되고 severity*와도 일치하지만, 자동 중복 제거 때문에 한 번만 나타나요:

severityText severityNumber
INFO 9
INFO 9
WARN 13

예제 8: 모든 필드 선택하기

다음 쿼리는 *를 사용해 인덱스 스키마에 정의된 모든 필드를 선택해요. null 값을 가진 필드도 포함돼요:

source=otellogs
| where severityText = 'WARN'
| fields `*`
| head 1

쿼리는 다음과 같은 결과를 반환해요:

spanId traceId @timestamp instrumentationScope severityText resource flags attributes droppedAttributesCount severityNumber time body
span0003 abcd1234efgh5678 2024-02-01 09:12:00 {‘name’: ‘go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc’, ‘droppedAttributesCount’: 0, ‘version’: ‘0.49.0’} WARN {‘attributes’: {‘service’: {‘name’: ‘product-catalog’}, ‘host’: {‘name’: ‘productcatalog-7c9d-zn4p2’}}, ‘droppedAttributesCount’: 0} 0 {} 0 13 2024-02-01 09:12:00 Slow query detected: SELECT * FROM products WHERE category = ‘electronics’ took 3200ms
  • table – 동일한 기능을 가진 별칭(alias) 명령어예요

더 알아보기 (Learn more)