Cloud Log Analytics 신규 기능— Lucene Query 검색

MyeongSu Kim
NAVER CLOUD PLATFORM
9 min readNov 18, 2020

--

기존에는 검색어를 입력하여 매칭되는 로그만 검색이 되었는데요. 이번 업데이트로 Lucene Query를 사용하여 로그 검색이 가능합니다.

Apache Lucene은 오픈소스 텍스트 검색 엔진 라이브러리로
Elasticsearch, Apache Solr 등의 검색 엔진으로 활용되고 있습니다.
Cloud Log Analytics에서는 기존 일반 Keyword 검색 기능만 제공되었는데요. Lucene Query를 통해 필드 지정 검색, 와일드 카드 검색, 정규식 등 다양한 검색이 가능해졌습니다.

이번 시간에는 Cloud Log Analytics에 로그를 적재하고, Lucene Query로 로그 조회를 해보도록 하겠습니다.

▶Cloud Log Analytics는 다양한 로그들을 한 곳에 모아 저장하고 손쉽게 검색하고, 저장된 로그들을 Object Storage로 export 가능한 서비스 입니다.

※자세한 서비스 소개는 아래의 링크에서 확인 가능합니다!
Cloud Log Analytics Service : https://www.ncloud.com/product/analytics/cloudLogAnalytics

서버 로그 생성

Console에서 Server 상품에 접속하여 서버를 생성 합니다.

먼저 서버 이미지를 선택합니다.

서버 설정에서 VPC 및 Subnet를 비롯한 설정들을 선택합니다.

인증키 단계에서 기존 인증키나 새로운 인증키를 생성합니다.

서버의 ACG(Access Control Group)을 선택합니다.

최종 확인 후 서버를 생성합니다.

위와같이 서버를 하나 더 생성하고, Public IP를 신청하여 생성된 서버에 할당 합니다.

자세한 서버 생성, 공인IP 사용 및 접근 방법은 가이드 문서를 확인하면 도움이 됩니다.

가이드 문서 : https://docs.ncloud.com/ko/compute/compute-1-1-v2.html

아파치 로그를 생성하기 위해 여기서는 Apache log generator를 사용하여 가상의 로그를 생성하겠습니다. 먼저 Apache log generator를 다운로드 합니다.

아래 git 주소에서 Fake-Apache-Log-Generator를 다운로드 받아 압축을 해제합니다.

wget https://github.com/kiritbasu/Fake-Apache-Log-Generator/archive/master.zipunzip master.zip

다운로드 받아 압축 해제 후 아파치 로그를 생성하겠습니다.

먼저 서버에 python pip 및 Fake-Apache-Log-Generator 관련 python 패키지를 설치합니다.

yum install epel-releaseyum install python-pipcd Fake-Apache-Log-Generator-master/pip install -r requirements.txt

아파치 로그를 /tmp/custom 경로에 생성합니다.

mkdir /tmp/custompython apache-fake-log-gen.py -n 0 -o LOG -p /tmp/custom/sample

Cloud Log Analytics 로 로그 수집

먼저 Cloud Log Analytics 관련한 내용은 아래 설명서를 참고 바랍니다.

설명서 : https://docs.ncloud.com/ko/cla/cla-1-1.html

Cloud Log Analytics 서비스를 사용하기 위해 Subscription을 합니다.

Management에서 Server 탭에 위에서 생성한 서버들을 확인 할 수 있습니다.

서버를 선택하고 수집 설정 버튼을 누르면 Log 수집 설정 팝업이 발생됩니다.

Log Template 를 Custom Log로 선택하고, Log Type 및 위에서 생성중인 아파티 Log 경로를 입력합니다.

추가 버튼을 누르고 적용을 누릅니다.

로그 수집 agent 가이드에 따라 설치 명령어를 복사하여 수행합니다.

설정완료 상태가 되는지 확인 합니다.

Lucene Query 기능 확인

Cloud Log Analytics의 좌측 메뉴에서 Search를 눌러 이동합니다.

먼저 Cloud Log Analytics 관련한 내용은 아래 설명서를 참고 바랍니다.

https://docs.ncloud.com/ko/cla/cla-1-1.html

Cloud Log Analytics의 Search 화면에서는 Lucene Query를 이용한 검색이 추가되어 기존 Keyword 검색과는 탭으로 구분지어 보여줍니다. 그리고 하단에 선택한 필드 부분이 추가 되어 필드 확인 및 필터 연동을 할 수 있습니다.

선택한 필드에서 “beat.hostname”을 선택하면 수집되는 로그의 서버 정보를 확인 할 수 있습니다.

참고로 @timestamp는 로그가 서버에 도착한 시간의 timestamp를 의미합니다.

“beat.hostname”아래 서버 선택시 Lucene Query 검색 탭으로 이동되며, 선택한 서버에 대한 필터가 자동 설정됩니다.

그리고 검색 결과 부분에서는 Table 및 Json 형식으로 해당 로그 정보를 보여주고,

Table 형식에서는 ‘+’ 버튼을 누르게되면 해당 값이 포함된 필터를 추가하고, ‘—’ 버튼을 누르게되면 해당 값을 뺀 필터를 추가하며, ‘☆’ 버튼을 누르게되면 필드 존재 여부로 필터를 추가합니다.

필터 추가 버튼을 눌러 직접 추가할 수도 있습니다. 필터 추가 버튼을 누르면 아래 팝업과 같이 보여집니다.

필드 및 조건 그리고 필터 값을 입력 후 저장하면 아래 이미지과 같이 필터 적용이 됩니다.

Lucene Query 탭에서 Lucene Query 를 입력 및 조회가 가능합니다.

message 필드에서 “Firefox” 와 “Safari”가 포함된 로그를 조회하고자

message:(“Firefox”||”Safari”) 를 입력하고 쿼리를 실행하면 message에 Firefox 또는 Safari 가 포함된 로그들을 검색 할 수 있습니다.

Lucene Query로 필드 지정 검색, 정규식 검색, Boolean연산 등의 다양한 검색을 할 수 있습니다.

예)필드 지정 검색
message:(“Firefox”||”Safari”)
예)정규식 검색
message:\/(Fire\|Sa)fox\/
예) Boolean연산 ( AND, OR, NOT, +, -)
GET -Firefox -Safari

Lucene Query 사용 구문 관련한 자세한 정보는 아래 링크에서 확인이 가능합니다.

Lucene Query Parser Syntax : https://lucene.apache.org/core/2_9_4/queryparsersyntax.html

참고로 Log 수집 설정시 Symbolic link 사용을 체크하면 Log 경로가 Symbolic link 인 경우에도 수집 가능하여 Symbolic link 경로 사용시 체크하도록 합니다.

이상으로 서버에서 생성된 로그를 Cloud Log Analytics 서비스를 통해 수집하고 Lucene Query 기능으로 로그 검색 및 검색 결과 확인을 하였습니다.

--

--