바꾸기 규칙을 사용하여 로그 데이터 수정
IBM® Cloud Logs에서 바꾸기 규칙을 사용하여 로그 구조를 변경하거나, 잘못 형식화된 로그를 복구하거나, 로그 심각도를 변경하거나, 정보를 마스크할 수 있습니다.
시작하기 전에
구문 분석 규칙은 규칙 그룹내에서 구성됩니다. 각 그룹에는 이름과 이름 사이에 논리적 관계가 있는 규칙 세트가 있습니다. 로그는 규칙 그룹의 순서에 따라 처리됩니다 (처음부터 끝까지). 그런 다음 규칙 그룹 내에서 규칙의 순서에 따라 처리되고 이들 사이의 논리 연산자 (AND/OR) 에 따라 처리됩니다. 규칙은 로그 데이터를 처리, 구문 분석 및 재구성하여 모니터링 및 분석을 준비하는 데
도움이 됩니다. 자세한 정보는 규칙 그룹에 대한 작업 을 참조하십시오.
바꾸기 규칙 구성
다음 단계를 완료하십시오.
-
데이터 파이프라인 아이콘
> 구문 분석 규칙 을 클릭하고 새 규칙 그룹을 클릭하십시오.
-
세부사항 섹션에서 규칙 그룹 이름 및 규칙 그룹 설명을 입력하십시오.
-
규칙 일치 프로그램 섹션에서 규칙 그룹에 포함된 규칙을 적용할 로그를 정의하는 애플리케이션, 서브시스템 및 심각도를 구성하십시오.
-
규칙 섹션에서 바꾸기
를 선택하십시오.
-
이름을 입력하십시오.
-
선택적으로 설명을 입력하십시오.
-
소스 필드를 선택합니다. RegEx 가 적용되는 필드입니다.
-
대상 필드를 선택합니다. RegEx 표현식을 적용한 결과로 채워질 필드입니다.
-
정규식 (RegEx) 을 입력하십시오.
-
일치하는 RegEx를 대체할 대체 문자열을 입력하십시오.
-
규칙을 사용하려면 상태를 활성 으로 전환하십시오.
-
-
규칙 추가 를 클릭하고 원하는 규칙 유형을 선택하여 추가 규칙 그룹을 추가하십시오. AND/OR 를 토글하여 추가 규칙을 처리할 방법을 선택하십시오.
-
규칙 그룹 만들기를 클릭합니다.
예제: 올바르지 않게 형식화된 JSON 로그 복구
대체 규칙의 일반적인 유스 케이스는 잘못 형식화된 JSON 로그를 복구하는 것입니다.
다음 예에서 JSON 로그는 JSON 형식을 구분하고 이를 구조화되지 않은 로그로 전환하는 날짜 접두부와 함께 전송됩니다.
RegEx 는 하위 문자열을 식별하고 로그에서 올바르지 않은 문자열을 제거합니다.
원래 로그는 다음과 같습니다.
2020-08-07 {“status”:”OK”, “user”:John Smith”, “ops”:”J1”}
RegEx:
.*{
RegEx 표현식 평가 결과를 대체할 문자열은 다음과 같습니다.
{
결과 로그는 다음과 같습니다.
{"status":"OK", "user":"John Smith", "ops":"J1"}
예제: 중첩된 필드를 사용하여 로그 다시 빌드
다음 예제는 대체 규칙을 사용하여 중첩된 필드로 로그를 다시 빌드하는 방법을 보여줍니다. 중첩된 필드는 추출 및 구문 분석 규칙의 제한조건입니다.
원래 로그는 다음과 같습니다.
{"ops":"G1","user":"John Smith-2125 Sierra Ventura Dr.-Sunnyvale-CA-94054","status":"305"}
RegEx:
(.*user"):"([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)",([^$]*)
각 소괄호는 $n n=1..7 에서 주소 지정할 수 있는 캡처 그룹을 나타냅니다.
대체 문자열은 다음과 같습니다.
$1:{"name":"$2","address":"$3","city":"$4","state":"$5","zip":"$6"},$7
결과 로그
{
"ops":"G1",
"User":{
"name":"John Smith",
"address":"2125 Sierra Ventura Dr.",
"city":"Sunnyvale",
"state":"CA",
"Zip":"94054"
},
"status":"305"
}
예: 문자열로 변환된 (이스케이프된) JSON 필드를 오브젝트로 변환
inner_json 규칙은 문자열로 변환 (이스케이프) 된 JSON 로그에서 필드 값을 사용하는 특수 대체 규칙입니다. JSON을 사용하고 이를 오브젝트로 변환합니다.
다음 예제에서 원래 로그는 다음과 같습니다.
{
"server":"opa",
"IBC":"45ML",
"thread":"1201",
"message":"{\"first_name\":\"John\", \"last_name\":\"Smith\", \"userID\":\"AB12345\", \"duration\":45}"
}
필드 메시지에 이스케이프된 올바른 JSON인 문자열 값이 있습니다.
특수 대체 규칙은 필드의 이름을 원래 이름 "message" 에서 "inner_json" 으로 변경합니다.
RegEx:
“message”\s*:\s*”{\s*\\”
이 RegEx 는 이스케이프된 JSON의 시작이 있는 필드 이름 메시지를 식별합니다.
대체 문자열은 다음과 같습니다.
“inner_json”:”{\”
이 예제는 필드 이름만 대체하고 다른 이름은 대체하지 않습니다.
결과 로그는 다음과 같습니다.
{
"server":"opa",
"inner_json":{
"first_name":"John" ,
"last_name":"Smith" ,
"userID":"AB12345" ,
"duration":45
}
}