KR20170047856A - 로그 데이터 분석 방법 및 장치 - Google Patents

로그 데이터 분석 방법 및 장치 Download PDF

Info

Publication number
KR20170047856A
KR20170047856A KR1020150148452A KR20150148452A KR20170047856A KR 20170047856 A KR20170047856 A KR 20170047856A KR 1020150148452 A KR1020150148452 A KR 1020150148452A KR 20150148452 A KR20150148452 A KR 20150148452A KR 20170047856 A KR20170047856 A KR 20170047856A
Authority
KR
South Korea
Prior art keywords
data
log
log data
type
key
Prior art date
Application number
KR1020150148452A
Other languages
English (en)
Other versions
KR102461022B1 (ko
Inventor
허제민
Original Assignee
에스케이플래닛 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이플래닛 주식회사 filed Critical 에스케이플래닛 주식회사
Priority to KR1020150148452A priority Critical patent/KR102461022B1/ko
Publication of KR20170047856A publication Critical patent/KR20170047856A/ko
Application granted granted Critical
Publication of KR102461022B1 publication Critical patent/KR102461022B1/ko

Links

Images

Classifications

    • G06F17/30185
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • G06F17/30318
    • G06F17/30598

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 로그 데이터 분석 방법 및 장치에 관한 것으로서, 더욱 상세하게는 입력되는 로그 데이터의 키(Key)를 데이터 타입(Type)에 따라 통계치를 산출함으로써, 데이터가 입력될 때마다 각 키에 따른 통계치를 산출하여 출력하는 방법 및 장치에 관한 것이다.
본 발명에 따르면, 입력되는 로그 데이터의 로그 포맷을 인지하여 파싱하고, 상기 파싱된 로그 데이터를 키에 따라 분류하며, 분류된 로그 데이터 별로 해당하는 데이터 타입에 기반하여 통계치를 산출함으로써, 로그 데이터에 키에 따른 각종 통계치를 시간 지연 없이 빠르게 처리하고 분석할 수 있다.

Description

로그 데이터 분석 방법 및 장치{Method and Apparatus for Analysis of Log Data}
본 발명은 로그 데이터 분석 방법 및 장치에 관한 것으로서, 더욱 상세하게는 입력되는 로그 데이터의 키(Key)를 데이터 타입(Type)에 따라 통계치를 산출함으로써, 데이터가 입력될 때마다 각 키에 따른 통계치를 산출하여 출력하는 방법 및 장치에 관한 것이다.
일반적으로 로그 파일(Logfile)은 서버를 통해 이루어지는 모든 작업들에 대한 기록이라고 표현할 수 있다. 사용자가 상기 서버에 접속하면 그 후의 모든 작업들은 상기 서버의 미리 정해 놓은 위치에 로그 파일 형태로 남게 된다.
즉, 상기 로그 파일에는 상기 서버가 수행한 작업들에 대한 정보가 내재된다.
이들은 단순히 특정 작업 요청과 성공 여부에 대한 것뿐만 아니라, 실패했을 경우 그 해결책에 대한 정보도 내재된다.
또한, 최근 컴퓨터의 발달로 어느 기업, 기관 또는 이 밖에 다양한 곳을 통해 얻어지는 데이터의 양은 헤아릴 수 없을 정도로 방대하다.
특히, 웹(Web)상에서 얻어지는 데이터는 어느 타 분야에서 얻어지는 데이터보다 양적인 측면에서 비교할 수 없을 만큼 방해하다.
웹은 컴퓨터의 대중화, 하드웨어 기술의 진보, 소프트웨어 패키지의 사용법 상의 용이성, 웹을 통한 비즈니스의 가능성 등의 이유로 1990년대 후반기에 괄목상대한 발전이 있었다.
이와 같이 웹의 지속적인 성장과 함께 정보시스템이 보편화됨으로써 쓸모가 있든 없든 간에 웹상에서 얻어지는 데이터의 양은 실로 엄청나게 쏟아지고 있다.
특히, 최근 스마트 폰의 보급과 이에 대응한 무선 통신망 발달 등과 함께 SNS(Social Network Service)를 사용하는 사용자가 급격히 증가하면서 SNS를 통해 쏟아지는 데이터 양은 그 이전보다 몇 백배로 증가하고 있는 실정이다.
또한, 수많은 사용자가 동시에 SNS를 사용하고, 동시에 수백개, 수천개의 글들을 올리면서 이전보다 급격하게 증가한 수많은 데이터를 짧은 시간 안에 빠르게 처리할 수 있는 방법이 필요하였다.
하지만 기존의 로그 데이터 분석 및 처리 방법은 입력되는 로그 데이터를 데이터베이스화하여 저장하고, 저장된 데이터베이스를 기반으로 필요할 때 마다 또는 일정 시간 간격에 따라 저장된 데이터베이스에 따른 통계치를 산출하였다.
하지만 이러한 로그 데이터 분석 및 처리 방법은 방대한 양의 데이터를 처리하기에 충분하지 못한 처리 속도를 보였다.
따라서, 이전보다 방대해진 양의 데이터를 짧은 시간 안에 효과적으로 통계치를 산출하고 처리할 수 있는 방안에 대한 연구와 개발이 요구되고 있는 실정이다.
한국등록특허 제10-1317826호 (명칭: 정규표현식을 이용한 로그 파일 표시방법 및 이를 수행하기 위한 장치, 2013.06.28.)
상술한 요구를 해결하기 위하여 본 발명은 입력되는 로그 데이터의 로그 포맷을 인지하여 파싱하고, 상기 파싱된 로그 데이터를 키에 따라 분류하며, 분류된 로그 데이터 별로 해당하는 데이터 타입에 기반하여 통계치를 산출함으로써, 로그 데이터에 키에 따른 각종 통계치를 시간 지연 없이 빠르게 처리하고 분석할 수 있는 방법 및 장치를 제공하고자 한다.
즉, 키에 따라 분류된 로그 데이터를 각각 해당하는 데이터 타입에 기반하여 키에 기반한 카운팅(Counting), 합산(Sum), 평균치(Average), 최대값(Max), 최소값(Min) 등을 즉시 산출함으로써, 입력되는 로그 데이터의 통계치를 시간 지연 없이 산출하여, 수없이 쏟아지는 빅데이터에 관한 통계치를 빠르게 산출 할 수 있는 방법 및 장치를 제공하고자 한다.
그러나, 이러한 본 발명의 목적은 상기의 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 명확하게 이해될 수 있을 것이다.
상술한 바와 같은 목적을 달성하기 위한 본 발명에 따른 로그 데이터 분석 장치는 하나 이상의 로그 데이터를 입력 받고, 데이터를 구분하는 키(Key) 및 데이터 처리 유형을 나타내는 데이터 타입(Type)으로 정의되는 로그 포맷을 인지하여 상기 입력된 로그 데이터를 파싱하는 데이터 파싱 모듈 및 상기 파싱된 로그 데이터를 인지한 로그포맷의 키(Key)에 따라 분류하고, 상기 분류된 로그 데이터 별로 해당하는 데이터 타입(Type)에 기반하여 통계치를 산출하는 데이터 통계 모듈을 포함할 수 있다.
이 때, 상기 로그 데이터 분석 장치는 기 설정된 시간 단위로 상기 산출된 통계치를 표준 출력 데이터 포맷에 기반한 통계 데이터로 생성하는 데이터 출력 모듈을 더 포함할 수 있고, 상기 표준 출력 데이터 포맷은 JSON(JavaScript Object Notation) 형태일 수 있다.
또한, 상기 데이터 타입(Type)은 상기 데이터 타입에 포함된 값 별로 카운팅(Counting)하는 데이터 타입인 단어(Word), 통계치를 산출하지 않는 데이터 타입인 텍스트(Text), 입력되는 상기 데이터 타입에 포함된 값을 수집하고 취합하여 통계치를 산출하는 데이터 타입인 숫자(Number) 및 기 설정된 포맷에 따라 처리하는 데이터 타입인 날짜(Date) 중 하나 이상을 포함할 수 있고, 상기 데이터 파싱 모듈은 상기 파싱된 로그 데이터를 정규 표현식(Regular Expression)으로 변환하여 상기 데이터 통계 모듈로 전달할 수 있다.
상술한 바와 같은 목적을 달성하기 위한 본 발명에 따른 로그 데이터 분석 방법은 로그 데이터 분석 장치가 적어도 하나 이상의 로그 데이터를 입력 받는 단계, 데이터를 구분하는 키 및 데이터 타입(Type)으로 정의되는 로그 포맷을 인지하여 상기 로그 데이터를 파싱하는 단계, 상기 파싱된 로그 데이터를 인지한 로그 포맷의 키(Key)에 따라 분류하는 단계 및 상기 분류된 로그 데이터의 데이터 타입을 기반으로 상기 로그 데이터를 처리하여 통계치를 산출하는 단계를 포함할 수 있다.
이 때, 상기 로그 데이터 분석 방법은 기 설정된 시간 단위로 상기 산출된 통계치를 표준 출력 데이터 포맷에 기반하여 통계 데이터로 생성하는 단계를 더 포함할 수 있고, 상기 표준 출력 데이터 포맷은 JSON(JavaScript Object Notation) 형태일 수 있다.
또한, 상기 데이터 타입(Type)은 상기 데이터 타입에 포함된 값 별로 카운팅(Counting)하는 데이터 타입인 단어(Word), 통계치를 산출하지 않는 데이터 타입인 텍스트(Text), 입력되는 상기 데이터 타입에 포함된 값을 수집하고 취합하여 통계치를 산출하는 데이터 타입인 숫자(Number) 및 기 설정된 포맷에 따라 처리하는 데이터 타입인 날짜(Date) 중 하나 이상을 포함할 수 있고, 상기 파싱된 로그 데이터를 정규 표현식(Regular Expression)으로 변환하는 단계를 더 포함하고, 상기 분류하는 단계는 상기 변환된 로그 데이터를 분류할 수 있다.
한편, 상기 로그 데이터 분석 방법은 이를 실행시키는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체로 제공될 수 있고, 이를 실행시키도록 구현되어 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램으로 제공될 수 있다.
본 발명에 따르면, 입력되는 로그 데이터의 로그 포맷을 인지하여 파싱하고, 상기 파싱된 로그 데이터를 키에 따라 분류하며, 분류된 로그 데이터 별로 해당하는 데이터 타입에 기반하여 통계치를 산출함으로써, 로그 데이터에 키에 따른 각종 통계치를 시간 지연 없이 빠르게 처리하고 분석할 수 있다.
즉, 키에 따라 분류된 로그 데이터를 각각 해당하는 데이터 타입에 기반하여 키에 기반한 카운팅(Counting), 합산(Sum), 평균치(Average), 최대값(Max), 최소값(Min) 등을 즉시 산출함으로써, 입력되는 로그 데이터의 통계치를 시간 지연 없이 산출하여, 수없이 쏟아지는 빅데이터에 관한 통계치를 빠르게 산출 할 수 있는 것이다.
아울러, 상술한 효과 이외의 다양한 효과들이 후술될 본 발명의 실시 예에 따른 상세한 설명에서 직접적 또는 암시적으로 개시될 수 있다.
도1은 본 발명에 따른 로그 데이터 분석 장치의 구성을 나타내는 블록도이다.
도2는 본 발명의 실시 예에 따른 로그 데이터 분석 장치의 작동 방법을 설명하기 위한 흐름도이다.
도3은 본 발명에 따른 키에 따른 로그 데이터 분류 예시를 설명하기 위한 예시도이다.
도4는 본 발명에 따른 데이터 타입에 따라 통계치가 산출되는 과정을 설명하기 위한 예시도이다.
도5는 본 발명의 실시 예에 따른 산출된 통계치를 출력하는 예시를 설명하기 위한 예시도이다.
도6은 본 발명에 따른 로그 데이터 분석 방법이 적용될 수 있는 로그 데이터의 예시를 설명하기 위한 도면이다.
도7은 본 발명의 실시 예에 따른 로그 데이터 분석 장치의 오퍼레이팅 환경을 도시한 도면이다.
본 발명의 과제 해결 수단의 특징 및 이점을 보다 명확히 하기 위하여, 첨부된 도면에 도시된 본 발명의 특정 실시 예를 참조하여 본 발명을 더 상세하게 설명한다.
다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다.
또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
이하의 설명 및 도면에서 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다.
따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
또한, 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다.
예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제2 구성요소는 제1 구성요소로 명명될 수 있고, 유사하게 제1 구성요소도 제2 구성요소로 명명될 수 있다.
또한, 본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
또한, 본 명세서에서 기술되는 "포함 한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 명세서에 기재된 "부", "기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
또한, "일(a 또는 an)", "하나(one)", "그(the)" 및 유사 관련어는 본 발명을 기술하는 문맥에 있어서(특히, 이하의 청구항의 문맥에서) 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.
상술한 용어들 이외에, 이하의 설명에서 사용되는 특정 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.
아울러, 본 발명의 범위 내의 실시 예들은 컴퓨터 실행가능 명령어 또는 컴퓨터 판독가능 매체에 저장된 데이터 구조를 가지거나 전달하는 컴퓨터 판독가능 매체를 포함한다.
이러한 컴퓨터 판독가능 매체는, 범용 또는 특수 목적의 컴퓨터 시스템에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있다.
예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EPROM, CD-ROM 또는 기타 광 디스크 저장장치, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터 실행가능 명령어, 컴퓨터 판독가능 명령어 또는 데이터 구조의 형태로 된 소정의 프로그램 코드 수단을 저장하거나 전달하는 데에 이용될 수 있고, 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스 될 수 있는 임의의 기타 매체와 같은 물리적 저장 매체를 포함할 수 있지만, 이에 한정되지 않는다.
아울러, 본 발명은 퍼스널 컴퓨터, 랩탑 컴퓨터, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 또는 프로그램 가능한 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 페이저(pager) 등을 포함하는 다양한 유형의 컴퓨터 시스템 구성을 가지는 네트워크 컴퓨팅 환경에서 실시될 수 있다.
본 발명은 또한 네트워크를 통해 유선 데이터 링크, 무선 데이터 링크, 또는 유선 및 무선 데이터 링크의 조합으로 링크된 로컬 및 원격 컴퓨터 시스템 모두가 태스크를 수행하는 분산형 시스템 환경에서 실행될 수 있다. 분산형 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치에 위치될 수 있다.
또한, 본 발명에 따른 로그 데이터 분석 장치의 구성은 본 발명에 따른 로그 데이터 분석 방법을 구현하기 위한 필수적인 구성만을 가지고 설명한다.
즉, 본 명세서에서 개시하고 있는 구성 이외의 구성이 필요에 따라 로그 데이터 분석 장치에 포함될 수도 있다.
그러면 이제, 본 발명의 실시 예에 따른 로그 데이터 분석 방법을 실행하기 위한 로그 데이터 분석 장치에 대하여 도면을 참조하여 상세하게 설명하도록 한다.
도1은 본 발명의 실시 예에 따른 로그 데이터 분석 장치의 구조를 개략적으로 설명하기 위한 도면이고, 도2는 본 발명의 실시 예에 따른 로그 데이터 분석 장치의 동작 과정을 설명하기 위한 흐름도이다.
도1을 참조하면, 본 발명의 실시 예에 따른 로그 데이터 분석 장치는 데이터 입력 모듈(110), 데이터 파싱 모듈(130), 데이터 통계 모듈(150), 데이터 출력 모듈(170)을 포함하여 구성될 수 있다.
상술한 로그 데이터 분석 장치의 각각의 모듈은 각각이 하나의 칩(Chip)과 같은 형태로서 하드웨어적으로 구현될 수 있고, 하나의 칩(Chip) 또는 장치 내에서 소프트웨어적으로 구현될 수 있다.
그러면 도1을 참조하여 로그 데이터 분석 장치의 각 구성요소에 대해 설명하도록 한다.
먼저, 데이터 입력 모듈(110)은 하나 이상의 로그 데이터를 데이터 파싱 모듈에 전달하는 역할을 한다.
여기서, 상기의 로그 데이터는 웹 로그 데이터로서, 웹 사이트 방문객이 웹 사이트에 방문하게 되면 액세스 로그, 에러 로그, 리퍼럴 로그, 에이전트 로그 등의 자료가 파일 형태로 웹서버에 기록되는 데이터를 의미할 수 있다.
액세스 로그는 누가 어떤 것을 읽었는지를, 에러 로그는 오류가 있었는지를, 리퍼럴 로그는 경유지 사이트와 검색 엔진 키워 등의 단서를, 에이전트 로그는 웹 브라우저의 이름, 버전, 운영체계(OS; Operating System), 화면 해상도 등의 정보를 제공할 수 있다.
이러한 로그 데이터에 기록된 정보를 통하여 웹 사이트의 방문객이 남긴 자료를 근거로 웹의 운영 및 방문 형태에 대한 정보를 분석하는 것이 로그 데이터 분석 방법이고, 본 명세서에 기재된 본 발명은 이러한 로그 데이터를 좀 더 효율적이고 빠르게 처리하기 위한 방법을 개시하고 있는 것이다.
이러한 로그 데이터 분석에 의해 얻은 방문자 수, 방문 유형, 각 웹 페이지 별 방문 횟수, 시간, 요일, 월, 계절별 접속 통계 등의 자료는 웹의 운영 및 마케팅 자료로 유용하게 이용할 수 있다.
데이터 입력 모듈(110)은 방문객의 웹사이트 접속으로 인하여 생성된 로그 데이터를 입력받아 데이터 파싱 모듈(130)로 전달하는 역할을 한다.
이 때, 본 발명의 실시 예에 따른 로그 데이터는 상술한 정보를 포함하여 방문객의 ID(Identification), IP(Internet Protocol) 주소 등의 식별 정보, 로그 레벨 정보, 접속 날짜 및 시간 정보, 접속 방법에 관한 정보, 접속과 관련한 메시지 정보, 접속한 URL주소, 접속 브라우저 정보, 접속한 HTTP 버전 정보, 응답 코드 정보, 방문객이 상기 웹사이트를 접속함으로써 방문객에게 전송된 데이터 량(예를 들면, 바이트(Byte)의 수)에 관한 정보 등을 포함할 수 있다.
상술한 바와 같은 로그 데이터를 데이터 입력 모듈(110)을 통해 입력 받은 데이터 파싱 모듈(130)은 데이터를 구분하는 키(Key) 및 데이터 처리 유형을 나타내는 데이터 타입(Type)으로 정의되는 로그 포맷을 인지하여 상기 입력된 로그 데이터를 파싱한다.
여기서, 데이터를 구분하는 키(Key)는 로그 데이터에 포함된 로그 정보를 말하는 것으로 상술한 방문객의 ID, IP 주소 등의 식별 정보, 접속 날짜 및 시간 정보, URL 주소 정보, 접속 브라우저 정보 등을 포함한 액세스 로그, 에러 로그, 리퍼럴 로그, 에이전트 로그 등의 자료를 의미할 수 있다.
또한, 상기 데이터 타입(Type)은 상기 키의 통계치를 산출하기 위한 방법을 구분하기 위한 것으로서, 각 키에 맞는 정보가 어떠한 타입으로 입력될 것인지를 설정해 놓은 것을 말할 수 있다.
본 발명의 실시 예에 따른 데이터 타입은 단어(Word), 텍스트(Text), 숫자(Number), 날짜(Date) 중 하나 이상을 포함할 수 있다.
데이터 파싱 모듈(130)은 상기 키 및 데이터 타입으로 정의되는 로그 포맷을 인지하여 파싱하게 되는데, 기 설정된 구획 문자(Delimiter)를 기준으로 로그 데이터를 인지하여 파싱할 수 있다.
본 명세서에서는 구획 문자를 공백(Space)로 하여 본 발명에 따른 실시 예를 설명할 것이나, 구획 문자는 반드시 공백에 한정되는 것은 아니고, 다른 특수기호(예를 들면, '/','*','&'등)가 될 수 있고, 이외에 어떤 문자를 구획 문자로 사용하여도 본 발명에 따른 로그 데이터 분석 방법을 구현할 수 있다.
구획 문자를 기준으로 로그 데이터를 파싱한 데이터 파싱 모듈(130)은 상기 파싱된 로그 데이터를 데이터 통계 모듈(150)로 전달하게 된다.
이 때, 데이터 파싱 모듈(130)은 데이터 통계 모듈(150)로 파싱된 로그 데이터를 전달하기 전에 파싱된 로그 데이터를 정규 표현식(Regular Expression)으로 변환하여 데이터 통계 모듈(150)로 전달할 수 있다.
여기서, 정규 표현식(Regular Expression)이란, 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식언어이다.
정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다.
입력한 문자열에서 특정한 조건을 표현할 경우 일반적인 조건문으로는 다소 복잡할 수도 있지만, 정규 표현식을 이용하면 매우 간단하게 표현할 수 있다.
또한, 데이터 파싱 모듈(130)은 상기 파싱된 데이터를 JSON(JavaScript Object Notation)의 형태로 변환하여 데이터 통계 모듈(150)로 전달할 수도 있다.
여기서, JSON 형태란, 속성-값 쌍(본 발명에서는 데이터 타입-키 쌍)으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.
비동기 브라우저/서버 통신을 위해 넓게는 XML(Extensible Markup Language)을 대체하는 주요 데이터 포맷이다.
특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다.
자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합하다.
본래는 자바스크립트 언어로부터 파생되어 자바스크립트의 구문 현식을 따르지만 언어 독립형 데이터 포맷이다.
즉, 프로그래밍 언어나 플랫폼에 독립적이므로, 구문 분석 및 JSON 데이터 생성을 위한 코드는 C, C++, C#, 자바, 자바스크립트, 펄, 파이썬 등 수많은 프로그래밍 언어에서 쉽게 이용할 수 있다.
JSON의 공식 인터넷 미디어 타입은 'application/json' 이며, JSON의 파일 확장자는 '.json'일 수 있다.
상기 데이터 파싱 모듈(130)이 파싱한 로그 데이터를 전달받은 데이터 통계 모듈(150)은 상기 파싱된 로그 데이터를 인지한 로그포맷의 키에 따라 분류하고, 상기 분류된 로그 데이터 별로 해당하는 데이터 타입(Type)에 기반하여 통계치를 산출한다.
이 때, 통계치를 산출하는 방법은 데이터 타입에 따라 달라질 수 있는데, 본 발명에 따른 실시 예에서 데이터 타입은 단어(Word), 텍스트(Text), 숫자(Number), 날짜(Date) 중 하나 이상을 포함할 수 있다.
여기서, 단어(Word)는 키 값에 따라 데이터를 카운팅(Counting)하는 데이터 타입이다.
즉, 키에 따라 동일한 키 값이 몇 개나 들어왔는지를 카운팅(Counting)하는 데이터 타입으로서, 파싱된 데이터가 전달되면, 상기 데이터에 포함된 키 값의 카운팅(Counting)을 증가시킬 수 있다.
텍스트(Text)는 통계치 산출에서 버리는 값이다. 그 키 값이 매우 다양하여 통계치를 산출하기에 적합하지 않은 키 값들이 본 텍스트 데이터 타입을 통해 입력되기 때문이다.
다만, 필요에 따라, 상기 텍스트 데이터 타입을 가진 키 값이라고 하더라도 추가로 처리방식을 지정하여 데이터를 처리할 수 있다.
특히, 패턴 매칭(Pattern Matcing)을 하는 경우에는 모두 상기의 텍스트 데이터 타입으로 데이터 타입을 설정하여 지정된 처리방식에 따라 데이터를 처리할 수 있다.
숫자(Number)는 입력되는 숫자 리스트를 수집하고 취합하여 통계치를 생성하기 위한 데이터 타입일 수 있다.
여기서, 통계치란 상기 단어 데이터 타입과 같이 단순히 카운팅(Counting)을 하는 것일 수 있지만, 그 이외에도 최소값(min), 최대값(max), 데이터 합계(sum), 데이터 평균(avg) 등을 나타내는 통계치를 포함할 수 있다.
날짜(Date)는 날짜 및 시간을 나타내는 데이터 타입으로써, 상기 로그 데이터가 발생한 시간, 사용자가 해당 URL에 접속한 시간 등의 다양한 시간 정보를 나타내는 데이터 타입이다.
본 발명에 따른 실시 예에서는 협정 세계시(UTC) 형태로 변경되어 들어오는 날짜 및 시간을 나타내는 데이터이다.
협정 세계시는 그레고리력의 표기를 따르며, 1일은 24시간으로 나누고, 1시간은 60분으로 나누나 약간은 가변적이다.
또한, 협정 세계시의 하루는 보통 86,400초를 사용하나, 실제 태양시가 86,400초보다 약간 짧은 86,164초를 하루로 하기 때문에 협정 세계시에서는 때때로 하루의 제일 마지막 1분을 61초로 계산한다.
이렇게 추가되는 초를 윤초라고 한다.
이러한 협정 세계시에 따라 본 발명에 따른 실시 예에서는 "년도-월-일 시:분:초"("yyyy-MM-dd HH:mm:ss,SSS") 로 구성되는 포맷을 따로 입력받아 처리할 수 있다.
즉, 날짜 타입의 데이터는 '일'과 '시' 사이에 구획 문자인 공백이 포함되어 있지만, 이러한 공백을 구획 문자로 인식하여 파싱하는 것이 아닌, 날짜 타입 전체를 하나의 데이터로 인식하여, "년도-월-일 시:분:초"의 데이터 전체를 파싱하게 된다.
또한, 날짜 타입의 데이터는 필요에 따라 카운팅을 할 수도 있고, 일정한 범위(예를 들면, 시간대별 등) 내에 있는 날짜 타입의 데이터를 카운팅할 수도 있으며, 통계치에서 제외할 수도 있다.
데이터 통계 모듈(150)에서 데이터 타입에 기반하여 분류된 로그 데이터 별로 통계치를 산출하면 상기 산출된 통계값을 데이터 출력 모듈(170)을 통해 출력하여 사용자가 이용할 수 있도록 할 수 있다.
이 때, 데이터 출력 모듈(170)은 기 설정된 시간 단위로 상기 산출된 통계치를 표준 출력 데이터 포맷에 기반한 통계 데이터로 생성하여 출력할 수 있다.
예를 들어, 기 설정된 시간이 1분 이라면, 데이터 출력 모듈(170)은 1분 단위로 표준 출력 데이터 포맷에 기반하여 통계 데이터를 생성하고, 상기 생성된 데이터를 출력할 수 있는 것이다.
이 때, 상기 표준 출력 데이터 포맷은 JSON 형태일 수 있다.
JSON 형태로 표현하는 것이 사용자가 통계 데이터를 읽고 사용하기에 가장 효율적인 방법 중 하나이기 때문이다.
본 발명의 실시 예에 따른 로그 데이터 분석 장치에 탑재되는 메모리는 그 장치 내에서 정보를 저장한다. 일 구현예의 경우, 메모리는 컴퓨터로 판독 가능한 매체이다. 일 구현 예에서, 메모리는 휘발성 메모리 유닛 일 수 있으며, 다른 구현예의 경우, 메모리는 비휘발성 메모리 유닛 일 수도 있다. 일 구현예의 경우, 저장장치는 컴퓨터로 판독 가능한 매체이다.
다양한 서로 다른 구현 예에서, 저장장치는 예컨대 하드디스크 장치, 광학디스크 장치, 혹은 어떤 다른 대용량 저장장치를 포함할 수도 있다.
아울러, 본 발명의 실시 예에서 사용되는 '~모듈'이라는 용어는 소프트웨어 구성요소를 의미하며, '~모듈'은 어떤 역할들을 수행한다. 일 예로서 '~모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 또한, 구성요소들과 '~모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~모듈'들로 결합되거나 추가적인 구성요소들과 '~모듈'들로 더 분리될 수 있다.
비록 본 명세서와 도면에서는 예시적인 장치 구성을 기술하고 있지만, 본 명세서에서 설명하는 기능적인 동작과 주제의 구현물들은 다른 유형의 디지털 전자 회로로 구현되거나, 본 명세서에서 개시하는 구조 및 그 구조적인 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어로 구현되거나, 이들 중 하나 이상의 결합으로 구현 가능하다. 본 명세서에서 설명하는 주제의 구현물들은 하나 이상의 컴퓨터 프로그램 제품, 다시 말해 본 발명에 따른 장치의 동작을 제어하기 위하여 혹은 이것에 의한 실행을 위하여 유형의 프로그램 저장매체 상에 인코딩된 컴퓨터 프로그램 명령에 관한 하나 이상의 모듈로서 구현될 수 있다.
컴퓨터로 판독 가능한 매체는 기계로 판독 가능한 저장 장치, 기계로 판독 가능한 저장 기판, 메모리 장치, 기계로 판독 가능한 전파형 신호에 영향을 미치는 물질의 조성물 혹은 이들 중 하나 이상의 조합일 수 있다.
이제, 도2를 참조하여 본 발명에 따른 로그 데이터 분석 방법에 대해서 예시와 함께 살펴보기로 한다.
도2를 살펴보면, 우선 로그 데이터 분석 장치에 하나 이상의 로그 데이터가 입력된다(S101).
설명의 이해를 돕기 위해 상기 입력된 로그 데이터는
DBIF5_01_1 [DEBUG] 2015-06-08 17:42:49,563 JakartaCommonsLoggingImpl.debug(27) - {pstm-29772520} Parameters: [80, 56]
인 것을 가정하고 설명한다.
다만, 본 발명의 로그 데이터는 상기의 데이터 형태와는 다른 데이터가 입력될 수 있으며, 상기의 데이터와 데이터 형태가 동일한 복수의 데이터가 입력될 수 있고, 이러한 복수의 데이터를 이용하여 통계치를 산출 할 수 있음은 당연하다.
상기의 로그 데이터가 입력되면, 로그 데이터 분석 장치는 상기 로그 데이터를 구분하는 키 및 데이터 타입으로 정의되는 로그 포맷을 인지하여 상기 로그 데이터를 파싱한다(S103).
만약, 정의되는 로그 포맷은
%{id:WORD} \[%{logLevel:WORD}\] %{date:DATE} %{method:WORD} - %{message:TEXT}
이고, 구획 문자(Delimiter)는 공백(Space)라고 가정한다.
그러면, 로그 데이터 분석 장치는 상기의 로그 포맷을 인지하여, 상기 입력된 데이터를 파싱할 수 있다.
즉, 공백을 기준으로 할 때 'DBIF5_01_1' 가 id에 해당하는 키값이므로 'DBIF5_01_1'까지 데이터를 파싱하고, 해당 키값(DBIF5_01_1)은 단어(Word) 타입의 데이터인 것으로 인식할 수 있다.
또한, '[DEBUG]'가 logLevel에 해당하는 키값으로서, '[DEBUG]'까지 데이터를 파싱하고, 해당 키값([DEBUG])은 단어(Word) 타입의 데이터로 인식할 수 있고, '2015-06-08 17:42:49,563'가 date에 해당하는 키값으로 '2015-06-08 17:42:49,563'까지 파싱하고, 해당 키값(2015-06-08 17:42:49,563)은 날짜(Date) 타입의 데이터인 것으로 인식한다.
이 때, '2015-06-08 17:42:49,563'의 '일'에 해당하는 데이터(08)와 '시'에 해당하는 데이터(17) 사이에 공백이 있지만, 협정 세계시를 기준으로 설정된 포맷에 따라 상기 공백은 구획문자로 인식하지 않고, '2015-06-08 17:42:49,563' 데이터 전체를 파싱할 수 있다.
동일한 방법으로 'JakartaCommonsLoggingImpl.debug(27)'가 method에 해당하는 키값으로 'JakartaCommonsLoggingImpl.debug(27)'까지 파싱하고, 해당 키값은 단어(Word) 타입의 데이터인 것으로 인식하며, '{pstm-29772520} Parameters: [80, 56]'은 message 에 해당하는 키값으로 '{pstm-29772520} Parameters: [80, 56]'까지 파싱하고 해당 키값은 텍스트(Text) 타입의 데이터인 것으로 인식할 수 있다.
이렇게 인지한 포맷에 기반하여 입력된 로그 데이터를 파싱한 로그 데이터 분석 장치는 파싱된 로그 데이터를 특정 표현식에 따라 변환 할 수 있는데, 이 때, 상기 특정 표현식은 정규 표현식이 될 수 있다(S105).
다만, 이는 예시적인 것으로서 정규 표현식 외의 다른 표현식을 사용하여 변환할 수 있고, 경우에 따라 S105 단계를 생략할 수 도 있다.
그리고, 특정 표현식에 따라 변환하는 것 이외에 상기 파싱된 데이터를 JSON 형태로 변환하는 과정을 거칠 수도 있다.
상기의 예시에서 파싱된 데이터를 JSON 형태로 변환하면 다음과 같을 것이다.
{"date":{"keyType":"DATE","value":"2015-06-08 17:42:49,563"},"logLevel":{"keyType":"WORD","value":"DEBUG"},"method":{"keyType":"WORD","value":"JakartaCommonsLoggingImpl.debug(27)"},"id":{"keyType":"WORD","value":"DBIF5_01_1"},"message":{"keyType":"TEXT","value":"{pstm-29772520} Parameters: [80, 56]"}}
상기와 같이 변환된 로그 데이터를 로그 데이터 분석 장치는 키에 따라 분류할 수 있고(S107), 데이터 타입에 통계치를 산출할 수 있다(S109).
위의 예시를 통해 S107, S109 과정을 살펴보면, id 에 해당하는 'DBIF5_01_1'는 단어 타입의 데이터 이므로, 카운팅을 할 수 있다.
따라서, 'DBIF5_01_1' 키값이 한번 입력되었으므로 산출된 통계치는 'DBIF5_01_1: 1'과 같은 형태로 산출될 수 있다.
위와 같이 동일한 단어 타입의 데이터를 가지고 있는 logLevel, method의 키 값인 '[DEBUG]', 'JakartaCommonsLoggingImpl.debug(27)'도 통계치가 '[DEBUG]: 1', 'JakartaCommonsLoggingImpl.debug(27): 1'과 같은 형태로 산출될 수 있다.
그리고 날짜 타입과 텍스트 타입을 가지고 있는 date, message의 키 값인 '2015-06-08 17:42:49,563'와 '{pstm-29772520} Parameters: [80, 56]'은 통계 산출에서 제외되나, 경우에 따라 임의로 사용자가 처리 방법을 설정하여 특정 방법으로 통계치를 산출하거나 통계치 산출 이외의 방법으로 처리할 수 있다.
상술한 바와 같이 통계치를 산출하게 되면, 상기 산출된 통계치를 출력할 수 있다.
이 때, 기 설정된 시간 단위로 상기 산출된 통계치를 표준 출력 데이터 포맷에 기반하여 통계 데이터로 생성하여 출력할 수 있다(S111~S115).
즉, 기 설정된 일정 시간을 경과하지 아니하면, 로그 데이터 분석 장치는 계속하여 로그 데이터를 입력받고, 일정 시간이 경과할 때마다, 표준 출력 데이터 포맷에 기반하여 일정 시간 동안 입력받아 산출한 통계치를 통계 데이터로 생성하여 출력할 수 있다.
만약, 기 설정된 시간 단위가 1분이라면, 1분 단위로 표준 출력 데이터 포맷에 기반하여 1분 동안 입력 받은 로그 데이터에 관한 통계치를 통계 데이터로 생성하여 출력할 수 있다.
이 때, 상기 표준 출력 데이터 포맷은 JSON 형태를 가질 수 있다.
상술한 예시를 사용하여 표준 출력 데이터 포맷에 기반하여 출력되는 통계 데이터를 표현하면,
{
"id":{
"wordCount":{
"DBIF5_01_1":1
}
},
"logLevel":{
"wordCount":{
"[DEBUG]":1
}
},
"method":{
"wordCount":{
"JakartaCommonsLoggingImpl.debug(27)":1
}
}
}
의 형태로 출력될 수 있다.
상술한 출력 예시에서도 볼 수 있듯이, 날짜 타입의 데이터와 텍스트 타입의 데이터는 통계 출력에서 제외할 수 있다.
이상으로 본 발명의 실시 예에 따른 로그 데이터 분석 장치에 대해 설명하였다.
이하, 본 발명에 따른 실시 예를 통하여 좀 더 구체적으로 로그 데이터 분석 방법에 대하여 살펴보도록 한다.
도3은 파싱된 데이터를 키에 따라 분류하는 실시 예를 설명하기 위한 도면이고, 도4는 상기 분류된 데이터를 데이터 타입에 따라 통계치를 산출하는 예시를 설명하기 위한 도면이며, 도5는 통계 데이터의 출력 예시를 설명하기 위한 도면이다.
로그 데이터 분석 장치에 로그 데이터가 입력된다.
이 때, 입력되는 로그 데이터는 설명의 편의를 위해
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200 10450.1342342 "-" "Mozilla/4.6 [en] (X11; U; OpenBSD 2.8 i386; Nav)"
인 것으로 가정하고 설명한다.
상기 로그 데이터가 입력되면, 로그 데이터 분석 장치는 데이터를 구분하는 키 및 데이터 타입으로 정의되는 로그 포맷을 인지하여 로그 데이터를 파싱하게 된다.
이 때, 로그 포맷은
%{ip:WORD} %{identd:WORD} %{userid:WORD} \[%{date:DATE}\] "%{httpMethod:WORD} %{url:WORD} %{httpVer:WORD}" %{responseCode:WORD} %{byteSent:NUMBER} "%{referer:WORD}" "%{client:WORD} %{os:TEXT}"
인 것으로 가정한다.
로그 데이터 분석 장치는 상기 로그 포맷을 인지하여, 공백을 구획 문자로 하여 로그 데이터를 파싱하게 된다.
그리고 파싱된 로그 데이터를 특정 표현식으로 변환할 수 있는데, 이 때, 특정 표현식은 정규 표현식이 될 수 있다.
또한, 파싱된 로그 데이터는 JSON 형태로 변환할 수도 있는데, 상술한 로그 포맷으로 파싱하여 JSON 형태로 변환한 상기 입력 로그 데이터는
{"date":{"keyType":"DATE","value":"27/Oct/2000:09:27:09 -0400"},"referer":{"keyType":"WORD","value":"-"},"os":{"keyType":"TEXT","value":"[en] (X11; U; OpenBSD 2.8 i386; Nav)"},"ip":{"keyType":"WORD","value":"123.45.67.89"},"identd":{"keyType":"WORD","value":"-"},"client":{"keyType":"WORD","value":"Mozilla/4.6"},"httpVer":{"keyType":"WORD","value":"HTTP/1.0"},"httpMethod":{"keyType":"WORD","value":"GET"},"userid":{"keyType":"WORD","value":"-"},"byteSent":{"keyType":"NUMBER","value":"10450.1342342"},"url":{"keyType":"WORD","value":"/java/javaResources.html"},"responseCode":{"keyType":"WORD","value":"200"}}
와 같이 변환 될 수 있다.
그리고 상기 변환된 로그 데이터를 키에 따라 분류할 수 있다.
도3은 로그 데이터를 키에 따라 분류하는 것을 도식적으로 나타내고 있다.
도3의 (a)를 보면, 제1키(210a)에 따라 각각의 키 값들이 분류되어 나열되고 있고(230a), 도3의 (b)를 보면 제2키(210b)에 따라 각각의 키 값들이 분류되어 나열되고 있다(230b).
제1키(210a)를 단어 타입으로 정의된 키인 ip라고 보면, '123.45.67.89'의 값이 230a 중 하나로 나열될 수 있고, 제2키(210b)를 숫자 타입으로 정의된 키인 bytesent라고 보면 '10450.1342342'의 값이 230b 중 하나로 나열될 수 있다.
이제, 도4를 참고하면, 로그 데이터 분석 장치는 상기 분류된 데이터를 데이터 타입에 따라 통계치를 산출하게 되는데, 숫자 타입으로 정의된 것으로 가정되는 제2키(210b)를 기준으로 통계치가 산출되는 과정을 보면, 도4의 (a)에서 제2키(210b)에 따라 분류된 키 값이 '11378'하나가 있으므로, 통계치는 'max: 11378, min: 11378, sum: 11378, avg: 11378, count: 1'이 될 수 있다.
여기서, max는 최대값, min은 최소값, sum은 합계, avg는 평균값, count는 분류된 로그 데이터 값의 개수를 의미할 수 있다.
도4의 (b)를 보면, 하나의 로그 데이터가 더 입력되어, 제2키(210b)에 해당하는 로그 데이터 '13197'이 더 들어온 모습을 나타내는데, '13197'이 더 들어옴으로써, 통계치는 'max: 13197, min: 11378, sum: 24575, avg: 12287.5, count: 2'가 될 수 있다.
마찬가지로 도4의 (c)를 보면, '13604'라는 로그 데이터가 하나 더 들어오고, 통계치는 'max: 13604, min: 11378, sum: 38179, avg: 12726.333, count: 3'으로 될 수 있다.
도4에서 설명한 것과 같이 본 발명에 따른 로그 데이터 분석 장치 및 방법은 로그 데이터가 입력될 때마다, 통계치를 산출하고, 이전에 산출한 통계치를 기반으로 입력된 로그 데이터를 포함하는 통계치를 산출함으로써, 시간 지연 없는 통계치 산출을 가능하게 할 수 있다.
이러한 데이터 타입에 따른 통계치 산출은 기 설정된 시간이 지날 때까지 산출되며, 기 설정된 시간이 경과하면, 표준 출력 데이터 포맷으로 통계 데이터를 생성하여 상기 생성된 통계 데이터를 출력할 수 있다.
즉, 본 발명에 따른 로그 데이터 분석 장치는 기 설정된 시간 단위로 통계 데이터를 생성하여 상기 생성된 통계 데이터를 출력할 수 있다.
이 때, 생성되는 통계 데이터는 JSON 형태로 생성되어 출력될 수 있다.
이에 대하여 도5와 더불어 설명하도록 한다.
도5를 살펴보면, 키에 따라 분류된 데이터에 관한 통계치를 출력하므로, 키의 명칭이 우선 나올 것이다.
앞서 설명한 예시를 참고하여 설명하면, 제2키에 따라 분류되었으므로, 제2키(310)이 출력되고, 제2키(310)에 따라 분류된 데이터 리스트(330)들이 그 다음으로 나오게 된다.
즉, 제2키(310) 다음에는 분류된 데이터 리스트(330)인 '11378, 13197, 13604'가 나올 것이다.
그리고 분류된 데이터 리스트(330) 다음으로는 데이터 리스트(300)의 통계치(350)가 나오게 되는데, 상기 통계치는 351에서 보듯이 최대값(max), 최소값(min), 합계(sum), 평균값(avg), 데이터 리스트(300)에 포함된 데이터의 수(count)를 포함할 수 있다.
상기 예시를 보고 참조하면, 'max: 13604, min: 11378, sum: 38179, avg: 12726.333, count: 3'으로 출력될 수 있다.
그리고 제2키(310)에 따라 분류된 데이터 리스트(330) 및 통계치(350)가 모두 출력되고 나면, 다음 키인 제3키(370)에 따라 분류된 데이터 리스트 및 통계치를 차례로 출력할 수 있다.
각 데이터 타입에 따라 출력되는 통계 예시에 대한 이해를 돕기 위하여 상술한 예시의 로그 데이터인
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200 10450.1342342 "-" "Mozilla/4.6 [en] (X11; U; OpenBSD 2.8 i386; Nav)"
의 형태를 가지고 입력되는 로그 데이터를 가정으로 출력되는 통계 예시를 살펴본다.
출력되는 통계 데이터의 표준 출력 데이터 포맷은 JSON 형태인 것으로 가정한다.
이 때, 로그 데이터 분석 장치가 인지하는 로그 포맷은
%{ip:WORD} %{identd:WORD} %{userid:WORD} \[%{date:DATE}\] "%{httpMethod:WORD} %{url:WORD} %{httpVer:WORD}" %{responseCode:WORD} %{byteSent:NUMBER} "%{referer:WORD}" "%{client:WORD} %{os:TEXT}"
인 것으로 가정한다.
우선, 단어 데이터 타입을 가지고 있는 키인 ip의 출력 예시를 살펴보면,
"ip":{
"wordCount":{
"211.243.65.201":4, "223.62.178.96":2, "223.62.179.25":2, "211.36.148.71":1, "125.178.129.160":3, "223.62.229.32":2, "223.62.163.91":4, "223.62.202.51":2, "175.120.203.35":1, "121.162.205.155":2, "223.62.202.32":1, "175.126.138.209":1, "183.103.136.105":1, "223.62.162.66":2, "112.161.89.219":2, "210.183.239.76":1, "117.111.3.9":1
}
},
와 같이 출력될 수 있다.
여기서, "ip"는 분류된 리스트의 기준이 되는 키 값인 ip를 나타내고, "wordCount"는 데이터 타입을 나타낸다.
"211.243.65.201", "223.62.178.96", "223.62.179.25", "211.36.148.71", "125.178.129.160"은 키 값에 따라 분류된 리스트를 나타낸다.
즉, 본 발명의 실시 예에서는 사용자의 IP주소 리스트가 될 수 있다.
그리고 "211.243.65.201":4에서의 '4'는 211.243.65.201 라는 IP주소를 가지는 로그 데이터가 입력된 횟수를 의미한다.
즉, 상기의 출력 데이터에서는 기 설정된 시간 단위동안 211.243.65.201라는 IP주소로부터 4번의 접속이 있었다는 것을 의미할 수 있다.
상술한 입력 데이터 예시에서, identd라는 키는 '-'라는 값을 가지는데, '-' 값 또한 데이터 타입에 따라 카운트 될 수 있다.
즉, identd라는 키가 단어 타입의 데이터를 가지므로, 출력 형태는
"identd":{
"wordCount":{
"-":32
}
처럼 될 수 있는 것이다.
숫자 타입의 데이터를 가지고 있는 키의 출력 예시를 살펴보기 위하여 "bytesSent"키의 출력 예시를 살펴보면,
"byteSent":{
"numberList":[
176, 199, 199, 199, 205, 205, 212, 212, 212, 213, 213, 213, 213, 213, 213, 227, 277, 304, 322, 405, 431, 431, 445, 554, 597, 613, 733, 1100, 1468, 1468, 2122
],
"max":2122,
"min":176,
"sum":14594,
"avg":470.7741935483871,
"count":31
}
},
와 같이 나타날 수 있다.
이 때, "byteSent"는 분류된 데이터의 기준이 되는 키를 나타내고, "numberList"는 상기 데이터 타입을 나타내며, '176, 199, 205'는 데이터 리스트를 나타내며, "max"는 데이터 리스트 중의 최대값, "min"은 데이터 리스트 중의 최소값, "sum"은 31개 "byteSent"리스트의 합계, "avg"는 31개 "byteSent"리스트의 평균값, "count"는 "byteSent"리스트의 개수를 나타낼 수 있다.
출력 데이터를 전송받은 관리자 등은 상기의 통계치를 통해 접속한 사용자들에게 전송한 데이터 용량이 평균적으로 얼마나 큰지, 최대값과 최소값은 얼마인지, 기 설정된 시간 단위 동안 보내진 총 데이터 량은 얼마인지를 알 수 있다.
날짜 데이터 타입을 가지고 있는 키인 date는 [27/Oct/2000:09:27:09 -0400]으로 로그 데이터 분석 장치에 의하여 파싱되기는 하나, 날짜 데이터 타입의 경우에는 사용자에 의한 임의의 설정이 없으면 '년도-월-일 시:분:초' 의 형태인 포맷을 따로 입력 받아 처리하므로, 상기 통계 처리 및 출력 데이터에서 제외할 수 있다.
또한, 텍스트 데이터 타입을 가지고 있는 키인 os는 "[en] (X11; U; OpenBSD 2.8 i386; Nav)"으로 로그 데이터 분석 장치에 의하여 파싱되기는 하나, 통계치 산출에서는 제외되는 데이터 타입으로서, 텍스트 데이터 타입에 관한 통계치는 산출하지 않을 수 있다.
다만, 설정자 임의로 추가 처리를 작성해서 데이터를 처리할 수 있고, 패턴 매칭(Pattern Matching)에서 본 발명이 구현되는 경우에는 모두 텍스트 타입으로 받아서 임의로 설정된 처리 방법에 따라 데이터를 처리할 수 있다.
이상, 본 발명에 따른 실시 예를 통하여 구체적으로 로그 데이터 분석 방법에 대해 살펴보았다.
이하, 본 발명에 따른 로그 데이터 분석 장치 및 방법이 적용될 수 있는 로그 데이터 전송 실시 예에 대해서 살펴보도록 한다.
도6은 이동통신망을 통해서 스트리밍 기반으로 발생되는 로그 데이터가 본 발명에 따른 로그 데이터 분석 장치에 입력되는 예를 설명하기 위한 도면이다.
도1 내지 도5를 중심으로 상술한 본 발명에 따른 로그 데이터 분석 장치 및 방법은 웹 로그 데이터를 기반으로 하여 설명하였지만, 본 발명에 따른 로그 데이터 분석 장치는 이 외에도 다양한 로그 데이터를 분석하는데 적용될 수 있으며, 이러한 적용 례 중에 하나에 대하여 도6을 통해서 설명하고자 한다.
도 6은 본 발명에 따른 로그 데이터 분석이 이루어지는 망구조를 예시한 것이다. 본 발명은 다양한 통신망 혹은 상기 통신망에 접속된 서버 장치를 기반으로 해당 통신망을 통해서 발생되는 로그 데이터를 수집하여 처리할 수 있다.
도 6에서 부호 1000은 서비스 품질 관리 대상이 되는 통신망을 나타내며, 부호 100은 본 발명에 따라서 상기 통신망(10)을 기반으로 이루어지는 통화 서비스 및 데이터 서비스 중 하나 이상의 데이터 분석을 수행하는 로그 데이터 분석 장치(100)를 나타낸다.
상기 로그 데이터 분석 장치(100)는 통신망(1000)을 통해 제공되는 통화 서비스 및 데이터 서비스와 관련하여 실시간으로 생성되는 로그 데이터를 수신한다. 상기 로그 데이터는, 통신망(1000)을 통해 전송되는 통화 서비스 및 데이터 서비스와 관련된 다양한 패킷의 상세 정보를 기록한 것으로서, 별도의 로그 데이터 생성 장치(도시생략)를 통해서 상기 통신망(1000)을 통해 전송되는 패킷들을 프루빙하여 생성될 수 있다.
예를 들어, 상기 통신망(1000)이 이동통신망인 경우, 네트워크 장비로서, 기지국 장치(1200)와, 이동성 관리 장치(1300)와, 서빙 게이트웨이(1400)와, PDN 게이트웨이(1500)를 포함할 수 있다.
상기 기지국 장치(1200)는 무선 자원을 통해 사용자 장치(1100)와 직접적으로 접속하여, 사용자 장치(1100)로부터 전송된 패킷을 수신하거나 사용자 장치(1100)로 패킷을 송신하기 위한 구성이다. 구체적으로 상기 기지국 장치(1200)는 통신 커버리지 내로 접근한 사용자 장치(1100)의 검출, 접속을 요청한 사용자 장치(1100)에 대한 접속 제어 및 무선 자원 할당, 할당된 무선 자원을 통한 사용자 장치(1100)와의 패킷 송수신 중 하나 이상을 수행할 수 있다. 이러한 기지국 장치(1200)는 예를 들어, Node B, eNB(e Node B) 등이 될 수 있다.
상기 이동성 관리 장치(1300)는 사용자 장치(1100)의 위치를 등록하고 사용자 장치(1100)의 이동에 따른 위치를 수정 및 변경하여 관리하는 요소로서, 상기 기지국 장치(1200)와 서빙 게이트웨이(1400) 간의 신호제어를 담당하고 사용자 장치(1100)로부터 인입되는 패킷을 어느 곳으로 라우팅할지를 결정한다. 이러한 이동성 관리 장치(1300)는 3GPP에서 제안된 MME(Mobility Management Entity)를 포함하는 개념이다.
상기 서빙 게이트웨이(1400)는, 사용자 장치(1100)의 이동(핸드오버)에 대한 앵커링(anchoring) 기능을 담당하여 상기 기지국 장치(1200)로 전송받은 패킷을 PDN 게이트웨이(1500)로 전달하고, 역으로 PDN 게이트웨이(1500)로부터 전달받은 패킷을 사용자 장치(1100)가 연결된 기지국 장치(1200)로 전달한다.
상기 PDN 게이트웨이(1500)는 IMS(IP multimedia subsystem), 인터넷, 타 이동통신망과 같은 다른 PDN과의 접점으로서, 타 통신망 간의 사용자 장치(1100)의 이동에 대한 앵커링을 담당한다.
이렇게 구성된 통신망(1000)에 있어서, 기지국 장치(1200)와 이동성 관리 장치(1300)를 연결하는 포인트 S1, 기지국 장치(1200)와 서빙 게이트웨이(1400)를 연결하는 포인트 S2, 서빙 게이트웨이(1300)와 이동성 관리 장치(1300)를 연결하는 포인트 S3, PDN 게이트웨이(1500)와 타 통신망간의 연결 포인트 S4로부터 각각 네트워크 장비 간에 송수신되는 패킷을 수집하고, 수집된 패킷의 프루빙을 통해서 로그 데이터가 생성될 수 있다.
아울러, 이 경우에 생성되는 로그 데이터는, 통화 서비스와 관련된 로그 데이터와, 데이터 서비스와 관련된 로그 데이터로 구분될 수 있으며, 또한, 통신망(1000) 상에서 사용자 장치(1100)별로 이루어지는 베어러 연결 및 운용과 관련된 베어러 로그 데이터, 연결된 베어러를 통해 이루어지는 어플리케이션 레벨의 로그 데이터인 HTTP 로그 데이터, 프랜스포트 로그 데이터, DNS 로그 데이터 중 하나 이상을 포함할 수 있다. 각각의 로그 데이터는 기본적으로, 해당 로그 데이터가 수집된 시스템을 나타내는 수집 시점 정보, 사용자 정보, 관련된 네트워크 장비 정보를 포함하며, 로그 데이터의 종류 별로, HTTP 정보, SCTP 정보, DNS 정보, 베어러 정보, 트래픽 정보, 호 처리 정보, 호 정보 중에서 하나 이상을 포함할 수 있다.
물론, 이러한 로그 데이터의 종류 및 상세 정보는, 분석 대상 통신망의 종류, 적용 프로토콜 및 제공되는 서비스 종류에 따라서 달라질 수 있다.
또한, 상기에 설명된 로그 데이터의 종류들은 모두 본 발명에 따른 로그 데이터 분석 장치(100)에 입력되어 본 발명에 따른 로그 데이터 분석 방법에 의해 처리되고 분석될 수 있다.
이하, 본 발명의 실시 예에 따른 로그 데이터 분석 장치에서의 로그 데이터 분석 방법을 제공하기 위한 오퍼레이팅 환경에 대하여 설명하도록 하겠다.
도7은 본 발명의 실시 예에 따른 무선 네트워크 설정 시스템에서 기지국 성능 측정 방법을 제공하기 위한 장치의 오퍼레이팅 환경을 도시한 도면이다.
도7 및 이하의 설명은 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간단하고, 일반적인 설명을 제공하고자 한다. 요구사항은 아니지만, 본 발명은 컴퓨터 시스템에 의해 실행되고 있는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 수 있다.
일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터 실행가능 명령어, 관련 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 발명의 행위를 실행하는 프로그램 코드 수단의 예를 나타낸다.
도7를 참조하면, 본 발명을 구현하는 예시적인 컴퓨팅 시스템은 프로세싱 유닛(11), 시스템 메모리(12), 및 상기 시스템 메모리(12)를 포함하는 다양한 시스템 컴포넌트를 상기 프로세싱 유닛(11)에 연결시키는 시스템 버스(10)를 포함하는 형태로 된 컴퓨팅 장치를 포함한다.
프로세싱 유닛(11)은 본 발명의 특징을 구현하도록 설계된 컴퓨터-실행가능 명령어를 실행시킬 수 있다.
시스템 버스(10)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 시스템 메모리(12)는 ROM(Read Only Memory)(12a) 및 RAM(Random Access Memory)(12b)을 포함한다.
시동중과 같은 때에 컴퓨팅 시스템 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS)(13a)은 일반적으로 ROM(12a)에 저장될 수 있다.
컴퓨팅 시스템은 저장 수단을 포함할 수 있는데, 예를 들어, 하드 하드 디스크로부터 정보를 판독하거나 그 하드 디스크에 정보를 기록하는 하드 디스크 드라이브(15), 자기 디스크로부터 정보를 판독하거나 그 자기 디스크에 정보를 기록하는 자기 디스크 드라이브(16), 및 예를 들면, CD-ROM 또는 기타 광 매체 등의 광 디스크로부터 정보를 판독하거나 그 광 디스크에 정보를 기록하는 광 디스크 드라이브(17)를 포함할 수 있다.
하드 디스크 드라이브(15), 자기 디스크 드라이브(16), 및 광 디스크 드라이브(17)는 각각 하드 디스크 드라이브 인터페이스(18), 자기 디스크 드라이브-인터페이스(19), 및 광 드라이브 인터페이스(20)에 의해 시스템 버스(10)에 접속된다.
또한, 컴퓨팅 시스템은, 저장 수단으로서 외장 메모리(21)를 더 구비할 수 있다. 상기 외장 메모리(21)는 입출력 인터페이스(24)를 통해서 시스템 버스(10)에 접속될 수 있다.
상술한 드라이브 및 그 드라이브에 의해 판독 및 기록되는 관련 컴퓨터 판독가능 매체는 컴퓨터 실행가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다.
본 명세서에서 기술된 예시적인 환경은 하드 디스크(15), 자기 디스크(16) 및 광 디스크(17)를 예시하고 있으나, 이외에 자기 카세트, 플래쉬 메모리 카드, DVD, 베루누이 카트리지(Bernoulli cartridge), RAM, ROM, 등을 포함하는, 데이터를 저장하는 다른 유형의 컴퓨터 판독가능 매체가 이용될 수 있다.
상기 프로세싱 유닛(11)에 의해 로딩되어 실행되는, 오퍼레이팅 시스템(13b), 하나 이상의 애플리케이션 프로그램(13c), 기타 프로그램 모듈(13d), 및 프로그램 데이터(13c)를 포함하는 하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 하드 디스크(15), 자기 디스크(16), 광 디스크(17), ROM(12a) 또는 RAM(12b)에 저장될 수 있다.
아울러, 상기 컴퓨팅 시스템은, 키보드, 포인팅 장치, 마이크로폰, 조이 스틱, 게임 패드, 스캐너, 등과 같은 기타 입력 장치(22)를 통해 사용자로부터 명령 및 정보를 입력 받을 수 있다.
이들 입력 장치(22)는 시스템 버스(10)에 연결된 입출력 인터페이스(24)를 통해 프로세싱 유닛(11)에 접속될 수 있다. 입출력 인터페이스(24)는 예를 들면, 직렬 포트 인터페이스, PS/2 인터페이스, 병렬 포트 인터페이스, USB 인터페이스, IEEE(Institute of Electrical and Electronics Engineers) 1394 인터페이스(즉, 파이어와이어(FireWire) 인터페이스)와 같은 매우 다양한 서로 다른 인터페이스 중 임의의 것을 논리적으로 나타내거나, 다른 인터페이스의 조합까지도 논리적으로 나타낼 수 있다.
더하여, 본 발명이 적용되는 컴퓨팅 시스템은, 모니터 혹은 LCD와 같은 디스플레이 장치(26) 또는 스피커나 마이크로폰과 같은 오디오 장치(27)를 더 포함할 수 있으며, 이들은, 비디오/오디오 인터페이스(25)를 통해서 시스템 버스(10)에 접속된다. 예를 들면, 스피커 및 프린터 등의 (도시되지 않은) 기타 주변 출력 장치가 컴퓨터 시스템에 또한 접속될 수 있다.
상기 비디오/오디오 인터페이스부(25)는 HDMI(High Definition Multimedia Interface), GDI(Graphics Device Interface) 등을 포함할 수 있다.
또한, 본 발명을 실행하는 컴퓨팅 시스템은, 예를 들면, 사무실-광역 또는 기업-광역 컴퓨터 네트워크, 홈 네트워크, 인트라넷, 및/또는 인터넷과 같은 네트워크에 접속 가능하다.
컴퓨터 시스템은 이러한 네트워크를 통해, 예를 들면, 원격 컴퓨터 시스템, 원격 애플리케이션, 및/또는 원격 데이터베이스와 같은 외부 소스들과의 데이터를 교환할 수 있다.
이를 위해 본 발명이 적용되는 컴퓨팅 시스템은 외부 소스로부터 데이터를 수신하고/거나 외부 소스로 데이터를 전송하는 네트워크 인터페이스(28)를 포함한다.
본 발명에 있어서, 이러한 컴퓨팅 시스템은, 네트워크 인터페이스(28)를 통해서 원격지에 위치한 장치와 정보를 송수신할 수 있다.
예컨대, 컴퓨팅 시스템이 로그 데이터 분석 장치를 의미하는 경우, 네트워크 인터페이스(28)를 통해 특정 서버 또는 특정 디바이스와 정보를 송수신할 수 있다.
네트워크 인터페이스(28)는, 예를 들면, 네트워크 인터페이스 카드 및 대응하는 네트워크 드라이버 인터페이스 사양(Network Driver Interface Specification: "NDIS") 스택과 같은 하나 이상의 소프트웨어 및/또는 하드웨어 모듈의 논리적 조합으로 나타낼 수 있다.
마찬가지로, 컴퓨터 시스템은 입출력 인터페이스(24)를 통해 외부 소스로부터 데이터를 수신하거나 외부 소스로 데이터를 전송한다.
입출력 인터페이스(24)는 모뎀(23)(예를 들면, 표준 모뎀, 케이블 모뎀, 또는 디지털 가입자선(digital subscriber line: “DSL”) 모뎀)에 연결될 수 있으며, 이러한 모뎀(23)을 통해 외부 소스로부터 데이터를 수신하고/거나 외부 소스로 데이터를 전송할 수 있다.
도7는 본 발명에 적절한 오퍼레이팅 환경을 나타내지만, 본 발명의 원리는, 필요하다면 적절한 수정으로, 본 발명의 원리를 구현할 수 있는 임의의 시스템에 채용될 수 있다.
도7에 도시된 환경은 단지 예시적이며 본 발명의 원리가 구현될 수 있는 매우 다양한 환경의 작은 일부도 나타내지 못한다.
아울러, 본 발명의 기지국 성능 측성 시 발생되는 다양한 정보는 컴퓨팅 시스템에 관련된 임의의 컴퓨터 판독가능 매체에 저장되고 액세스될 수 있다.
예를 들면, 이러한 프로그램 모듈들의 일부 및 관련 프로그램 데이터의 일부는, 시스템 메모리(12)에 저장하기 위해, 오퍼레이팅 시스템(13b), 애플리케이션 프로그램(13c), 프로그램 모듈(13d), 및/또는 프로그램 데이터(13e)에 포함될 수 있다.
또한, 하드 디스크와 같은 대용량(mass) 저장 장치가 컴퓨팅 시스템에 연결되면, 이러한 프로그램 모듈 및 관련 프로그램 데이터는 대용량 저장 장치에 저장될 수 있다.
네트워크 환경에서, 본 발명과 관련된 프로그램 모듈 또는 그 일부는 입출력 인터페이스(24)의 모뎀(23) 또는 네트워크 인터페이스(25)를 통해 연결된 원격 컴퓨터 시스템에 저장될 수 있다. 이러한 모듈의 실행은 전술한 바와 같이 분산형 환경에서 수행될 수 있다.
이상에서 설명한 바와 같이, 본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다.
개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다.
반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다.
나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다.
특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다.
또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다.
본 명세서에서 설명한 주제의 특정한 실시형태를 설명하였다.
기타의 실시형태들은 이하의 청구항의 범위 내에 속한다.
예컨대, 청구항에서 인용된 동작들은 상이한 순서로 수행되면서도 여전히 바람직한 결과를 성취할 수 있다.
일 예로서, 첨부도면에 도시한 프로세스는 바람직한 결과를 얻기 위하여 반드시 그 특정한 도시된 순서나 순차적인 순서를 요구하지 않는다. 특정한 구현 예에서, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다.
본 기술한 설명은 본 발명의 최상의 모드를 제시하고 있으며, 본 발명을 설명하기 위하여, 그리고 통상의 기술자가 본 발명을 제작 및 이용할 수 있도록 하기 위한 예를 제공하고 있다.
이렇게 작성된 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하는 것이 아니다.
따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 통상의 기술자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다.
따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
본 발명은 로그 데이터 분석 방법 및 장치에 관한 것으로서, 더욱 상세하게는 입력되는 로그 데이터의 키(Key)를 데이터 타입(Type)에 따라 통계치를 산출함으로써, 데이터가 입력될 때마다 각 키에 따른 통계치를 산출하여 출력하는 방법 및 장치에 관한 것이다.
본 발명에 따르면, 입력되는 로그 데이터의 로그 포맷을 인지하여 파싱하고, 상기 파싱된 로그 데이터를 키에 따라 분류하며, 분류된 로그 데이터 별로 해당하는 데이터 타입에 기반하여 통계치를 산출함으로써, 로그 데이터에 키에 따른 각종 통계치를 시간 지연 없이 빠르게 처리하고 분석할 수 있다.
즉, 키에 따라 분류된 로그 데이터를 각각 해당하는 데이터 타입에 기반하여 키에 기반한 카운팅(Counting), 합산(Sum), 평균치(Average), 최대값(Max), 최소값(Min) 등을 즉시 산출함으로써, 입력되는 로그 데이터의 통계치를 시간 지연 없이 산출하여, 수없이 쏟아지는 빅데이터에 관한 통계치를 빠르게 산출 할 수 있는 것이다.
따라서 본 발명은 상기의 로그 데이터 분석 방법을 통해 데이터 마이닝 (Data Mining) 산업 발전에 이바지 할 수 있으며, 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있다.
110: 데이터 입력 모듈 130: 데이터 파싱 모듈
150: 데이터 통계 모듈 170: 데이터 출력 모듈

Claims (12)

  1. 하나 이상의 로그 데이터를 입력 받고, 데이터를 구분하는 키(Key) 및 데이터 처리 유형을 나타내는 데이터 타입(Type)으로 정의되는 로그 포맷을 인지하여 상기 입력된 로그 데이터를 파싱하는 데이터 파싱 모듈; 및
    상기 파싱된 로그 데이터를 인지한 로그포맷의 키(Key)에 따라 분류하고, 상기 분류된 로그 데이터 별로 해당하는 데이터 타입(Type)에 기반하여 통계치를 산출하는 데이터 통계 모듈;
    을 포함하는 것을 특징으로 하는 로그 데이터 분석 장치.
  2. 제1항에 있어서,
    기 설정된 시간 단위로 상기 산출된 통계치를 표준 출력 데이터 포맷에 기반한 통계 데이터로 생성하는 데이터 출력 모듈;
    을 더 포함하는 것을 특징으로 하는 로그 데이터 분석 장치.
  3. 제2항에 있어서, 상기 표준 출력 데이터 포맷은
    JSON(JavaScript Object Notation) 형태인 것을 특징으로 하는 로그 데이터 분석 장치.
  4. 제1항에 있어서, 상기 데이터 타입(Type)은
    상기 데이터 타입에 포함된 값 별로 카운팅(Counting)하는 데이터 타입인 단어(Word), 통계치를 산출하지 않는 데이터 타입인 텍스트(Text), 입력되는 상기 데이터 타입에 포함된 값을 수집하고 취합하여 통계치를 산출하는 데이터 타입인 숫자(Number) 및 기 설정된 포맷에 따라 처리하는 데이터 타입인 날짜(Date) 중 하나 이상을 포함하는 것을 특징으로 하는 로그 데이터 분석 장치.
  5. 제1항에 있어서, 상기 데이터 파싱 모듈은
    상기 파싱된 로그 데이터를 정규 표현식(Regular Expression)으로 변환하여 상기 데이터 통계 모듈로 전달하는 것을 특징으로 하는 로그 데이터 분석 장치.
  6. 로그 데이터 분석 장치가 적어도 하나 이상의 로그 데이터를 입력 받는 단계;
    데이터를 구분하는 키 및 데이터 타입(Type)으로 정의되는 로그 포맷을 인지하여 상기 로그 데이터를 파싱하는 단계;
    상기 파싱된 로그 데이터를 인지한 로그 포맷의 키(Key)에 따라 분류하는 단계; 및
    상기 분류된 로그 데이터의 데이터 타입을 기반으로 상기 로그 데이터를 처리하여 통계치를 산출하는 단계;
    를 포함하는 것을 특징으로 하는 로그 데이터 분석 방법.
  7. 제6항에 있어서,
    기 설정된 시간 단위로 상기 산출된 통계치를 표준 출력 데이터 포맷에 기반하여 통계 데이터로 생성하는 단계;
    를 더 포함하는 것을 특징으로 하는 로그 데이터 분석 방법.
  8. 제7항에 있어서, 상기 표준 출력 데이터 포맷은
    JSON(JavaScript Object Notation) 형태인 것을 특징으로 하는 로그 데이터 분석 방법.
  9. 제6항에 있어서, 상기 데이터 타입(Type)은
    상기 데이터 타입에 포함된 값 별로 카운팅(Counting)하는 데이터 타입인 단어(Word), 통계치를 산출하지 않는 데이터 타입인 텍스트(Text), 입력되는 상기 데이터 타입에 포함된 값을 수집하고 취합하여 통계치를 산출하는 데이터 타입인 숫자(Number) 및 기 설정된 포맷에 따라 처리하는 데이터 타입인 날짜(Date) 중 하나 이상을 포함하는 것을 특징으로 하는 로그 데이터 분석 방법.
  10. 제6항에 있어서,
    상기 파싱된 로그 데이터를 정규 표현식(Regular Expression)으로 변환하는 단계;
    를 더 포함하고, 상기 분류하는 단계는
    상기 변환된 로그 데이터를 분류하는 것을 특징으로 하는 로그 데이터 분석 방법.
  11. 제6항 내지 제10항 중 어느 하나의 항에 기재된 방법을 실행시키는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
  12. 제6항 내지 제10항 중 어느 하나의 항에 기재된 방법을 실행시키도록 구현되어 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
KR1020150148452A 2015-10-26 2015-10-26 로그 데이터 분석 방법 및 장치 KR102461022B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150148452A KR102461022B1 (ko) 2015-10-26 2015-10-26 로그 데이터 분석 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150148452A KR102461022B1 (ko) 2015-10-26 2015-10-26 로그 데이터 분석 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20170047856A true KR20170047856A (ko) 2017-05-08
KR102461022B1 KR102461022B1 (ko) 2022-11-01

Family

ID=60164423

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150148452A KR102461022B1 (ko) 2015-10-26 2015-10-26 로그 데이터 분석 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102461022B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101964412B1 (ko) * 2018-12-12 2019-04-01 주식회사 모비젠 이동통신데이터 처리시스템의 이상로그 발생을 진단하는 방법 및 그 시스템
CN110033242A (zh) * 2019-04-23 2019-07-19 软通智慧科技有限公司 工作时间确定方法、装置、设备和介质
CN112100149A (zh) * 2020-08-30 2020-12-18 西南电子技术研究所(中国电子科技集团公司第十研究所) 日志自动化分析系统
WO2021242291A1 (en) 2020-05-28 2021-12-02 Sumo Logic, Inc. Clustering of structured log data by key schema
KR102429855B1 (ko) * 2022-01-26 2022-08-05 주식회사 에스투더블유 파일 기반의 다양한 기종의 로그 데이터 저장 및 분석 방법
KR102616652B1 (ko) * 2023-04-27 2023-12-27 쿠팡 주식회사 전자 장치 및 그의 로그 데이터 관리 방법

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010075848A (ko) * 2000-01-20 2001-08-11 오길록 정규표현과 확률적 문맥정보를 이용한 문장범위 인식 장치및 그 방법
KR20050058374A (ko) * 2002-08-20 2005-06-16 도쿄 일렉트론 가부시키가이샤 데이터 콘텍스트 기반 데이터 처리방법
KR100631086B1 (ko) * 2005-07-22 2006-10-04 한국전자통신연구원 Xml을 이용한 텍스트 정규화 방법 및 장치
JP2010061595A (ja) * 2008-09-08 2010-03-18 Konica Minolta Business Technologies Inc ログデータ管理プログラム及びログデータ管理装置
JP2011034276A (ja) * 2009-07-31 2011-02-17 Brother Industries Ltd 情報処理装置
KR20130109805A (ko) * 2012-03-28 2013-10-08 주식회사 시큐아이 통합 관리 방법 및 시스템
KR101317826B1 (ko) 2011-12-20 2013-10-15 주식회사 이너버스 정규표현식을 이용한 로그 파일 표시방법 및 이를 수행하기 위한 장치
KR101329976B1 (ko) * 2012-06-13 2013-11-13 주식회사 시큐아이 리포트 생성 방법 및 시스템
JP5354138B1 (ja) * 2012-03-02 2013-11-27 日本電気株式会社 キャパシティ管理支援装置、キャパシティ管理方法およびプログラム
KR101533719B1 (ko) * 2014-03-05 2015-07-03 에스케이텔레콤 주식회사 스트리밍 기반의 실시간 데이터 분석 장치 및 방법

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010075848A (ko) * 2000-01-20 2001-08-11 오길록 정규표현과 확률적 문맥정보를 이용한 문장범위 인식 장치및 그 방법
KR20050058374A (ko) * 2002-08-20 2005-06-16 도쿄 일렉트론 가부시키가이샤 데이터 콘텍스트 기반 데이터 처리방법
KR100631086B1 (ko) * 2005-07-22 2006-10-04 한국전자통신연구원 Xml을 이용한 텍스트 정규화 방법 및 장치
JP2010061595A (ja) * 2008-09-08 2010-03-18 Konica Minolta Business Technologies Inc ログデータ管理プログラム及びログデータ管理装置
JP2011034276A (ja) * 2009-07-31 2011-02-17 Brother Industries Ltd 情報処理装置
KR101317826B1 (ko) 2011-12-20 2013-10-15 주식회사 이너버스 정규표현식을 이용한 로그 파일 표시방법 및 이를 수행하기 위한 장치
JP5354138B1 (ja) * 2012-03-02 2013-11-27 日本電気株式会社 キャパシティ管理支援装置、キャパシティ管理方法およびプログラム
KR20130109805A (ko) * 2012-03-28 2013-10-08 주식회사 시큐아이 통합 관리 방법 및 시스템
KR101329976B1 (ko) * 2012-06-13 2013-11-13 주식회사 시큐아이 리포트 생성 방법 및 시스템
KR101533719B1 (ko) * 2014-03-05 2015-07-03 에스케이텔레콤 주식회사 스트리밍 기반의 실시간 데이터 분석 장치 및 방법

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101964412B1 (ko) * 2018-12-12 2019-04-01 주식회사 모비젠 이동통신데이터 처리시스템의 이상로그 발생을 진단하는 방법 및 그 시스템
CN110033242A (zh) * 2019-04-23 2019-07-19 软通智慧科技有限公司 工作时间确定方法、装置、设备和介质
CN110033242B (zh) * 2019-04-23 2023-11-28 软通智慧科技有限公司 工作时间确定方法、装置、设备和介质
WO2021242291A1 (en) 2020-05-28 2021-12-02 Sumo Logic, Inc. Clustering of structured log data by key schema
EP4133681A4 (en) * 2020-05-28 2023-10-04 Sumo Logic, Inc. GROUPING LOG DATA STRUCTURED BY KEY SCHEME
EP4158835A4 (en) * 2020-05-28 2023-11-15 Sumo Logic, Inc. GROUPING LOG DATA STRUCTURED BY KEY VALUES
US11829189B2 (en) 2020-05-28 2023-11-28 Sumo Logic, Inc. Clustering of structured log data by key schema
CN112100149A (zh) * 2020-08-30 2020-12-18 西南电子技术研究所(中国电子科技集团公司第十研究所) 日志自动化分析系统
CN112100149B (zh) * 2020-08-30 2023-02-24 西南电子技术研究所(中国电子科技集团公司第十研究所) 日志自动化分析系统
KR102429855B1 (ko) * 2022-01-26 2022-08-05 주식회사 에스투더블유 파일 기반의 다양한 기종의 로그 데이터 저장 및 분석 방법
KR102616652B1 (ko) * 2023-04-27 2023-12-27 쿠팡 주식회사 전자 장치 및 그의 로그 데이터 관리 방법

Also Published As

Publication number Publication date
KR102461022B1 (ko) 2022-11-01

Similar Documents

Publication Publication Date Title
KR20170047856A (ko) 로그 데이터 분석 방법 및 장치
US11995145B2 (en) Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
CN106022483B (zh) 机器学习模型之间进行转换的方法与设备
WO2016173200A1 (zh) 用于检测恶意网址的方法和系统
CN105447139B (zh) 一种数据采集统计方法及其系统、终端、服务设备
US10043220B2 (en) Method, device and storage medium for data processing
CN108334641B (zh) 采集用户行为数据的方法、系统、电子设备、存储介质
US11115483B2 (en) Methods and apparatus for census and panel matching using session identifiers positioned in an HTTP header
CN112486708B (zh) 页面操作数据的处理方法和处理系统
WO2017054319A1 (zh) 投放数据处理方法、装置及存储介质
CN112448969A (zh) 链路追踪方法、装置、系统、设备及可读存储介质
CN104023046B (zh) 移动终端识别方法和装置
US10775751B2 (en) Automatic generation of regular expression based on log line data
CN108055166B (zh) 一种嵌套的应用层协议的状态机提取系统及其提取方法
US10140377B2 (en) Data processing, data collection
Oh et al. Optimizing Web Service messaging performance in mobile computing
Ottolini et al. Interoperability and scalability trade-offs in open iot platforms
CN112286815A (zh) 一种接口测试脚本的生成方法及其相关设备
US20080162687A1 (en) Data acquisition system and method
CN113138767B (zh) 代码语言转换方法、装置、电子设备及存储介质
KR20210000041A (ko) 로그 데이터의 실시간 분석 방법 및 그 장치
CN113032586B (zh) 对文本中的时间信息进行提取的方法、装置及电子设备
CN110347562A (zh) 数据采集方法、装置、计算机可读介质及智能终端设备
CN109981738B (zh) 一种适用于窄带物联网应用的云服务器
Mandavilli et al. Detection of natural disaster affected areas using R

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant