ELK (ELK Stack)
Elasticsearch + Logstash + Kibana -> 3가지 오픈 소스 프로젝트 모음이다.
원래는 이 삼총사를 ELK Stack이라 불렸는데, Beats가 포함되어 Elastic Stack 으로 개명하고 열심히 살고있는 친구들이다.
그리고 나는 이 이야기를 무척 좋아한다.
뻥이다.
각 역할을 간단하게 보자면,,
Kibana -> 데이터 시각화
elasticsearch -> 데이터 저장 및 빠른 저장 전문 검색 및 분석엔진
logstash + beats -> 데이터 수집
라고 할 수 있다.
+) 5.0.0 버전부터 Beats가 포함되었다.
Elastic Stack 주요 기능
ElasticSearch | - JSON 기반의 분산형 검색 및 분석엔진 - 많은 양의 데이터를 보관하고 분산형, 실시간으로 분석엔진 - 데이터 저장소, 빅데이터 처리할 때 매우 유용 - 확장성 (json 문법만 OK) 이 매우 좋은 자바로 구현된 오픈소스 검색엔진 |
Beats | - 데이터 수집 및 전송 - 단말 장치의 데이터를 전송하는 경량 데이터 수집기 플랫폼 |
Logstash | - 데이터 수집, 변환, 전송 - 데이터 가공 후 ElasticSearch에 저장 가능한 동적 데이터 수집 파이프라인 |
Kibana | - 데이터 시각화 - 확장형 사용자 인터페이스로 데이터를 구체적으로 시각화 - 가령 oracle db의 sqlplus와 흡사한 기능 |
ELK Stack Architecture
- 로그 : 분석이 필요한 서버 로그를 식별
- Logstash : 로그 및 데이터 수집 (필요의 경우 데이터 파싱, 변환)
- ElasticSearch : Logstash 에서 변환된 데이터 저장, 검색 및 인덱싱
- Kibana : Kibana는 Elasticsearch DB를 사용하여 탐색, 시각화
대용량의 데이터를 처리하는 동안 버퍼링과 복원력을 위해 Kafka, RabbitMQ가 필요할 수 도 있고, 보안을 위해 Nginx를 사용할 수도 있다.
Elasticsearch 란
Elasticsearch 는 NoSQL 데이터베이스로 한마디로 하자면, 검색엔진이다.
NoSQL 기반으로 데이터 구조를 가져가고, 각각은 RDBMS와 매핑되는 용어를 가지고 있다.
RDBMS 와 검색엔진 차이
RDBMS는 table 로 나누어서 자를 수 있는 체계적인 구조이다.
--> 단어 검색이나 쿼리문을 활용한 데이터 선별이 가능하다.
검색엔진은 사용자 친화적이고 유연한 엔진이다.
--> 텍스트 특징을 이용한 동의/유의어 검색 가능
--> 비정형 데이터 색인 및 검색 가능
--> 역색인
역색인이란?
색인은 책의 목차이다.
역색인은 어떤 단어가 책의 어디에 위치하는지 적어둔 단어별 색인 페이지라고 할 수 있겠다.
역색인은 ElasticSearch 검색이 빠른 이유이기도 하다.
역색인 기능은 일반 RDBMS에는 없지로호오오옹
Elasticsearch 특징 및 장단점
- Elasticsearch는 NoSQL 기반의 문서 지향 데이터베이스 이다.
- http protocol로 접근이 가능한 REST API를 통해서 데이터 조작을 지원한다.
- 분산처리를 통한 빠른 검색이 가능하다.
- 전문 검색 / 구조 검색 모두를 지원한다. (실시간 분석이 가능하다 하지만, 완벽 실시간은 아니고 "거의" 실시간 ^^*,,Near Real Time,,)
- 트랜잭션 rollback은 지원하지 않는다.
- 데이터 삭제 및 업데이트에 비용소모가 심하다.
- 기존 문서를 삭제 후에 재생성하기 때문이다.
ES HTTP Method | RDBMS SQL |
GET | SELECT |
PUT | INSERT |
POST | UPDATE, SELECT |
DELETE | DELETE |
HEAD (인덱스 정보 확인) |
term
Elasticsearch | RDBMS |
Index | Database |
Shard | Partition |
Type | Table |
Document | Row |
Field | Column |
Mapping | Schema |
Query DSL | SQL |
Elasticsearch 마스터 처럼 말한다면,
데이터를 인덱스에 저장해서 데이터를 구성한 다음 이 데이터를 샤드로 나누고 샤드는 클러스터 내에 여러 노드에 분산되고 이는 확장성, 데이터 빠른 검색 및 수집을 수행하게 된다.
-> Elasticsearch 마스터?로서 이 DB를 사용하는 가장 큰 이유 중 하나는 노드와 클러스터 구조로 인해 확장성과 가용성이 매우 뛰어나기 때문이다.
Elasticsearch install (v. 7.11.1)
우선 ELK Stack 친구들을 버전과 운영체제에 맞춰 install 해주고 Elasticsearch를 먼저 실행시켜준다.
그 이유는 elasticsearch를 실행해야 kibana가 열리기 때문이다.
elasticsearch.bat 배치파일이 있는 경로에서 해당 배치파일을 실행하고 cmd 창에 나온대로 localhost:9200으로 들어가면
이 화면이 뜬다면 실행 성공./,!
그리고 크롬 확장 프로그램인 'Multi Elasticsearch Head'를 크롬에 추가해주었다.
영차 영차
!!!!!!꼭 elasticsearch 배치파일 실행하고 kibana 배치파일을 실행하십시오. (바다거북스프 톤으로)
Kibana 란
Kibana는 데이터의 형태를 만들고, Elastic Stack을 탐색할 수 있게 하는 시각화 및 관리 서비스이다.
Kibana로 다음과 같은 작업을 할 수 있다.
- 검색, 관찰, 데이터 보호 : kibana는 document 검색에서 log 분석, 보안 취약성 찾기와 같은 기능에 access할 수 있는 portal이다.
- 데이터 분석 : 숨은 insight를 찾고 차트, 그래프 등에 발견한 내용을 시각화 한 뒤 대시보드를 구성한다.
- Elastic Stack 관리, 모니터링 및 보안 : data를 관리하고, Elastic Stack cluster의 상태를 모니터링하고, 어떤 사용자가 어떤 기능에 access 할 수 있는지 제어한다.
실습
데이터 생성
kibana 에서 알려준 로컬 주소로 들어간다음 Manage 탭에서 DevTools를 누르면, 콘솔창을 이용하여 데이터를 확인 및 생성 할 수 있다.
bulk 형식의 데이터로 index 생성 및 document 데이터를 새로 저장하고 multi Elasticsearch Head로 들어가서 overview를 새로 고침 해주면,
짜자잔 account라는 인덱스가 생성된 것을 확인할 수 있다. 야~ 호 ~
kibana - Visualize
kibana에서 Dashboard를 사용하기 위해서는 Visualize 앱에 먼저 데이터 시각화를 해야 대시보드로 끌어올 수 있다.
Dashboard에서 Visualize 에서 만든 앱을 끌어오기전에 ! !!!! 에에에에!!!!!
kibana 에서 시각화를 위한 데이터를 준비해 준다.
분석을 위해서는 먼저 index pattern 을 정의해주어야 한다.
Discover 메뉴에 들어가면 Time field 기준으로 저장 된 데이터를 확인할 수 있다.
만약, 아무런 데이터가 뜨지않는다면, 데이터가 존재하는 기간을 포함하게 설정해주는 것도 잊지 맙시다요! ! !
Logstash 는 다음 이 시간에 계속되겠습니다.
참고