ELK는 Elasticsearch, Logstash 및 Kibana, 이 오픈 소스 프로젝트 세 개를 뜻하는 약자이다.
- Elasticsearch : 검색 및 분석 엔진
- Logstash : 여러 소스에 동시에 데이터를 수집하여 변환한 후 Elasticsearch 같은 “stash”로 전송하는 서버 사이드 데이터 처리 파이프라인
- Kibana : 사용자가 Elasticsearch에서 차트와 그래프를 이용해 데이터를 시각화
여기에 데이터 수집기인 Beats를 추가한 것을 ELK Stack이라고 한다. Beats를 추가하면 다른 서버에서 데이터를 가져오는 것도 가능해진다.
ubuntu 기준으로 elk를 구축해보겠다.
Elasticsearch 설치
설치된 프로그램의 파일은 아래와 같은 경로에 저장된다. 로그나 명령어를 실행하기 위해선 아래 파일 경로에 접근해야 하니 알아두면 좋다.
- 실행 파일 :
/usr/share/{프로그램명}
- 로그 :
/var/log/{프로그램명}
- 시스템 설정 파일 :
/etc/default/{프로그램명}
- 설정 :
/etc/{프로그램명}
- 데이터 저장 :
/var/lib/{프로그램명}
Elasticsearch는 기본적으로 설치된 서버에서만 통신이 가능하게 설정이 되어있어서 외부접속을 허용하기 위해서는 추가 설정이 필요하다. network.host와 cluster부분을 바꾸고 실행해주자.
Kibana
- Elasticsearch와 함께 작동하도록 설계된 오픈 소스 분석 및 시각화 플랫폼
- Elasticsearch 색인에 저장된 데이터를 검색, 보기 및 상호 작용
- 고급 데이터 분석을 쉽게 수행하고 다양한 차트, 테이블, 맵에서 데이터를 시각화
- 간단한 브라우저 기반의 인터페이스를 통해 실시간으로 Elasticsearch 쿼리의 변경 사항을 표시하는 동적 대시보드를 신속하게 만들고 공유
설치한 뒤 외부 트래픽을 허용하고, elasticSearch와 연결되도록 설정을 수정해준다.
서버에 웹으로 처음 접속해서 로그인 해보면 이런 화면이 보인다.
Logstash 설치
정보를 받아와서 매핑할 형식을 /etc/logstash/conf.d
밑에 파일로 지정해준다.
나는 로깅용으로 써볼 생각이라 grok으로 log 패턴을 정의했다.
Beat 설치
kibana index 추가
Stack Management > Index Management
에 들어가서 Logstash에 설정해놨던 정보랑 같은 이름의 index를 매핑하도록 추가해준다.
그러면 이런식으로 Discover에서 데이터를 확인하는 것이 가능하다.
이 데이터는 내 Spring 서버에서 파일로 출력한 로그 > Beat > Logstash > ElasticSearch > Kibana의 과정을 통해 보여지는 것이다. 지금은 기본적인 세팅만 해놨는데 다른 자세한 커스텀 설정을 많이 할 수 있는 것 같다.
참고