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 |
관련 문서 (Related documentation)
table– 동일한 기능을 가진 별칭(alias) 명령어예요