현재 memory 128기가, 코어40개의 node 5개를 운영중인데, memory는 몇기가로 설정하면 좋을까?
es가이드를 보면 30기가로 설정하는 것을 추천한다.

자바 명령어로 손쉽게 30기가로 설정하는 것이 좋다는 것을 알 수 있다.
31기가, 30기가, 32기가로 설정했을때 보면 30기가일때가 compressedzero base가 됨.

1.

java -Xmx31G -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode 2>/dev/null | grep Compressed | grep Oops

> heap address: 0x00007fc918200000, size: 31744 MB, Compressed Oops mode: Non-zero based:0x00007fc9181ff000, Oop shift amount: 3 bool PrintCompressedOopsMode := true {diagnostic} bool UseCompressedOops := true {lp64_product}

2.

java -Xmx30G -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode
2>/dev/null | grep Compressed | grep Oops

 

> heap address: 0x0000000080000000, size: 30720 MB, Compressed Oops mode: Zero based, Oop shift amount: 3 bool PrintCompressedOopsMode := true {diagnostic} bool UseCompressedOops := true {lp64_product}

3.

java -Xmx32G -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode 2>/dev/null | grep Compressed | grep Oops

 

> bool PrintCompressedOopsMode := true {diagnostic}
bool UseCompressedOops = false {lp64_product}

 

30g로 옵션을 변경한 후에는 재시작을 해줘야하는데, 이미 인덱스가 존재하고 있었으므로 _cluster/settings api로 allocation.enable=none으로 변경해준 뒤에 재시작하고, 다시 all로 변경해주자.

PUT _cluster/settings 
{ 
	"transient": { 
    	"cluster.routing.allocation.enable": "none"
        } 
} 

# after node restart.

PUT _cluster/settings
{ 
	"transient": {
    	"cluster.routing.allocation.enable": "all"
        }
}

 

설정값을 none으로 변경뒤에 node를 일단 내리면 해당 node에 있던 primary shard가 다른 node에 있던 replica shard와 교환 하게 되고, 교환된 replica shard는 unassigend 상태가 된다. 그리고 node를 올리고 설정값을 all로 변경되면 unassigend replica shard가 그  node에 할당된다. 

 

 

# kibana 설치.

kibana 설치는 아래 가이드처럼 rpm으로 간단하게 설치 가능하다.
elasticsearch는 공식홈페이지에 모든게 다 잘 정리되어있다.

"중요한 것은 elasticsearch와 kibana의 버전이 동일해야한다는 것"

<<elasticsearch 공홈에 가이드가 아주 잘 나와있음>>
https://www.elastic.co/guide/en/kibana/7.2/rpm.html

 

Install Kibana with RPM | Kibana Guide [7.2] | Elastic

An alternative package, kibana-oss, which contains only features that are available under the Apache 2.0 license is also available. To install it, use the following baseurl in your kibana.repo file: baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum

www.elastic.co

- RPM설치후에 kibana.yml 에서 elasticsearch.hosts 부분을 array로 넣어주었고, kibana port만 만번대로 변경하여, kibana를 시작했다.

elasticsearch.hosts : ["node1", "node2", "node3"]

 

- kibana configuration을 더 하려면 아래 문서 참고.
https://www.elastic.co/guide/en/kibana/7.2/settings.html

- 이렇게 kibana를 설치하면 kibana에서 node현황도 볼수있고, indexing된 데이터도 볼 수 있고, elasticsearch의 restapi로 request도 날릴수있다.

 

# Filebeat 설치.

- 이번에는 filebeat를 설치하여, 로그를 kibana로 전송해보자. <<역시 가이드 잘 나와있음>>
- 역시나 elasticsearch/kibana와 "버전을 잘 맞춰 설치한다".
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-elasticsearch.html

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.1-x86_64.rpm 
sudo rpm -vi filebeat-7.4.1-x86_64.rpm

- filebeat configure : log path잡아주고, elasticsearch hosts와 kibana host만 내꺼에 잘 맞춰서 넣어줬다.

filebeat.inputs:
	type: log
	enabled: true
	paths:
		/var/log/*.log
		/var/log/elasticsearch/elasticsearch.log

output.elasticsearch:
	hosts: ["myEShost:9200"]

setup.kibana:
	host: "mykibanahost:5601"

 

- 가이드대로 filebeat 에서 elasticsearch module을 활성화 시키고, 초기 환경변수를 setup하고, 시작하는 command를 날렸다.

filebeat setup --dashboards
filebeat modules enable elasticsearch
filebeat setup -e
service filebeat start

<<참고문서>>

 

# 마무리.

- kibana에서 index pattern을 생성도 해보고,
- kibana gui에서 mornitoring 옵션을 활성화 시키면
- 이제 node상태들도 보이고, index도 보이고, 로그도 보인다~

 의 ㄸdata lake / dataware house / data mart

data lake 는 비정형화된 로우 로그 수준의 모든 데이터를 저장.
datawarehouse 는 모델링되고 구조화된 데이터를 저장.
data mart 는 datawarehouse에서 특정 목적이 뚜렷한 성격의 데이터를 따로 가져가는 것으로 datawarehouse에 일부분이 될 수 있다.

data engineering 포지션에 4-6년차 경력직 면접이라면 나올 수 있는 기본적인 정의들이다.
뿐만 아니라 기본적인 용어 정리는 잘 정립해놓는 것이 커뮤니케이션에 좋다.

+ Recent posts