[2021.04.02] 인턴 +32 Apache log Analysis log file(3GB) - geoip 사용 O
이번 아파치 로그 분석에 대한 실습 자료는 아래 링크에서 받을 수 있다.(Kaggle)
www.kaggle.com/eliasdabbas/web-server-access-logs?select=access.log
-> 구글로 로그인 후 다운로드를 하면 된다.
하지만, log 데이터 용량이 3GB라 파일을 볼 수 없다.
파일을 보기 위해 무설치 버전(대용량 editor)을 설치해서 심심하면 열어봐라.
* 에디터의 배경을 수정하고 싶으면 -> LTFViewr5u.ini 열어서 default와 info에 있는 BkImage=darkwatch.jpg를 수정해주면 된다.(자기가 바꾸고자 하는. jpg)
* 나처럼 흑백으로 사용하고 싶으면, 주석처리(#)를 해주면 된다. #Bklmage = darkwatch.jpg
-> 그냥 다운받아서 쓰면 된다.(이미 주석 처리해놓음)
-> 3GB LOG 기록이 담긴 파일을 위의 파일(무설치 대용량 editor)로 열은 상태이다. 무려, 라인수가 10365153개이다.
------------------------------------------------------------------------------------------------------------
자, 이제 로그 분석 데이터 자료 준비는 끝났으니, 본격적으로 log pattern를 분석해보자
1. 로그분석
1-1) grok-patterns에서 일치하는 패턴을 찾아서 사용
github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns
1-2) 또는 grok debugger를 이용해서 패턴을 분석
http://grokdebug.herokuapp.com/
* 로그 분석 실습 1과 실습 2의 자료와 다르게 이것이 진정한 아파치 로그 형태이다.
* 다른 실습 자료들은 grok로 하나하나 구별해줘야 하는데, 이 예시는 그렇지 않다
★★★ grok에서, 아파치 로그 형태를 위해 만들어놓은 %{COMBINEDAPACHELOG}를 사용하면 된다 ★★★
이번에 사용하게 될 아파치 로그 분석 실습 예시 (로그 분석 실습 1과 실습 2는 아파치 로그 형태가 아님. 로그 형태임)
5.134.161.178 - - [26/Jan/2019:20:29:11 +0330] "GET /static/images/amp/third-party/footer-mobile.png HTTP/1.1" 200 62894 "https://www.zanbil.ir/m/filter/b46%2Cp41" "Mozilla/5.0 (Linux; Android 6.0; HTC_U-2u) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 Mobile Safari/537.36" "-"
-> 사진을 보면 알다시피, 아파치 로그 분석 실습 1과 실습 2를 할 땐, 하나하나 grok를 찾아 구별해줬어야 했다.
why?
-> 완전한 아파치 로그 형태가 아니어서, %{COMBINEDAPACHELOG}를 사용할 수 없기 때문이었다.
-> 하지만, 이번 아파치 로그 실습 3의 예시는 완벽한 아파치 로그 분석 실습 예시여서, %{COMBINEDAPACHELOG}를 사용하면 된다. (참 편리하다. 알아서 다 구별해준다.)
----------------------------------------------------------------------------------------------------------------------------
자, 이제 conf 파일을 수정한 후에, template를 만들어보자(geoip를 사용하기 위해 - 로그분석실습 2 게시글 참고)
★★★★★ 매우 중요 ★★★★★
# grok에서 아파치 로그만 사용할 수 있게 해주는 %{COMBINEDAPACHELOG}를 만들어 놓음. 그대로 사용하면 된다
grok { match => { "message" => ["%{COMBINEDAPACHELOG}"] } }
# ★★★ geoip는 무조건 %{COMBINEDAPACHELOG}만 사용 가능하다. 완전한 아파치 로그 형태일 때만. ★★★
geoip {
source => "clientip"
}
자, 이제 conf 파일을 대충 수정했으니, 실행해보자
-> 1. elasticsearch.bat, kibana 기동(관리자 - 명령 프롬포트)
-> 2. logstash -f 파일명. conf
-> 일부분 캡처 완료 (geoip 위도와 경도 잘 나오는 것을 확인할 수 있다)
-----------------------------------------------------------------------------------------------------------------------------------
이제, elasticsearch에 kibana-template를 만들어보자.(dev tools)
사용하려면, 1. conf(파일) 부분과, 2. kibana - template를 수정해줘야 사용이 가능하다.
수정하지 않고 geo_ip를 출력 시, 에러 문구 geoip lookup failure 발생
★★★★★ 즉, 결론 ★★★★★
1. 데이터를 넣기 전에 먼저 kibana-template (geo_point) 만들기
PUT geoip_test1
2. 생성된 index에 geo_point로 사용할 속성 생성
PUT geoip_test1/_mapping
{
"properties" : {
"geoip" : {
"dynamic" : true,
"properties" : {
"location" : {
"type" : "geo_point"
}
}
}
}
}
-> 만들어진 인덱스 geoip_test 1을 사용해서, conf파일에도 동일하게 수정해주자.
* 1번 라인에서 처음 만들 때 오류 뜨면 최대한 index명을 간략하게 할 것(너무 길어서 에러 뜨는 거 같음 - 내 생각)
* 다시 한번 더 말하지만, geoip는 완전한 로그 형태일 때만 사용 가능(%{COMBINEDAPACHELOG} 이 사용 가능할 때.)
PUT geoip_test1
PUT geoip_test1/_mapping
{
"properties" : {
"geoip" : {
"dynamic" : true,
"properties" : {
"location" : {
"type" : "geo_point"
}
}
}
}
}
GET geoip_test1
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
★★★ 하면서 알게 된 점 ★★★
-> remove_field로 @timestamp를 지우면 안 된다. (여기서 select 할 게 없음)
실행 과정
결과 값 캡처
-----------------------------------------------------------------------------------------------------------------------------
자, 이제 실행 과정은 생략하고 kibina에서 만들어주자
-> index pattens에 들어가, conf에서 지정해준, index명을 그대로 친 후에 Next step 클릭 (1/2)
-> @timestamp select후, create index patten 클릭
★★★ 하면서 알게 된 점 ★★★
-> remove_field로 @timestamp를 지우면 안 된다. (여기서 select 할 게 없음)
-------------------------------------------------------------------------------------------------------------------
자, 이제 maps로 시각화를 해보자.
* 하면서 알게 된 점(속도를 늘리고 싶으면.으로 찍는다 -> 데이터가 빨리 들어감)
output {
stdout {
#codec => rubydebug
codec => dots {} #.으로 출력하여, 속도를 올려주기 위해
}
}
----------------------------------------------------------------------------------------------------------------------
이제, 본격적으로 map 시각화해보자
사용 방법
-> maps -> create maps 버튼 클릭 -> add layer -> documents -> index pattens(apache_log5 select 해주기)
Dashboard
-------------------------------------------------------------------------------------------------------------------------
'Data > ELK' 카테고리의 다른 글
[2021.04.14] 인턴 +44 Linux(Ubuntu18.04) - ELK 설치(MySQL 연동 포함) & Virtual Machine (Azure) (0) | 2021.04.14 |
---|---|
[2021.04.06] 인턴 +36 Azure에서 ELK 사용하기(가상머신X) (0) | 2021.04.06 |
[2021.04.01] 인턴 +31 log Analysis 2 (로그 분석 2) (0) | 2021.04.01 |
[2021.03.31] 인턴 +30 Apache log concept과 로그 분석1 (0) | 2021.03.31 |
[2021.03.26] 인턴 +25 logstash filter 기능(사용법) (0) | 2021.03.26 |
댓글