[ELK] ELK를 활용한 웹 로그 모니터링 시스템 - 1
- 꼬반
- 2018. 1. 9. 15:43
회사에서 웹 서버의 로그 수집 및 분석을 위해 2015년 말 부터 ELK Stack과 TICK+Grafana Stack으로
웹 서버 및 주요 서버, 서비스의 로그 수집 및 대시보드를 통한 모니터링을 활용해 왔다.
다만 ELK는 당시에는 버전이 낮았고 성능이나 사용적인 부분에서 InfluxDB 보다 불편함을 느껴
지금까지 주로 TICK을 사용해왔다.
ELK는 1.X에서 2.X로, 그리고 5.X로 마이그레이션을 하며 사용은 했었지만 제대로 활용하진 않았다.
얼마전 Elastic Tour 2017 Seoul 에 참석하여 6.X ELK를 보니 다시 한번 제대로 사용해보자는 생각이 들어
처음부터 새로 구축하기로 하였다.
이 글은 간단한 설치 및 구성과 logstash, filebeat 를 통한 로그 수집, 필터 처리, kibana를 통한
대시보드 작성을 진행과정에 따라 적어보고자 한다.
1. ELK Stack 설치
1.1. 설치 버전 : 6.1.1
1.2. 준비 사항 : Docker CE 17.12 / docker-compose 1.18 / Golang 1.5 이상
1.3. 쉽게 사용하기 위해 Docker, Docker-compose 를 통해 elk-cluster 를 구축하려면 다음과 같이 docker-compose.yml 파일을
사용하여 클러스터를 올린다. 몇몇 세부 옵션들은 yml 파일을 수정하여 사용한다.
version: '2.2'
services:
elasticsearch1:
image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
container_name: elasticsearch1
environment:
- cluster.name=kobic-elk-docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms4096m -Xmx4096m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1
container_name: elasticsearch2
environment:
- cluster.name=kobic-elk-docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms2048m -Xmx2048m"
- "discovery.zen.ping.unicast.hosts=elasticsearch1"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:6.1.1
container_name: kibana
environment:
SERVER_NAME: kibana.kobic.re.kr
ELASTICSEARCH_URL: http://localhost:9200
ports:
- 5601:5601
networks:
- esnet
logstash:
image: docker.elastic.co/logstash/logstash:6.1.1
container_name: logstash
environment:
XPACK_MONITORING_ELASTICSEARCH_URL: http://localhost:9200
ports:
- 5044:5044
networks:
- esnet
depends_on: ['elasticsearch1']
volumes:
esdata1:
driver: local
esdata2:
driver: local
networks:
esnet:
위 파일이 위치한 곳에서 docker-compose up 명령어를 통해 서비스를 올리면 해당 이미지들을 pulling 하고 기다리면
각 컨테이너가 실행이 된다. 그후 브라우저에서 localhost:5601 로 접속하면 kibana에 접속할수 있고 모니터링 탭을 통하여
각 elk node, kibana, logstash 의 상태를 확인할 수 있다.