Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
ELK STACK 실습 / Elasticsearch, Kibana
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
J.phil
2023-02-02
2023-02-02
3399
# OVERVIEW 해당 Posting은 실습 페이지이며, 이론을 학습하지 않고 온 독자분들은 아래링크로 이동하여, `Elasticsearch` 및 `Kibana` 에 대한 정의 및 사례들을 학습하고 오길 권고합니다 [ELK. 이론](https://www.joinc.co.kr/w/elk_stack_theory) 자 이론은 이 정도 알았으면, 바로 실습을 들어가보자. 사실 Elasticsearch는 조금더 규모있고 방대한 데이터를 처리하고 분석하기 위해서는 클러스터를 구성해야한다. 이가 더 궁금한 사람들은 [클러스터 구성](https://www.elastic.co/guide/en/elasticsearch/reference/current/add-elasticsearch-nodes.html)에 방문하여 알아보도록 하고, 일단 실습차원에서 Elastucsearch와 Kibana 예제를 진행해보면서 full-text search가 무엇이고 data organization 들이 어떻게 구성되어있는지 Kibana는 어떻게 활용하고 사용자들에게 어떤 편리성을 주는지 확인해보자. 아 참! 해당 예제는 Linux Ubuntu 운영체제를 이용하여 실습할 계획이다. 만약 한번도 사용해본적이 없다면, 이번 기회에 꼭! 사용해보기를 권고드린다. <br> <br> # Prerequisite 일단 본격적인 실습전에 Material 들을 갖추기 위해서, 여러분 Ubuntu Machine 에 아래 오픈소스 및 예제 데이터들을 다운 받자. (조금 지난 버전이기는 하지만 컨셉 및 데이터를 분석하는데 큰 문제가 없으니 넓은 아량으로 이해해주시길 바랍니다 ? ```bash wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.5.tar.gz wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.7-linux-x86_64.tar.gz wget https://download.elastic.co/demos/kibana/gettingstarted/shakespeare.json wget https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip wget https://download.elastic.co/demos/kibana/gettingstarted/logs.jsonl.gz tar -xvf elasticsearch-5.6.5.tar.gz tar -xvf kibana-5.6.7-linux-x86_64.tar.gz ``` # ELATICSEARCH <br> ### 1\. CONFIG 설정 및 실행 포트 설정을 위해 `elasticsearch.yml` 편집하여 아래와 같이 port 를 아래와 같이 9200번으로 설정한다. ```yml // vim elasticsearch-5.6.5/config/elasticsearch.yml # set the bind address to a specific IP (IPv4 or IPv6): #network.host: 192.168.0.1 #network.host: 0.0.0.0 # set a custom port for HTTP: http.port: 9200 ``` config 설정한후 `./elasticsearch-5.6.5/bin/elasticsearch` 커맨드를 통해 Elasticsearch를 LOCAL MODE로 실행하여 아래와 같이 조회되는지 확인하고, 브라우저를 실행하여 정상적으로 접속되는지도 확인해보자. > 만약 실행시 아래와 같은 메모리 부족 현상이 보인다면, // vim elasticsearch-5.6.5/config/jvm.options 에 들어가서 `-Xms500m -Xmx500m` 자신의 메모리 적정 수치에 맞게 Memory 사이즈를 입력하자. `# There is insufficient memory for the Java Runtime Environment to continue. # Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.`   <br> <br> ### 2. CREATE INDEX and INSERT DATA 우선 이번 예제는 위 `shakespeare.json` 데이터를 이용해 인덱스를 만들고, 그 안에 데이터를 Bulky Insert 할 예정이다. 그 후, 원하는 모든 필드들을 조회하는 full-text search 예제에 대해서 간단히 진행해볼 예정이다. > 1.데이터를 적재하기 전에, ES에 인덱스 만들어야 한다. ```bash curl -XPUT http://localhost:9200/shakespeare -d ' { "mappings" : { "_default_" : { "properties" : { "speaker" : {"type" : "string", "index" : "not_analyzed"}, "play_name" : {"type" : "string", "index" : "not_analyzed"}, "line_id" : {"type" : "integer" }, "speech_num" : {"type" : "integer"} } } } } '; ``` > 2.데이터 벌크로 적재 ```bash curl -XPOST http://localhost:9200/shakespeare/_bulk\?pretty --data-binary @shakespeare.json ``` > 3.인덱스 조회 및 조회를 원하는 Field에 데이터 검색 ```bash curl -XPOST http://localhost:9200/shakespeare/_search\?pretty -d '{ "query": { "bool": { "must": [ { "match": { "line_number" : "1.1.14" } }, { "match": { "speaker" : "KING HENRY IV" } } ] } } }' ``` <br> <br> # KIBANA <br> ### 1. CONFIG 설정 및 실행 역시 마찬가지로 포트 설정을 해주고, 위에 설정한 Elasticsearch 포트를 연결해줘야 정상적으로 인덱스된 데이터들을 Kibana에 조회할 수 있다. ```yml // vim kibana-5.6.7-linux-x86_64/config/kibana.yml server.port: 50099 ... # The Kibana server's name. This is used for display purposes. #server.name: "your-hostname" # The URL of the Elasticsearch instance to use for all your queries. elasticsearch.url: "http://localhost:9200" ``` config 설정한후 `./kibana-5.6.7-linux-x86_64/bin/kibana` 커맨드를 통해 KIBANA도 LOCAL MODE로 실행하여 아래와 같이 조회되는지 확인하자. 그리고 똑같이 브라우저를 키고 `http://localhost:50099/status` 실행해서 정상적으로 KIBANA가 동작하는지도 확인하자.   <br> ### 2. CREATE and CONNECT INDEX 처음에 Kibana worked with Elasticsearch 를 실행해서 해당 포트로 브라우저를 통해 접속하면, Kibana 정상적으로 실행되고 `Index` 가 하나도 없으므로 만들라고 가이드해주는데 아까 Elasticsearch에서 만들어준 `shakespeare` 연결해주면 된다. 이때 Kibana는 Multitenancy 를 위해 `*` 를 이용해서 제시한 문자와 일치하는 인덱스들을 한번에 불러올 수 있는데, 우리도 `shake*` 라고 설정하여 'shake라는 prefix를 갖고있는 인덱스들을 다 불러오자' 목적으로 인덱스를 생성해보자.   자! 이제 Elasticsearch에서 만들어준 `shakespeare` Index를 Kibana에 연결해주었고, 기존에 설정한 Field Type 들도 정상적으로 뜨는걸 확인했다. 이제 마지막으로 full-text search를 위해 여러분들이 원하는 문자열을 `Discover Tab` 에서 조회해보자 ?  신기하지 않은가? 여러분들이 원하는 Field에 있을 만한 문자열들을 **정말 빠르고 정확하게** 검색된다. 이처럼 여러분들이 추후 Industry 에 조인해서 데이터 분석가 또는 서버 개발자 포지션을 맡았다면, 그 회사 서비스의 `server log` 들을 한 폴더에 매일같이 배치작업으로 적재해놓고 이를 Elasticsearch에 적재시켜줘보자. 이를 통해 여러분들은 전날 또는 실시간으로 여러분들의 Server에 어떤 이슈들이 있는지, 어떤 유저들이 접속해서 어떤 행동들에 했는지, 등 다양한 요구사항 분석들을 이처럼 빠르게 찾을 수 있을것이다. <br> > 만약 추후 기회가 되면 아래와 같이 Apache 서버로그를 있는 그대로 분석하여, 이 로그들이 어떤 지역에서 발생하고 어떤 이슈들이 발견되었는지 확인하는 Practice도 진행해볼 계획이다.  <br> <br> ### Crossed Fingers to Your Future ?
Recent Posts
Vertex Gemini 기반 AI 에이전트 개발 05. 첫 번째 LLM 애플리케이션 개발
LLama-3.2-Vision 테스트
Vertex Gemini 기반 AI 에이전트 개발 04. 프롬프트 엔지니어링
Vertex Gemini 기반 AI 에이전트 개발 03. Vertex AI Gemini 둘러보기
Vertex Gemini 기반 AI 에이전트 개발 02. 생성 AI에 대해서
Vertex Gemini 기반 AI 에이전트 개발 01. 소개
Vertex Gemini 기반 AI 에이전트 개발-소개
생성 AI 모델 Flux.1 설치 및 사용
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Archive Posts
Tags
bigdata
Data Analysis
database
Elasticsearch
ELK
KIBANA
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags