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 는 다음 이 시간에 계속되겠습니다.
참고
ELK Stack Tutorial: What is Kibana, Logstash & Elasticsearch?
The elk, or wapiti (Cervus canadensis), is one of the largest species within the deer family, Cervidae, in the world, and one of the largest land mammals in North America and Eastern Asia. This animal
www.guru99.com