레이블이 lucene인 게시물을 표시합니다. 모든 게시물 표시
레이블이 lucene인 게시물을 표시합니다. 모든 게시물 표시

ElasticSearch 과 Kibana 사용하기

ElasticSearch 는 Java 로 만든 Apache Lucene(루씬)을 기반으로한 분산 검색엔진이다.
데이터를 JSON 형식으로 저장하여 스키마 프리하며 확장이 용이하며 검색 기능이 꽤 강력하여 여러곳에서 사용되고 있다.
Kibana 는 ElasticSearch 를 쉽게 사용할 수 있도록 도와주는 일종의 시각화 도구이다.

##########

# ElasticSearch 설치
# 기본적으로 Java 로 만든 루씬을 사용하기 때문에 Java 실행 환경이 우선되어야 한다.
# JAVA_HOME 환경 변수가 등록되어 있는지 확인하고 없으면 JDK 를 설치하자.
# https://www.elastic.co/downloads/elasticsearch  다운로드 후 압축만 풀어 사용하면 된다.
# Elastic 시리즈의 다른 제품도 많은데 ElasticSearch 와 연동하기 쉽다.
# windows에서는 elasticsearch-2.3.3.zip 기준
# 커맨드라인으로 서버 실행하기
bin\elasticsearch.bat
# 커맨드라인으로 실행하면 다음과 같이 자바 프로세스가 수행된다.
"c:\Program Files\Java\jdk1.7.0_21\bin\java"   -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true  -Delasticsearch -Des-foreground=yes -Des.path.home="C:\elasticsearch-2.3.3" -cp "C:\elasticsearch-2.3.3/lib/elasticsearch-2.3.3.jar;C:\elasticsearch-2.3.3/ㅁlib/*" "org.elasticsearch.bootstrap.Elasticsearch" start
# 윈도우 서비스로 등록하기(삭제는 remove 옵션)
bin\service.bat install
# 서비스로 서버를 시작하면 다음과 같은 프로세스가 수행된다.
elasticsearch-service-x64.exe

# osx 에서는
brew install elasticsearch
brew services start elasticsearch

# centos 에서는(5.2.2 기준, java 필요시 yum install java)
curl -O "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz"
tar zxvf elasticsearch-5.2.2.tar.gz
# restart
cat elasticsearch.pid | xargs kill
./elasticsearch-5.2.2/bin/elasticsearch -d -p elasticsearch.pid

# 설정 파일 수정
vi config\elasticsearch.yml
# osx 에서는 (brew info elasticsearch 로 config 경로 확인)
vi /usr/local/etc/elasticsearch/elasticsearch.yml
cluster.name: ysoftman-cluster1
network.host: 10.10.10.10
http.port: 9200

# 서버 확인
# 다음과 같이 접속해보면 json 형식으로 클러스터명과 버전을 확인할 수 있다.
http://10.10.10.10:9200/

# 플러그인 설치(centos 에서는 bin/elasticsearch-plugin 사용)
plugin.bat install --verbose analysis-icu
# elasticsearch 2.3.3 버전에서 아래 플러그인이 지원되지 않아 skip
#plugin.bat install --verbose Aconex/elasticsearch-head
#plugin.bat install --verbose lukas-vlcek/bigdesk

# 설치된 플러그인 리스트
plugin.bat list

##########

# Kibana 설치
# windows 에서는
https://www.elastic.co/downloads/kibana 다운로드 후 압축풀어 사용한다.

# 설정 파일
vi config/kibana.yml
# osx 에서는 (brew info kibana 로 config 경로 확인)
vi /usr/local/etc/kibana/kibana.yml
server.port: 5601
server.host: "10.10.10.11"
elasticsearch.url: "http://10.10.10.10:9200"

# 시작(ElasticSearch 디폴트 10.10.10.10:9200 로 연결)
bin\kibana.bat

# osx 에서는
brew install kibana
brew services start kibana

# centos 에서는(5.2.2 기준)
curl -O "https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz"
tar zxvf kibana-5.2.2-linux-x86_64.tar.gz

# 혹시 열려 있는 kibana 프로세스 확인
ps -ef | grep '.*node/bin/node.*src/cli'

# restart(daemon 설치 포스트 참고)
daemon --name=kibana --pidfile="/home/ysoftman/kibana.pid" --stop
daemon --name=kibana --pidfile="/home/ysoftman/kibana.pid" --chdir="/home/ysoftman" --  "./kibana-5.2.2-linux-x86_64/bin/kibana"

# kibana 확인
http://10.10.10.11:5601/

# 추후 logstash 로 유입된 로그 데이터를 검색(Discover->검색명령)할 수 있다.
# elasticsearch 는
# DSL(Domain Specific Language)의 json 형태의 쿼리로 검색할 수 있고
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html

# lucene 쿼리로도 검색할 수 있다.
https://www.elastic.co/guide/en/kibana/current/lucene-query.html

# 예제
# AND, OR, NOT 은 대문자로 써야하고 각각은 && || ! 로 쓸 수 있다.
# http.response.code 필드가 존재하고, 값은 200,204,302가 아닌것들 검색
(_exists_:http.response.code) AND NOT(http.response.code:200) AND NOT(http.response.code:204) AND NOT(http.response.code:302)

##########

# 테스트 해보기
# curl 바이러리 다운로드(윈도우 기준)
https://bintray.com/artifact/download/vszakats/generic/curl-7.49.0-win32-mingw.7z

# 환경변수 추가(윈도우 기준)
PATH=%PATH%;C:\curl-7.49.0-win32-mingw\bin

# 문서 추가(생성)
# 리눅스는 옵션값에 quote(')를 사용하지만 윈도우는 doublequote(")를 사용해야 한다.
curl -X PUT http://10.10.10.10:9200/2016-05-27/ysoftman/doc1 -d "
{
"no\":123456,
"name\":\"ysoftman\",
"etc\":\"melong\"
}
"

# 문서 조회(curl 대신 브라우저 URL 로 요청해도 된다.)
curl -X GET http://10.10.10.10:9200/2016-05-27/ysoftman/doc1

# 문서 검색(curl 대신 브라우저 URL 로 요청해도 된다.)
curl -X GET http://10.10.10.10:9200/2016-05-27/ysoftman/_search?q=name:ysoftman

# 문서 삭제
curl -X DELETE http://10.10.10.10:9200/2016-05-27/ysoftman/doc1

# 참고
https://www.elastic.co/downloads/elasticsearch
https://www.elastic.co/guide/en/elasticsearch/plugins/2.3/plugin-management.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html
https://curl.haxx.se/docs/httpscripting.html#Modify_method_and_headers
http://d2.naver.com/helloworld/273788