로그 정규화란?
데이터를 정규 분포에 가깝게 변환하기 위해 로그 변환을 적용하는 과정입니다. 이렇게 하면 데이터의 분포가 더 정상적이 되어 통계 분석을 보다 효과적으로 수행할 수 있습니다.
정규분포란? 데이터를 평균을 중심으로 대칭적으로 분포시키는 확률 분포를 의미합니다. 정규 분포는 종 모양의 곡선으로 나타나며, 평균값을 기준으로 데이터가 고르게 퍼져있습니다.
로그 정규화를 사용하는 이유는 무엇일까요?
로그 정규화를 사용하려는 몇 가지 이유가 있습니다.
- 정규성 유지 : 많은 통계 기법은 데이터가 정규 분포를 따른다고 가정합니다. 로그 정규화는 비정규 분포 데이터를 정규 분포에 가깝게 만들어 분석의 정확성을 높입니다.
- 극단값의 영향 완화 : 데이터에 극단값(outliers)이 있을 때, 로그 변환을 사용하면 이러한 값들의 영향을 줄이고 더 균형 잡힌 분석 결과를 도출할 수 있습니다.
- 해석의 용이성 : 로그 변환은 데이터의 스케일을 줄여 복잡한 값을 보다 직관적으로 해석할 수 있게 합니다. 특히, 값의 범위가 매우 넓을 때 유용합니다.
따라서 정규성을 유지하고 극단값의 영향을 줄이며 데이터를 더 쉽게 해석하기 위해 로그 정규화를 사용합니다.
극단값? 데이터 집합에서 다른 값들과 현저히 차이나는 값으로, (이러한 값은 평균이나 분포를 왜곡시킬 수 있어 통계 분석이나 모델링 등)분석 결과에 큰 영향을 미칠 수 있습니다.
예를 들어, 데이터가 10에서 20사이에 분포해 있는데 갑자기 1000이라는 값이 등장하면 이것이 극단값이다.
극단값을 처리하지 않고 그대로 두면 분석결과에 큰 영향을 미칠 수 있어, 로그 정규화와 같은 방법으로 이 값을 다루는 것이 필요합니다.
수집
수집 기능은 데이터 원천으로부터 데이터를 수집하는 기능과 수집된 데이터를 정규화하는 기능으로 구성됩니다. 이 장에서 설명하는 수집 기능은 다음과 같습니다.
- 배경지식 : 사용자가 수집 기능에 대해 알아야 할 배경지식
- 수집기 : 데이터 원천으로부터 데이터를 수집하는 수집기 관리 기능
- 파서 : 수신한 데이터에서 필드를 추출하는 파서 관리 기능
- 로그 스키마 : 로그의 정규화에 적용할 로그 스키마 관리 기능
- 수집 모델 : 데이터의 수집부터 정규화에 이르는 데이터 처리 모델 관리 기능
배경지식
데이터 수집/처리 과정
로그프레소 소나가 다루는 데이터의 최소 단위는 레코드입니다. 레코드는 "하나의 완결된 논리적 단위로서의 기록"을 의미합니다. 예를 들어, 방화벽이나 웹 서버의 로그 한 줄, 시스로그 메시지 한 줄, SNMP 트랩 메시지 한 줄, 관계형 데이터베이스 테이블에 저장된 하나의 행, 몽고DB 컬렉션에 저장된 하나의 문서, PCAP 장치를 통해 수집된 파일에서 확인할 수 있는 하나의 패킷, 외부 REST API를 호출하고 응답으로 받은 JSON 객체 등이 로그프레소 소나가 다루는 "레코드"입니다.
수집 메뉴를 훑어보면 수집기, 파서, 로그 스키마, 수집 모델로 구성되어 있습니다. 앱을 설치하면 데이터 원천에서 데이터를 수집해서 처리하는데 필요한 파서, 로그 스키마, 수집 모델이 제공되므로 관리자가 수집기만 구성하면 동작하는 데에는 아무 문제가 없습니다. 그러나 각 기능들이 수행하는 동작과 상호관계를 이해해야 수집 기능을 제대로 이해하고 활용할 수 있습니다.
1. 데이터 원천이 보낸 데이터를 수집기가 받거나, 수집기가 주기적으로 직접 데이터 원천에 접속해 데이터를 수집합니다.
- 그림에서 화살표는 TCP/IP 또는 애플리케이션 수준에서 통신의 방향을 의미합니다.
2. 수집 모델에 정의된 파서를 이용해 원본 데이터를 레코드 단위로 식별하고, 각 레코드에서 필드를 식별하고 추출합니다.
3. 수집모델에 정규화 규칙이 있는 경우, 파서를 통해 추출된 필드와 필드 값을 로그 스키마의 필드 이름과 유형에 맞게 변환합니다.
4. 정규화된 레코드를 테이블에 저장합니다. 이 때 저장되는 레코드는 정규화된 필드와 원본 로그를 모두 포함하고 있습니다.
이러한 일련의 데이터 처리 과정은 일관된 정책을 수립하고 데이터를 분석하는데 꼭 필요한 절차입니다. 이기종 장비에서 발생하는 로그는 각각 다른 형식으로 구성되지만, 공통된 속성을 가지고 있으므로 필드 정규화를 통해서 정책 설정 및 분석을 단순화할 수 있습니다. 예를 들어, 이기종 방화벽의 로그는 모두 형식이 다르지만, 동일한 필드 이름으로 정규화해두면 전체 방화벽을 대상으로 출발지IP 주소에 대해 주소 그룹에 구성해둔 차단 목록과 대조할 수 있습니다.
수집기
수집기는 데이터를 어떻게 수집할지 수집 모델에서 정하고, 그 방식에 따라 데이터를 수집하는 역할을 합니다.
수집기는 다양한 데이터 소스로부터 정보를 가져오는 장치로, 수집 모델에 정의된 방식에 따라 데이터를 수집합니다. 데이터 소스는 웹 서버, 파일 서버, 데이터베이스, 네트워크 보안 기기 등 다양한 형태일 수 있습니다. 수집 방식은 패시브와 액티브로 구분되는데, 패시브 방식은 수집기가 수신 포트를 열고 데이터를 자동으로 받는 방식이고, 액티브 방식은 수집기가 일정한 주기나 스케줄에 따라 데이터를 직접 요청해서 가져오는 방식입니다. 예를 들어, Syslog나 SNMP Trap은 패시브 방식으로 데이터를 받고, FTP나 REST API 같은 프로토콜은 액티브 방식으로 데이터를 수집합니다. 이를 통해 로그프레소 소나에서 다양한 데이터 원천으로부터 수집된 데이터를 분석하고 관리할 수 있습니다.
파서
원본 레코드의 보존
파서는 원본 레코드를 보존하도록 구성되어 있습니다. 원본을 가공하는 것이 아니라, 원본에서 필드를 식별하고 추출해 별도의 필드를 생성합니다. 로그프레소 쿼리문에서 원본 레코드는 보통 line 필드에 출력됩니다.
앱파서
대부분의 파서는 앱을 설치할 때 함께 제공됩니다. 연동 대상 시스템으로부터 수집된 데이터에서 필드를 추출하는데 필요한 모든 설정이 되어 있으므로 별도로 설정할 옵션이 있는 경우가 드뭅니다.
(앱 파서를 수정하거나 삭제할 경우 앱 동작에 문제가 발생할 수 있음)
기본파서
클러스터 관리자가 추가하여 정의해 사용할 수 있는 파서들입니다.
로그스키마
로그 스키마는 서로 다른 이기종 로그를 정규화하기 위해 필드 이름을 표준화하고 형식을 정의하는 기준으로 다음과 같은 기능을 수행합니다.
- 필드 이름 표준화 : 여러 파서가 추출한 필드 이름을 일관되게 맞춤
- 형식 정의 : 사용 목적에 따라 필드를 재구성하고 정렬하는 형식 설정
- 값 할당 : 비어있는 필드에 원본 레코드에서 추출한 값을 할당
로그 스키마는 기본 스키마와 앱 스키마로 나뉘며, 기본 스키마는 일반적인 이기종 로그를 정규화하는데 사용되고, 앱 스키마는 원천 데이터의 고유 필드를 포함한 로그 정규화에 활용됩니다.
수집모델
로그프레소의 수집 모델은 로그 스키마에 기반한 정규화 규칙을 제공하여 원본 데이터를 효과적으로 수집하고 표준화된 로그로 일관되게 관리 및 분석할 수 있도록 설계된 전체 절차입니다.
로그프레소의 수집 모델은 데이터 수집부터 정규화까지의 전 과정을 체계적으로 정의하는 로드맵입니다. 주요 기능은 아래와 같습니다.
- 데이터 수집 방식 정의 : 원본 데이터를 수집기가 어떻게 수집할지 결정합니다.
- 파싱 설정 : 로그 데이터가 구조화되지 않은 경우, 파서를 통해 필드를 추출합니다. 구조화된 데이터는 별도의 파싱없이 처리됩니다.
- 정규화 규칙 제공 : 로그 스키마에 따라 데이터를 표준화하며, MECE 원칙을 적용하여 다양한 로그 유형을 포괄적으로 처리합니다.
- 예외 처리 : 로그 형식 변경이나 파싱 오류 시, 해당 로그 레코드를 보존할 수 있는 규칙을 포함합니다.
이러한 수집 모델을 통해 로그프레소는 다양한 이기종 데이터를 일관되게 관리하고 분석할 수 있습니다.
'LOGPRESSO > 로그프레소' 카테고리의 다른 글
[로그프레소]/[JAVA] ZGC 기본 개념 알아보기 (0) | 2024.12.12 |
---|
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!