기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용할 수 있는 프로세서
이 섹션에는 로그 이벤트 변환기에서 사용할 수 있는 각 프로세서에 대한 정보가 포함되어 있습니다. 프로세서는 파서, 문자열 변형기, JSON 변형기 및 날짜 프로세서로 분류할 수 있습니다.
목차
구성 가능한 파서 유형 프로세서
parseJSON
parseJSON 프로세서는 JSON 로그 이벤트를 구문 분석하고 추출된 JSON 키-값 페어를 대상 아래에 삽입합니다. 대상을 지정하지 않으면 프로세서가 루트 노드 아래에 키-값 페어를 배치합니다. 를 첫 번째 프로세서parseJSON
로 사용할 때는를 소스 필드@message
로 사용하여 전체 로그 이벤트를 구문 분석해야 합니다. 초기 JSON 구문 분석 후 후속 프로세서에서 특정 필드를 조작할 수 있습니다.
원래 @message
콘텐츠는 변경되지 않으며 새 키가 메시지에 추가됩니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
source |
구문 분석할 로그 이벤트의 필드 경로입니다. 점 표기법을 사용하여 하위 필드에 액세스합니다. 예: store.book |
아니요 |
|
최대 길이: 128 최대 중첩 키 깊이: 3 |
destination |
구문 분석된 JSON의 대상 필드 |
아니요 |
|
최대 길이: 128 최대 중첩 키 깊이: 3 |
예제
수집된 로그 이벤트가 다음과 같다고 가정해 보겠습니다.
{ "outer_key": { "inner_key": "inner_value" } }
이 parseJSON 프로세서가 있는 경우:
[ { "parseJSON": { "destination": "new_key" } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "new_key": { "outer_key": { "inner_key": "inner_value" } } }
grok
grok 프로세서를 사용하여 패턴 일치를 사용하여 비정형 데이터를 구문 분석하고 구조화합니다. 이 프로세서는 로그 메시지에서 필드를 추출할 수도 있습니다.
필드 | 설명 | 필수? | Default | Limits | Notes |
---|---|---|---|---|---|
source |
Grok 일치를 적용할 필드의 경로 |
아니요 |
|
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
match |
로그 이벤트와 일치시킬 grok 패턴 |
예 |
최대 길이: 512 최대 grok 패턴: 20 일부 grok 패턴 유형에는 개별 사용량 제한이 있습니다. {URI, URIPARAM, URIPATHPARAM, SPACE, DATA, GREEDYDATA, GREEDYDATA_MULTILINE} 패턴의 조합은 최대 5회까지 사용할 수 있습니다. Grok 패턴은 유형 변환을 지원하지 않습니다. 일반적인 로그 형식 패턴(APACHE_ACCESS_LOG, NGINX_ACCESS_LOG, SYSLOG5424)의 경우 일반적인 로그 패턴 뒤에는 DATA, GREEDYDATA 또는 GREEDYDATA_MULTILINE 패턴만 포함될 수 있습니다. |
Grok 패턴의 구조
지원되는 grok 패턴 구조는 다음과 같습니다.
%{PATTERN_NAME:FIELD_NAME}
-
PATTERN_NAME: 특정 유형의 데이터를 일치시키기 위해 미리 정의된 정규식을 나타냅니다. 지원되는 grok 패턴 목록에서 미리 정의된 grok 패턴만 지원됩니다. 사용자 지정 패턴 생성은 허용되지 않습니다.
-
FIELD_NAME: 추출된 값에 이름을 할당합니다.
FIELD_NAME
는 선택 사항이지만이 값을 지정하지 않으면 추출된 데이터가 변환된 로그 이벤트에서 삭제됩니다. 에서 점 표기법(예: "parent.child")을FIELD_NAME
사용하는 경우 JSON 경로로 간주됩니다. -
유형 변환: 명시적 유형 변환은 지원되지 않습니다. TypeConverter 프로세서를 사용하여 grok에서 추출한 값의 데이터 유형을 변환합니다.
더 복잡한 일치 표현식을 생성하려면 여러 grok 패턴을 결합하면 됩니다. 로그 이벤트와 일치하도록 최대 20개의 grok 패턴을 결합할 수 있습니다. 예를 들어 이러한 패턴 조합을 사용하여 다음과 같은 Redis 느린 로그 항목에서 필드를 추출할 %{NUMBER:timestamp} [%{NUMBER:db} %{IP:client_ip}:%{NUMBER:client_port}] %{GREEDYDATA:data}
수 있습니다.
1629860738.123456 [0 127.0.0.1:6379] "SET" "key1" "value1"
Grok 예제
예제 1: grok를 사용하여 비정형 로그에서 필드 추출
샘플 로그:
293750 server-01.internal-network.local OK "[Thread-000] token generated"
사용된 변환기:
[ { "grok": { "match": "%{NUMBER:version} %{HOSTNAME:hostname} %{NOTSPACE:status} %{QUOTEDSTRING:logMsg}" } } ]
출력:
{ "version": "293750", "hostname": "server-01.internal-network.local", "status": "OK", "logMsg": "[Thread-000] token generated" }
샘플 로그:
23/Nov/2024:10:25:15 -0900 172.16.0.1 200
사용된 변환기:
[ { "grok": { "match": "%{HTTPDATE:timestamp} %{IPORHOST:clientip} %{NUMBER:response_status}" } } ]
출력:
{ "timestamp": "23/Nov/2024:10:25:15 -0900", "clientip": "172.16.0.1", "response_status": "200" }
예제 2: parseJSON과 함께 grok를 사용하여 JSON 로그 이벤트에서 필드 추출
샘플 로그:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1" }
사용된 변환기:
[ { "parseJSON": {} }, { "grok": { "source": "logMsg", "match": "%{WORD:http_method} %{NOTSPACE:request} HTTP/%{NUMBER:http_version}" } } ]
출력:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1", "http_method": "GET", "request": "/page.html", "http_version": "1.1" }
예제 3: FIELD_NAME에 점 주석이 있는 Grok 패턴
샘플 로그:
192.168.1.1 GET /index.html?param=value 200 1234
사용된 변환기:
[ { "grok": { "match": "%{IP:client.ip} %{WORD:method} %{URIPATHPARAM:request.uri} %{NUMBER:response.status} %{NUMBER:response.bytes}" } } ]
출력:
{ "client": { "ip": "192.168.1.1" }, "method": "GET", "request": { "uri": "/index.html?param=value" }, "response": { "status": "200", "bytes": "1234" } }
지원되는 grok 패턴
다음 표에는 grok
프로세서에서 지원하는 패턴이 나열되어 있습니다.
일반 grok 패턴
Grok 패턴 | 설명 | 최대 패턴 제한 | 예제 |
---|---|---|---|
사용자 이름 또는 사용자 | 소문자(a~z), 대문자(A~Z), 숫자(0~9), 점(.), 밑줄(_) 또는 하이픈(-)을 포함할 수 있는 하나 이상의 문자와 일치합니다. | 20 |
입력: 패턴: 출력: |
INT | 선택 사항인 더하기 또는 빼기 기호 뒤에 하나 이상의 숫자가 옵니다. | 20 |
입력: 패턴: 출력: |
BASE10NUM | 부호 및 소수점 옵션이 있는 정수 또는 부동 소수점 숫자와 일치합니다. | 20 |
입력: 패턴: 출력: |
BASE16NUM | 10진수 및 16진수와 선택적 기호(+ 또는 -) 및 선택적 0x 접두사를 일치시킵니다. | 20 |
입력: 패턴: 출력: |
POSINT | 하나 이상의 숫자(1~9 다음에 0~9)로 구성된 앞에 0이 없는 정수와 일치합니다. | 20 |
입력: 패턴: 출력: |
음수 아님 | 0과 앞에 0이 있는 숫자를 포함하여 모든 정수(0~9의 숫자로 구성)와 일치합니다. | 20 |
입력: 패턴: 출력: |
단어 | 문자, 숫자 및 밑줄을 포함하여 하나 이상의 단어 문자(\w)로 구성된 전체 단어와 일치합니다. | 20 |
입력: 패턴: 출력: |
NOTSPACE | 공백이 아닌 하나 이상의 문자와 일치합니다. | 5 |
입력: 패턴: 출력: |
SPACE | 0개 이상의 공백 문자와 일치합니다. | 5 |
입력: 패턴: 출력: |
DATA | 아무 문자(줄 바꿈 제외)나 0회 이상 일치하며 번거롭지 않습니다. | 5 |
입력: 패턴: 출력: |
GREEDYDATA | 모든 문자(줄 바꿈 제외)를 0회 이상 일치시킵니다. | 5 |
입력: 패턴: 출력: |
GREEDYDATA_MULTILINE | 모든 문자(줄 바꿈 포함)를 0회 이상 일치시킵니다. | 1 |
입력:
패턴: 출력: |
쿼터드스트링 | 따옴표로 묶인 문자열(단일 따옴표 또는 큰 따옴표)을 이스케이프 처리된 문자와 일치시킵니다. | 20 |
입력: 패턴: 출력: |
UUID | 표준 UUID 형식과 일치합니다. 8개의 16진수 문자, 4개의 16진수 문자로 구성된 3개의 그룹, 12개의 16진수 문자로 끝나고 모두 하이픈으로 구분됩니다. | 20 |
입력: 패턴: 출력: |
URN | URN(Uniform Resource Name) 구문과 일치합니다. | 20 |
입력: 패턴: 출력: |
AWS grok 패턴
패턴 | 설명 | 최대 패턴 제한 | 예제 |
---|---|---|---|
ARN |
파티션( |
5 |
입력: 패턴: 출력: |
네트워킹 grok 패턴
Grok 패턴 | 설명 | 최대 패턴 제한 | 예제 |
---|---|---|---|
CISCOMAC | 4-4-4 16진수 형식의 MAC 주소와 일치합니다. | 20 |
입력: 패턴: 출력: |
WINDOWSMAC | 16진수 형식의 MAC 주소와 하이픈을 일치시킵니다. | 20 |
입력: 패턴: 출력: |
COMMONMAC | 16진수 형식의 MAC 주소와 콜론을 일치시킵니다. | 20 |
입력: 패턴: 출력: |
Mac | CISCOMAC, WINDOWSMAC 또는 COMMONMAC grok 패턴 중 하나와 일치 | 20 |
입력: 패턴: 출력: |
IPV6 | 압축된 양식 및 IPvIPv4-mappedIPv6 주소를 포함한 IPv6 주소와 일치합니다. | 5 |
입력: 패턴: 출력: |
IPV4 | IPv4 주소와 일치합니다. | 20 |
입력: 패턴: 출력: |
IP | %{IPv6IPv6}에서 지원하는 IPv6 주소 또는 %{IPv4}에서 지원하는 IPv4 주소와 일치합니다.IPv4 | 5 |
입력: 패턴: 출력: |
HOSTNAME 또는 HOST | 하위 도메인을 포함한 도메인 이름과 일치합니다. | 5 |
입력: 패턴: 출력: |
IPORHOST | 호스트 이름 또는 IP 주소와 일치합니다. | 5 |
입력: 패턴: 출력: |
호스트포트 | %{IPORHOST} 패턴에서 지원하는 IP 주소 또는 호스트 이름과 콜론 및 포트 번호를 일치시켜 출력에서 포트를 "PORT"로 캡처합니다. | 5 |
입력: 패턴: 출력: |
URIHOST | %{IPORHOST} 패턴에서 지원하는 IP 주소 또는 호스트 이름과 일치하고, 선택적으로 콜론과 포트 번호가 뒤따르며, 포트가 있는 경우 "포트"로 캡처합니다. | 5 |
입력: 패턴: 출력: |
경로 grok 패턴
Grok 패턴 | 설명 | 최대 패턴 제한 | 예제 |
---|---|---|---|
UNIXPATH | 쿼리 파라미터를 포함할 수 있는 URL 경로와 일치합니다. | 20 |
입력: 패턴: 출력: |
WINPATH | Windows 파일 경로와 일치합니다. | 5 |
입력: 패턴: 출력: |
PATH | URL 또는 Windows 파일 경로와 일치 | 5 |
입력: 패턴: 출력: |
TTY | 터미널 및 의사 터미널의 Unix 디바이스 경로와 일치합니다. | 20 |
입력: 패턴: 출력: |
URIPROTO | 문자와 일치하며, 선택적으로 뒤에 더하기(+) 문자와 추가 문자 또는 더하기(+) 문자가 옵니다. | 20 |
입력: 패턴: 출력: |
URIPATH | URI의 경로 구성 요소와 일치합니다. | 20 |
입력: 패턴: 출력: |
URIPARAM | URL 쿼리 파라미터와 일치 | 5 |
입력: 패턴: 출력: |
URIPATHPARAM | 선택적으로 쿼리 파라미터 뒤에 오는 URI 경로와 일치합니다. | 5 |
입력: 패턴: 출력: |
URI | 전체 URI와 일치 | 5 |
입력: 패턴: 출력: |
날짜 및 시간 Grok 패턴
Grok 패턴 | 설명 | 최대 패턴 제한 | 예제 |
---|---|---|---|
MONTH | 전체 또는 축약된 영어 월 이름을 전체 단어로 일치시킵니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
월 | 1에서 12까지의 월 수와 일치하며, 한 자릿수 월의 경우 선택 사항으로 앞에 0이 표시됩니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
MONTHNUM2 | 01부터 12까지의 두 자리 월 숫자와 일치합니다. | 20 |
입력: 패턴: 출력: |
월요일 | 1에서 31까지의 일과 일치하며, 선택 사항으로 앞에 0이 표시됩니다. | 20 |
입력: 패턴: 출력: |
YEAR | 연도를 2자리 또는 4자리로 일치시킵니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
DAY | 전체 또는 축약된 일 이름과 일치합니다. | 20 |
입력: 패턴: 출력: |
시간 | 24시간 형식의 시간을 선택 사항인 선행 0(0)0-23과 일치시킵니다. | 20 |
입력: 패턴: 출력: |
분 | 분(00~59)과 일치합니다. | 20 |
입력: 패턴: 출력: |
SECOND | 초(0)0~60을 나타내는 숫자와 일치하고, 선택적으로 그 뒤에 소수점 또는 콜론과 소수 분에 대한 하나 이상의 숫자가 옵니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: 입력: 패턴: 출력: |
TIME | 시간 형식을 (H)H:mm:(s) 형식의 시간, 분 및 초와 일치시킵니다. 초에는 윤초(0)0~60이 포함됩니다. | 20 |
입력: 패턴: 출력: |
날짜_미국 | (M)M/(d)d/(yy)yy 또는 (M)M-(d)d-(yy)yy 형식의 날짜와 일치합니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
DATE_EU | (d)d/(M)M/(yy)yy, (d)d-(M)M-(yy)yy 또는 (d)d.( 형식의 날짜와 일치합니다.M)M.(yy)yy. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
ISO8601_TIMEZONE | UTC 오프셋 'Z' 또는 시간대 오프셋을 [+-](H)H(:)mm 형식의 선택적 콜론과 일치시킵니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: 입력: 패턴: 출력: |
ISO8601_SECOND | 초(0)0~60을 나타내는 숫자와 일치하고, 선택적으로 그 뒤에 소수점 또는 콜론과 소수 초에 대한 하나 이상의 숫자가 옵니다. | 20 |
입력: 패턴: 출력: |
TIMESTAMP_ISO8601 | ISO8601 날짜/시간 형식(yy)yy-(M)M-(d)dT(H)H:mm:((s))(Z|[+-](H)H:mm)과 선택적 초 및 시간대를 일치시킵니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: 입력: 패턴: 출력: |
날짜 | %{DATE_US}를 사용하는 미국 형식 또는 %{DATE_EU}를 사용하는 EU 형식의 날짜와 일치합니다. | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
DATESTAMP | 공백 또는 하이픈으로 구분된 %{DATE} 다음에 %{TIME} 패턴이 일치합니다. | 20 |
입력: 패턴: 출력: |
TZ | 공통 시간대 약어(PST, PDT, MST, MDT, CST CDT, EST, EDT, UTC)와 일치합니다. | 20 |
입력: 패턴: 출력: |
DATESTAMP_RFC822 | 형식의 날짜 및 시간 일치: Day MonthName (D)D (YY)YY (H)H:mm:(s)s 시간대 | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
DATESTAMP_RFC2822 | RFC2822 날짜-시간 형식과 일치: 일, (d)d MonthName (yy)yy (H)H:mm:(s)s Z|[+-](H)H:mm | 20 |
입력: 패턴: 출력: 입력: 패턴: 출력: |
DATESTAMP_OTHER | 날짜 및 시간을 형식으로 일치시킵니다. Day MonthName (d)d (H)H:mm:(s)s 시간대 (yy)yy | 20 |
입력: 패턴: 출력: |
DATESTAMP_EVENTLOG | 구분자가 없는 압축 날짜/시간 형식과 일치: (yy)yyMM(d)d(H)Hmm(s)s | 20 |
입력: 패턴: 출력: |
로그 grok 패턴
Grok 패턴 | 설명 | 최대 패턴 제한 | 예제 |
---|---|---|---|
LOGLEVEL | , Alert/ALERT , , , , Trace/TRACE , , , , Debug/DEBUG , , Notice/NOTICE 를 포함하여 다양한 대문자 및 약어의 표준 로그 수준과 일치합니다Info/INFO Warn/Warning/WARN/WARNING Err/Error/ERR/ERROR Crit/Critical/CRIT/CRITICAL Fatal/FATAL . Severe/SEVERE Emerg/Emergency/EMERG/EMERGENCY |
20 |
입력: 패턴: 출력: |
HTTPDATE | 로그 파일에 자주 사용되는 날짜 및 시간 형식과 일치합니다. 형식: (d)d/MonthName/(yy)yy:(H)H:mm:(s)s 시간대 MonthName: 전체 또는 축약된 영어 월 이름과 일치(예: "Jan" 또는 "January") 시간대: %{INT} grok 패턴과 일치 | 20 |
입력: 패턴: 출력: |
SYSLOGTIMESTAMP | MonthName (d)d (H)H:mm:(s)s MonthName과 날짜 형식 일치: 전체 또는 약어 영어 월 이름 일치(예: "Jan" 또는 "January") | 20 |
입력: 패턴: 출력: |
PROG | 문자열, 숫자, 점, 밑줄, 슬래시, 백분율 기호 및 하이픈 문자로 구성된 프로그램 이름과 일치합니다. | 20 |
입력: 패턴: 출력: |
SYSLOGPROG | PROG grok 패턴 다음에 대괄호 안의 프로세스 ID를 선택적으로 일치시킵니다. | 20 |
입력: 패턴: 출력: |
SYSLOGHOST | %{HOST} 또는 %{IP} 패턴과 일치합니다. | 5 |
입력: 패턴: 출력: |
SYSLOGFACILITY | syslog 우선 순위를 십진수 형식으로 일치시킵니다. 값은 각진 대괄호(<>)로 묶어야 합니다. | 20 |
입력: 패턴: 출력: |
일반적인 로그 grok 패턴
사전 정의된 사용자 지정 grok 패턴을 사용하여 Apache, NGINX 및 Syslog Protocol(RFC 5424) 로그 형식을 일치시킬 수 있습니다. 이러한 특정 패턴을 사용하는 경우 해당 패턴은 일치하는 구성의 첫 번째 패턴이어야 하며 다른 패턴보다 우선할 수 없습니다. 또한 정확히 하나의 데이터로만 추적할 수 있습니다. GREEDYDATA 또는 GREEDYDATA_MULTILINE 패턴.
Grok 패턴 | 설명 | 최대 패턴 제한 |
---|---|---|
APACHE_ACCESS_LOG |
Apache 액세스 로그와 일치 |
1 |
NGINX_ACCESS_LOG |
NGINX 액세스 로그와 일치 |
1 |
SYSLOG5424 |
Syslog 프로토콜(RFC 5424) 로그와 일치 |
1 |
다음은 이러한 일반적인 로그 형식 패턴을 사용하기 위한 유효한 예제와 잘못된 예제입니다.
"%{NGINX_ACCESS_LOG} %{DATA}" // Valid "%{SYSLOG5424}%{DATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{GREEDYDATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{SYSLOG5424}" // Invalid (multiple common log patterns used) "%{NGINX_ACCESS_LOG} %{NUMBER:num}" // Invalid (Only GREEDYDATA and DATA patterns are supported with common log patterns) "%{GREEDYDATA:logMsg} %{SYSLOG5424}" // Invalid (GREEDYDATA and DATA patterns are supported only after common log patterns)
일반적인 로그 형식 예제
Apache 로그 예제
샘플 로그:
127.0.0.1 - - [03/Aug/2023:12:34:56 +0000] "GET /page.html HTTP/1.1" 200 1234
변환기:
[ { "grok": { "match": "%{APACHE_ACCESS_LOG}" } } ]
출력:
{ "request": "/page.html", "http_method": "GET", "status_code": 200, "http_version": "1.1", "response_size": 1234, "remote_host": "127.0.0.1", "timestamp": "2023-08-03T12:34:56Z" }
NGINX 로그 예제
샘플 로그:
192.168.1.100 - Foo [03/Aug/2023:12:34:56 +0000] "GET /account/login.html HTTP/1.1" 200 42 "https://www.amazon.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
변환기:
[ { "grok": { "match": "%{NGINX_ACCESS_LOG}" } } ]
출력:
{ "request": "/account/login.html", "referrer": "https://www.amazon.com/", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", "http_method": "GET", "status_code": 200, "auth_user": "Foo", "http_version": "1.1", "response_size": 42, "remote_host": "192.168.1.100", "timestamp": "2023-08-03T12:34:56Z" }
Syslog 프로토콜(RFC 5424) 로그 예제
샘플 로그:
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource= "Application" eventID="1011"][examplePriority@32473 class="high"]
변환기:
[ { "grok": { "match": "%{SYSLOG5424}" } } ]
출력:
{ "pri": 165, "version": 1, "timestamp": "2003-10-11T22:14:15.003Z", "hostname": "mymachine.example.com", "app": "evntslog", "msg_id": "ID47", "structured_data": "exampleSDID@32473 iut=\"3\" eventSource= \"Application\" eventID=\"1011\"", "message": "[examplePriority@32473 class=\"high\"]" }
parseToOCSF
parseToOCSF 프로세서는 로그를 OCSF(Open Cybersecurity Schema Framework)
원래 @message
콘텐츠는 변경되지 않으며 새 키가 메시지에 추가됩니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
eventSource |
이 프로세서로 변환할 로그 이벤트를 생성하는 서비스 또는 프로세스입니다. 유효한 값은 다음과 같습니다.
|
예 |
- |
- |
ocsfVersion |
변환된 로그 이벤트에 사용할 OCSF 스키마의 버전입니다. 현재 지원되는 유일한 값은 입니다. V1.1 |
예 |
|
- |
예제
다음 예시에서는 Amazon VPC 흐름 로그를 OCSF 형식으로 변환합니다.
[ "parseToOCSF": { eventSource: "VPCFlow", version: "V1.1" } ]
csv
csv 프로세서는 로그 이벤트에서 쉼표로 구분된 값(CSV)을 열로 구문 분석합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
source |
구문 분석할 로그 이벤트의 필드 경로 |
아니요 |
|
최대 길이: 128 최대 중첩 키 깊이: 3 |
delimiter |
원래 쉼표로 구분된 값 로그 이벤트에서 각 열을 구분하는 데 사용되는 문자입니다. |
아니요 |
|
최대 길이: 1 |
quoteCharacter |
단일 데이터 열에 대한 텍스트 한정자로 사용되는 문자 |
아니요 |
|
최대 길이: 1 |
columns |
변환된 로그 이벤트의 열에 사용할 이름 목록입니다. |
아니요 |
|
최대 CSV 열: 100 최대 길이: 128 최대 중첩 키 깊이: 3 |
예제
수집된 로그 이벤트의 일부가 다음과 같다고 가정해 보겠습니다.
'Akua Mansa',28,'New York, USA'
csv 프로세서만 사용한다고 가정해 보겠습니다.
[ "csv": { "delimiter": ",", "quoteCharacter": ":"" } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "column_1": "Akua Mansa", "column_2": "28", "column_3": "New York: USA" }
parseKeyValue
parseKeyValue 프로세서를 사용하여 지정된 필드를 키-값 페어로 구문 분석합니다. 다음 옵션을 사용하여 필드 정보를 구문 분석하도록 프로세서를 사용자 지정할 수 있습니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
source |
구문 분석할 로그 이벤트의 필드 경로 |
아니요 |
|
최대 길이: 128 최대 중첩 키 깊이: 3 |
destination |
추출된 키-값 페어를 넣을 대상 필드입니다. |
아니요 |
최대 길이: 128 |
|
fieldDelimiter |
원래 로그 이벤트의 키-값 페어 간에 사용되는 필드 구분 기호 문자열입니다. |
아니요 |
|
최대 길이: 128 |
keyValueDelimiter |
변환된 로그 이벤트의 각 페어에서 키와 값 사이에 사용할 구분 기호 문자열입니다. |
아니요 |
|
최대 길이: 128 |
nonMatchValue |
키-값 페어가 성공적으로 분할되지 않은 경우 결과의 값 필드에 삽입할 값입니다. |
아니요 |
최대 길이: 128 |
|
keyPrefix |
변환된 모든 키에 접두사를 추가하려면 여기에 지정합니다. |
아니요 |
최대 길이: 128 |
|
overwriteIfExists |
대상 키가 이미 있는 경우 값을 덮어쓸지 여부 |
아니요 |
|
예제
다음 예제 로그 이벤트를 예로 들어 보겠습니다.
key1:value1!key2:value2!key3:value3!key4
다음 프로세서 구성을 사용한다고 가정해 보겠습니다.
[ { "parseKeyValue": { "destination": "new_key", "fieldDelimiter": "!", "keyValueDelimiter": ":", "nonMatchValue": "defaultValue", "keyPrefix": "parsed_" } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "new_key": { "parsed_key1": "value1", "parsed_key2": "value2", "parsed_key3": "value3", "parsed_key4": "defaultValue" } }
AWS 벤딩 로그용 기본 제공 프로세서
parseWAF
이 프로세서를 사용하여 AWS WAF 벤딩된 로그를 구문 분석합니다. 각 헤더 이름에서의 콘텐츠를 가져httpRequest.headers
와서 해당 값과 함께 JSON 키를 생성합니다. 또한에 대해서도 동일한 작업을 수행합니다labels
. 이러한 변환을 통해 AWS WAF 로그를 훨씬 쉽게 쿼리할 수 있습니다. AWS WAF 로그 형식에 대한 자세한 내용은 웹 ACL 트래픽에 대한 로그 예제를 참조하세요.
이 프로세서는 만 입력@message
으로 허용합니다.
중요
이 프로세서를 사용하는 경우 변환기의 첫 번째 프로세서여야 합니다.
예제
다음 예제 로그 이벤트를 예로 들어 보겠습니다.
{ "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [], "httpRequest": { "clientIp": "1.1.1.1", "country": "AU", "headers": [ { "name": "Host", "value": "localhost:1989" }, { "name": "User-Agent", "value": "curl/7.61.1" }, { "name": "Accept", "value": "*/*" }, { "name": "x-stm-test", "value": "10 AND 1=1" } ], "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": [{ "name": "value" }] }
프로세서 구성은 다음과 같습니다.
[ { "parseWAF": {} } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "httpRequest": { "headers": { "Host": "localhost:1989", "User-Agent": "curl/7.61.1", "Accept": "*/*", "x-stm-test": "10 AND 1=1" }, "clientIp": "1.1.1.1", "country": "AU", "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": { "name": "value" }, "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [] }
parsePostgres
이 프로세서를 사용하여 Amazon RDS for PostgreSQL 벤딩된 로그를 구문 분석하고, 필드를 추출하고, JSON 형식으로 변환합니다. RDS for PostgreSQL 로그 형식에 대한 자세한 내용은 RDS for PostgreSQL 데이터베이스 로그 파일을 참조하세요.
이 프로세서는 만 입력@message
으로 허용합니다.
중요
이 프로세서를 사용하는 경우 변환기의 첫 번째 프로세서여야 합니다.
예제
다음은 로그 이벤트의 예입니다.
2019-03-10 03:54:59 UTC:10.0.0.123(52834):postgres@logtestdb:[20175]:ERROR: column "wrong_column_name" does not exist at character 8
프로세서 구성은 다음과 같습니다.
[ { "parsePostgres": {} } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "logTime": "2019-03-10 03:54:59 UTC", "srcIp": "10.0.0.123(52834)", "userName": "postgres", "dbName": "logtestdb", "processId": "20175", "logLevel": "ERROR" }
parseCloudfront
이 프로세서를 사용하여 Amazon CloudFront 벤딩된 로그를 구문 분석하고, 필드를 추출하고, JSON 형식으로 변환합니다. 인코딩된 필드 값은 디코딩됩니다. 정수 및 2배인 값은 이와 같이 처리됩니다. Amazon CloudFront 로그 형식에 대한 자세한 내용은 표준 로그(액세스 로그) 구성 및 사용을 참조하세요.
이 프로세서는 만 입력@message
으로 허용합니다.
중요
이 프로세서를 사용하는 경우 변환기의 첫 번째 프로세서여야 합니다.
예제
다음은 로그 이벤트의 예입니다.
2019-12-04 21:02:31 LAX1 392 192.0.2.24 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - -
프로세서 구성은 다음과 같습니다.
[ { "parseCloudfront": {} } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "date": "2019-12-04", "time": "21:02:31", "x-edge-location": "LAX1", "sc-bytes": 392, "c-ip": "192.0.2.24", "cs-method": "GET", "cs(Host)": "d111111abcdef8.cloudfront.net", "cs-uri-stem": "/index.html", "sc-status": 200, "cs(Referer)": "-", "cs(User-Agent)": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "cs-uri-query": "-", "cs(Cookie)": "-", "x-edge-result-type": "Hit", "x-edge-request-id": "SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==", "x-host-header": "d111111abcdef8.cloudfront.net", "cs-protocol": "https", "cs-bytes": 23, "time-taken": 0.001, "x-forwarded-for": "-", "ssl-protocol": "TLSv1.2", "ssl-cipher": "ECDHE-RSA-AES128-GCM-SHA256", "x-edge-response-result-type": "Hit", "cs-protocol-version": "HTTP/2.0", "fle-status": "-", "fle-encrypted-fields": "-", "c-port": 11040, "time-to-first-byte": 0.001, "x-edge-detailed-result-type": "Hit", "sc-content-type": "text/html", "sc-content-len": 78, "sc-range-start": "-", "sc-range-end": "-" }
parseRoute53
이 프로세서를 사용하여 Amazon Route 53 Public Data Plane 벤딩된 로그를 구문 분석하고 필드를 추출한 다음 JSON 형식으로 변환합니다. 인코딩된 필드 값은 디코딩됩니다. 이 프로세서는 Amazon Route 53 Resolver 로그를 지원하지 않습니다.
이 프로세서는 만 입력@message
으로 허용합니다.
중요
이 프로세서를 사용하는 경우 변환기의 첫 번째 프로세서여야 합니다.
예제
다음은 로그 이벤트의 예입니다.
1.0 2017-12-13T08:15:50.235Z Z123412341234 example.com AAAA NOERROR TCP IAD12 192.0.2.0 198.51.100.0/24
프로세서 구성은 다음과 같습니다.
[ { "parseRoute53": {} } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "version": 1.0, "queryTimestamp": "2017-12-13T08:15:50.235Z", "hostZoneId": "Z123412341234", "queryName": "example.com", "queryType": "AAAA", "responseCode": "NOERROR", "protocol": "TCP", "edgeLocation": "IAD12", "resolverIp": "192.0.2.0", "ednsClientSubnet": "198.51.100.0/24" }
parseVPC
이 프로세서를 사용하여 Amazon VPC 벤딩 로그를 구문 분석하고, 필드를 추출하고, JSON 형식으로 변환합니다. 인코딩된 필드 값은 디코딩됩니다.
이 프로세서는 만 입력@message
으로 허용합니다.
중요
이 프로세서를 사용하는 경우 변환기의 첫 번째 프로세서여야 합니다.
예제
다음은 로그 이벤트의 예입니다.
2 123456789010 eni-abc123de 192.0.2.0 192.0.2.24 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
프로세서 구성은 다음과 같습니다.
[ { "parseVPC": {} } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "version": 2, "accountId": "123456789010", "interfaceId": "eni-abc123de", "srcAddr": "192.0.2.0", "dstAddr": "192.0.2.24", "srcPort": 20641, "dstPort": 22, "protocol": 6, "packets": 20, "bytes": 4249, "start": 1418530010, "end": 1418530070, "action": "ACCEPT", "logStatus": "OK" }
문자열 변형 프로세서
lowerCaseString
lowerCaseString
프로세서는 문자열을 소문자 버전으로 변환합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
withKeys |
소문자로 변환할 키 목록 |
예 |
최대 항목: 10 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "INNER_VALUE" } }
변환기 구성은 parseJSON
와 lowerCaseString
함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "lowerCaseString": { "withKeys":["outer_key.inner_key"] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": "inner_value" } }
upperCaseString
upperCaseString
프로세서는 문자열을 대문자 버전으로 변환합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
withKeys |
대문자로 변환할 키 목록 |
예 |
최대 항목: 10 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "inner_value" } }
변환기 구성은 upperCaseString
와 함께를 사용하는 경우 parseJSON
다음과 같습니다.
[ { "parseJSON": {} }, { "upperCaseString": { "withKeys":["outer_key.inner_key"] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": "INNER_VALUE" } }
splitString
splitString
프로세서는 구분 문자를 사용하여 필드를 배열로 분할하는 문자열 변형 프로세서의 한 유형입니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 source 및 delimiter 필드가 포함되어야 합니다. |
예 |
최대 항목: 10 |
|
source |
분할할 필드 값의 키입니다. |
예 |
최대 길이: 128 |
|
delimiter |
필드 값을 분할할 구분 기호 문자열입니다. |
예 |
최대 길이: 128 |
예시 1
다음은 로그 이벤트의 예입니다.
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
변환기 구성은 splitString
와 함께를 사용하여 parseJSON
다음과 같습니다.
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": [ "inner", "value" ] } }
예시 2
문자열을 분할할 구분 기호는 여러 문자일 수 있습니다.
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "item1, item2, item3" } }
변환기 구성은 다음과 같습니다.
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": ", " } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": [ "item1", "item2", "item3" ] } }
substituteString
substituteString
프로세서는 키 값을 정규식과 일치시키고 모든 일치 항목을 대체 문자열로 대체하는 문자열 변형 프로세서의 한 유형입니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 source , from 및 to 필드가 포함되어야 합니다. |
예 |
최대 항목: 10 |
|
source |
수정할 필드의 키입니다. |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
from |
대체할 정규식 문자열입니다. 큰따옴표를 사용할 때는 \\를 사용하고 작은따옴표를 사용하거나에서 구성할 때는 \를 사용하여 [ 및 ]와 같은 특수 정규식 문자를 이스케이프 처리해야 합니다 AWS Management Console. 자세한 내용은 Oracle 웹 사이트의 클래스 패턴을 에서 패턴을 래핑 |
예 |
최대 길이: 128 |
|
아래로 변경합니다. |
캡처 그룹에 대한 from 역참조의 각 일치 항목으로 대체할 문자열을 사용할 수 있습니다. 와 같이 번호가 매겨진 그룹에는 $n 형식을 사용하고, $$1 와 같은 명명된 그룹에${group_name} 는를 사용합니다{my_group} .> |
예 |
최대 길이: 128 최대 역참조 수: 10 중복된 역참조의 최대 수: 2 |
예시 1
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key1": "[]", "inner_key2": "123-345-567", "inner_key3": "A cat takes a catnap." } }
변환기 구성은와 substituteString
함께를 사용하는 경우 parseJSON
다음과 같습니다.
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "\\[\\]", "to": "value1" }, { "source": "outer_key.inner_key2", "from": "[0-9]{3}-[0-9]{3}-[0-9]{3}", "to": "xxx-xxx-xxx" }, { "source": "outer_key.inner_key3", "from": "cat", "to": "dog" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key1": "value1", "inner_key2": "xxx-xxx-xxx", "inner_key3": "A dog takes a dognap." } }
예시 2
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key1": "Tom, Dick, and Harry", "inner_key2": "arn:aws:sts::123456789012:assumed-role/MyImportantRole/MySession" } }
변환기 구성은와 substituteString
함께를 사용하는 경우 parseJSON
다음과 같습니다.
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "(\w+), (\w+), and (\w+)", "to": "$1 and $3" }, { "source": "outer_key.inner_key2", "from": "^arn:aws:sts::(?P<account_id>\\d{12}):assumed-role/(?P<role_name>[\\w+=,.@-]+)/(?P<role_session_name>[\\w+=,.@-]+)$", "to": "${account_id}:${role_name}:${role_session_name}" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key1": "Tom and Harry", "inner_key2": "123456789012:MyImportantRole:MySession" } }
trimString
trimString
프로세서는 키의 시작과 끝에서 공백을 제거합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
withKeys |
잘라낼 키 목록 |
예 |
최대 항목: 10 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": " inner_value " } }
변환기 구성은 parseJSON
와 trimString
함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "trimString": { "withKeys":["outer_key.inner_key"] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": "inner_value" } }
JSON 변형 프로세서
addKeys
addKeys
프로세서를 사용하여 로그 이벤트에 새 키-값 페어를 추가합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 key , value 및 overwriteIfExists 필드가 포함될 수 있습니다. |
예 |
최대 항목: 5 |
|
키 |
추가할 새 항목의 키 |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
값 |
추가할 새 항목의 값입니다. |
예 |
최대 길이: 256 |
|
overwriteIfExists |
이 값을 로 설정하면 이벤트에 key 이미 있는 경우 true 기존 값을 덮어씁니다. 기본값은 false 입니다. |
아니요 |
false |
제한 없음 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "inner_value" } }
변환기 구성은 parseJSON
와 addKeys
함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "addKeys": { "entries": [ { "source": "outer_key.new_key", "value": "new_value" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": "inner_value", "new_key": "new_value" } }
deleteKeys
deleteKeys
프로세서를 사용하여 로그 이벤트에서 필드를 삭제합니다. 이러한 필드에는 키-값 페어가 포함될 수 있습니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
withKeys |
삭제할 키 목록입니다. |
예 |
제한 없음 |
최대 항목: 5 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "inner_value" } }
변환기 구성은 parseJSON
deleteKeys
와 함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "deleteKeys": { "withKeys":["outer_key.inner_key"] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": {} }
moveKeys
moveKeys
프로세서를 사용하여 한 필드에서 다른 필드로 키를 이동합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 source , target 및 overwriteIfExists 필드가 포함될 수 있습니다. |
예 |
최대 항목: 5 |
|
source |
이동할 키 |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
대상 |
이동할 키 |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
overwriteIfExists |
이 값을 로 설정하면 이벤트에 key 이미 있는 경우 true 기존 값을 덮어씁니다. 기본값은 false 입니다. |
아니요 |
false |
제한 없음 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key1": { "inner_key1": "inner_value1" }, "outer_key2": { "inner_key2": "inner_value2" } }
변환기 구성은 parseJSON
와 moveKeys
함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "moveKeys": { "entries": [ { "source": "outer_key1.inner_key1", "target": "outer_key2" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key1": {}, "outer_key2": { "inner_key2": "inner_value2", "inner_key1": "inner_value1" } }
renameKeys
renameKeys
프로세서를 사용하여 로그 이벤트에서 키의 이름을 바꿉니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 key , target 및 overwriteIfExists 필드가 포함될 수 있습니다. |
예 |
제한 없음 |
최대 항목: 5 |
키 |
이름을 바꿀 키 |
예 |
제한 없음 |
최대 길이: 128 |
대상 |
새 키 이름 |
예 |
제한 없음 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
overwriteIfExists |
이 값을 로 설정하면 이벤트에 key 이미 있는 경우 true 기존 값을 덮어씁니다. 기본값은 false 입니다. |
아니요 |
false |
제한 없음 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "inner_value" } }
변환기 구성은 parseJSON
와 renameKeys
함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "renameKeys": { "entries": [ { "key": "outer_key", "target": "new_key" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "new_key": { "inner_key": "inner_value" } }
copyValue
copyValue
프로세서를 사용하여 로그 이벤트 내에서 값을 복사합니다. 또한이 프로세서를 사용하여 , , @logGroupName
, 등의 메타데이터 키 값을 로그 이벤트에 복사하여 로그 이벤트에 메타데이터를 추가할 수 있습니다@logGroupStream
@accountId
@regionName
. 이는 다음 예제에 나와 있습니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 source , target 및 overwriteIfExists 필드가 포함될 수 있습니다. |
예 |
최대 항목: 5 |
|
source |
복사할 키 |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
대상 |
값을 복사할 키입니다. |
예 |
제한 없음 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
overwriteIfExists |
이 값을 로 설정하면 이벤트에 key 이미 있는 경우 true 기존 값을 덮어씁니다. 기본값은 false 입니다. |
아니요 |
false |
제한 없음 |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": { "inner_key": "inner_value" } }
와 copyValue
함께를 사용하는 변환기 구성은 parseJSON
다음과 같습니다.
[ { "parseJSON": {} }, { "copyValue": { "entries": [ { "source": "outer_key.new_key", "target": "new_key" }, { "source": "@logGroupName", "target": "log_group_name" }, { "source": "@logGroupStream", "target": "log_group_stream" }, { "source": "@accountId", "target": "account_id" }, { "source": "@regionName", "target": "region_name" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": { "inner_key": "inner_value" }, "new_key": "inner_value", "log_group_name": "myLogGroupName", "log_group_stream": "myLogStreamName", "account_id": "012345678912", "region_name": "us-east-1" }
listToMap
listToMap
프로세서는 키 필드가 포함된 객체 목록을 가져와 대상 키 맵으로 변환합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
source |
맵으로 변환될 객체 목록이 있는 ProcessingEvent의 키 |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
키 |
생성된 맵에서 키로 추출할 필드의 키 |
예 |
최대 길이: 128 |
|
valueKey |
이렇게 지정하면이 파라미터에서 지정하는 값이 source 객체에서 추출되어 생성된 맵의 값에 추가됩니다. 그렇지 않으면 소스 목록의 원본 객체가 생성된 맵의 값에 추가됩니다. |
아니요 |
최대 길이: 128 |
|
대상 |
생성된 맵을 포함할 필드의 키입니다. |
아니요 |
루트 노드 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
flatten |
목록을 단일 항목으로 평면화할지 또는 생성된 맵의 값을 나열할지를 나타내는 부울 값입니다. 기본적으로 일치하는 키의 값은 배열로 표시됩니다. 값을 기반으로 배열을 단일 값으로 변환 |
아니요 |
false |
|
flattenedElement |
flatten 를 로 설정한 경우 flattenedElement 를 true 사용하여 유지할 요소 first 또는 last 를 지정합니다. |
|
값은 first 또는 만 가능합니다. last |
예제
다음은 로그 이벤트의 예입니다.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ] }
사용 사례 1용 변환기:는 flatten
입니다. false
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": false } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": [ "val-a" ], "b": [ "val-b1", "val-b2" ], "c": [ "val-c" ] }
사용 사례 2용 변환기: flatten
는 true
이고는 flattenedElement
입니다. first
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "first" } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b1", "c": "val-c" }
사용 사례 3용 변환기: flatten
는 true
이고는 flattenedElement
입니다. last
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "last" } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b2", "c": "val-c" }
데이터 형식 변환기 프로세서
typeConverter
typeConverter
프로세서를 사용하여 지정된 키와 연결된 값 유형을 지정된 유형으로 변환합니다. 지정된 필드의 유형을 변경하는 캐스팅 프로세서입니다. 값은 integer
, double
string
및 데이터 유형 중 하나로 변환할 수 있습니다boolean
.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
항목 |
항목의 배열입니다. 배열의 각 항목에는 key 및 type 필드가 포함되어야 합니다. |
예 |
최대 항목: 10 |
|
키 |
다른 유형으로 변환할 값이 있는 키 |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
type |
변환할 유형입니다. 유효한 값은 integer , double , string , boolean 입니다. |
예 |
예제
다음은 로그 이벤트의 예입니다.
{ "name": "value", "status": "200" }
변환기 구성은 typeConverter
와 함께를 사용하여 parseJSON
다음과 같습니다.
[ { "parseJSON": {} }, { "typeConverter": { "entries": [ { "key": "status", "type": "integer" } ] } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "name": "value", "status": 200 }
datetimeConverter
datetimeConverter
프로세서를 사용하여 날짜/시간 문자열을 지정한 형식으로 변환합니다.
필드 | 설명 | 필수? | Default | Limits |
---|---|---|---|---|
source |
날짜 변환을 적용할 키입니다. |
예 |
최대 항목: 10 |
|
matchPatterns |
source 필드와 일치시킬 패턴 목록 |
예 |
최대 항목: 5 |
|
대상 |
결과를 저장할 JSON 필드입니다. |
예 |
최대 길이: 128 최대 중첩 키 깊이: 3 |
|
targetFormat |
대상 필드의 변환된 데이터에 사용할 날짜/시간 형식입니다. |
아니요 |
|
최대 길이: 64 |
sourceTimezone |
소스 필드의 시간대입니다. 가능한 값 목록은 Java 지원 영역 ID 및 오프셋을 참조하세요 |
아니요 |
UTC |
최소 길이: 1 |
targetTimezone |
대상 필드의 시간대입니다. 가능한 값 목록은 Java 지원 영역 ID 및 오프셋을 참조하세요 |
아니요 |
UTC |
최소 길이: 1 |
locale |
소스 필드의 로캘입니다. 가능한 값 목록은 예제가 포함된 Java의 Locale getAvailableLocales() 메 |
예 |
최소 길이: 1 |
예제
다음은 로그 이벤트의 예입니다.
{"german_datetime": "Samstag 05. Dezember 1998 11:00:00"}
변환기 구성은 parseJSON
와 dateTimeConverter
함께를 사용하는 경우 다음과 같습니다.
[ { "parseJSON": {} }, { "dateTimeConverter": { "source": "german_datetime", "target": "target_1", "locale": "de", "matchPatterns": ["EEEE dd. MMMM yyyy HH:mm:ss"], "sourceTimezone": "Europe/Berlin", "targetTimezone": "America/New_York", "targetFormat": "yyyy-MM-dd'T'HH:mm:ss z" } } ]
변환된 로그 이벤트는 다음과 같습니다.
{ "german_datetime": "Samstag 05. Dezember 1998 11:00:00", "target_1": "1998-12-05T17:00:00 MEZ" }