본문 바로가기
Data/Study

[ELK] Flask 웹로그 분석해보기1-Docker로 ELK Stack 설치

by 카프리썬 2021. 7. 6.
728x90

elk stack에 대해서 간단하게 알아봤으니, 직접 해보려고 한다. 

수집할 웹은 이전에 개발했던 뉴스레터 구독서비스를 사용하기로 했다.

큰 로그는 없을것 같긴하지만, 일단 Flask로 개발한 웹서비스가 있으니 일단 해보자! 

 

Docker로 ELK Stack설치

ELK Stack 일일이 설치해도 되지만, 두렵고 엄두가 나지 않는다. (세상에서 제일 골치아픈 config..)
그래서 대부분 docker로 설치하는 듯하다. Elastic Search, Logstash, Kibana를 한번에 설치 할 수 있다! 

훨씬 설치가 간단하고, 삭제도 깔끔하다.

docker를 이용할 수 있는 모든 플랫폼에서 동일한 방식으로 적용이 가능한 이점이 있다

 

물론 docker말고 직접 레이어별로 설치를 해보면서 구성해볼 수도 있다. >> 여기참고

나는 docker compose를 사용해서 여기에 있는 도커파일을 받아서 설치하고, confing를 수정할 것이다. 

 

1. git clone 진행

분석할 웹서버가 있는 서버에서 아래와 같이 git clone진행 

$ git clone https://github.com/deviantony/docker-elk.git

$ cd docker-elk

해당프로젝트에는 elk설치를 위한 yml파일들이 있다.  위와 같은 구조를 가지고 있으니까 참고하기! 

 

 

 

2.  X-Pack 설정 주석처리

deviantony/docker-elk는 기본적으로 X-Pack설정이 되어 있다.

ELK의 확장팩이라고 보면 되는데 모니터링을 제외하고 모두 유료서비스이다.

그래서 라이센스가 없다면 각 설정파일에서 X-Pack설정을 지워줘야한다.  

 

1) ElasticSearch  vi elasticsearch/config/elasticsearch.yml

2) Logstash  vi logstash/config/logstash.yml

3) Kibana vi kibana/config/kibana.yml

3. logstash 설정파일 변경  

logstash는 filebeats 에이전트를 통해 수집한 로그데이터들을 elasticSearch로 전달한다.

그래서 로그들을 어떤 형식으로 전달할것인지 filters에 추가해서 가공할 방법을 설정한다. 

 

vi logstash/pipeline/logstash.conf

일단 난 필터없이 테스트해볼 것이기 떄문에 해당 설정파일의 password부분만 수정하면 된다. 

 

Docker Compose

도커컴포즈란, 여러개의 컨테이너의 실행을 한번에 관리할 수 있도록 도와주는 기술이다.

만얀, docker compose를 사용하지 않으면 컨테이너를 일일이 하나씩 생성하고 올려야한다. 

 

그런데 docker-compose가 있다면 아래에 보이는 docker-compse.yml 파일을 빌드하고 실행하면 된다.

docker-compse.yml 파일은 여러개의 컨테이너들을 어떻게 실행할것인지 정의해 둔 파일이다. 

 

https://ryu-e.tistory.com/11

https://junlab.tistory.com/219

 

4. docker-compose.yml 수정 

이제 위에서 설정한 각각의 yml파일을 관리하는 docker-compse.yml 파일을 수정한다. 

각 서비스들이 정의되어 있는데, 각 yml파일 주소가 volume의 source에 정의되어 있는 것을 볼 수 있다. 

특별한 상황이 아닌이상 크게 수정할 것은 없고 중간보이는 "changeme"의 password부분만 수정하면 된다. 

Flask 포트충돌로 인해 최종적으론 logstash포트를 5001로 변경했다. 

5. docker로 실행하기

이제 이렇게 정의된 docker-compose.yml를 docker-compose로 실행하기만 하면 된다.

대신 docker-compose를 위해선 docker-compse가 사전에 설치되어 있어야한다. 

$ docker-compose build && docker-compose up -d

이렇게 yml파일로 생성한 이미지들을 하나씩 가져와서 ElasticSearch, Logstash,Kibana가 생성된다. 

역시 여러개 이미지를 이렇게 한번에 띄울수 있어서 docker-compose 참 편한다. 

 

앗,.그런데 이거 뭔가 이상하다..

게속 인스턴스가 엄청 버벅거리고 심지어는 켜지지도 않는다.. 

뭔가 느낌상 내 인스턴스의 스펙이 너무 낮아서 그런게 아닐까 싶다...

지금은 일단 비용떄문에 프리티어 t2.micro사용중이긴 한데.. 다음에 다시 해봐야지...

 


 

참고한자료

설치

https://woolbro.tistory.com/112?category=910053

https://neulpeumbomin.tistory.com/18

https://velog.io/@dion/Docker%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-ELK-%EC%8A%A4%ED%83%9D-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

requirements 만들기

https://itinerant.tistory.com/100

 

아파치 로그 

https://teichae.tistory.com/entry/Docker-Compose%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-ELK-Stack-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-1

 

Flask 로그

https://judo0179.tistory.com/60

https://woolbro.tistory.com/88

 

Django로그

https://blog.nerdfactory.ai/2019/06/19/ELK-log-management-system.html

반응형