elasticsearch cluster and filebeat with kibana dashboard
파일 분석을 위해 엘라스틱 과 filebeat , kibana 를 사용하도록 한다.
spring boot 어플리케이션에서 발생하는 로그를 filebeat 로그 수집기를 통해 엘라스틱 으로 쌓은 후 kibana 를 통한 대시보드로 모니터링 하도록 한다.
최종적인 결과는 아래 그림과 같다.
파일 분석 시스템의 구성 설명
3 대의 물리적 머신에 엘라스틱서치를 클러스터링 하도록 한다.
standby / active 로 구성 하기 위해 3대의 노드들 모두 master 설정을 하였다.
master 노드들 도한 데이터를 저장 하도록 한다.
아래 설치 정보들은 모든 노드들에 공통으로 적용 한다.
elasticsearch 의 jvm.option 설정은 하지 않았음. 시스템 퍼포먼스는 테스트 진행후 해도 되기때문에 나중에 하도록 한다.
elasticsearch,kibana,logstash 등 기타 정보들에 대한 인증 설정을 위해 x-pack 을 적용한다.
x-pack 은 모든 노드들의 elasticsearch,kibana,logstash 등 모든 제품들에 개별적으로 설치 해주어야 한다.
(추후 기본으로 설치 된다고도 함)
x-pack 적용시 이점은 클러스터링 상태 모니터링 및 각종 관리들을 kibana 웹기반으로 편리하게 관리 가능하다는것, 그리고 이외 +++
x-pack 은 라이센스가 있어야 사용가능함.
x-pack 최초 설치시 한달 무료 적용 된다.
x-pack basic license 는 무료이며, 1년단위로 라이센스를 적용해주어야 한다.
신청하면 이메일로 다운로드 링크를 받게 되며, 라이센스 적용은 공식 홈페이지에 자세히 나와있으므로 큰 무리 없이 적용 할 수있다.
현재 테스트하려는 시스템에서는 인증은 필요 없기때문에 설치 및 적용은 하지 않도록 한다.
참고 및 시스템 정보
- 참고
http://kimjmin.net/2018/01/2018-01-setting-es-cluster-1/ - OS
CentOS 7 - es version
elasticsearch 6.x
각 엘라스틱 서버이름을 변경하기 위해 시스템의 hostname 을 변경하도록 한다. (서버 1,2,3 모두 동일)
hostnamectl set-hostname es-data-1
hostnamectl set-hostname es-data-2
hostnamectl set-hostname es-data-3
or
vi /etc/sysconfig/network
HOSTNAME=es-master
hostname 변경 적용을 위해 시스템을 재시작 하도록 한다.
reboot
jdk 1.8 설치 (엘라스틱서치는 자바기반이므로 jdk 를 설치 해야함.)
yum install -y java-1.8.0-openjdk-devel.x86_64
엘라스틱 설치 (rpm 패키지로 설치하기 위해 아래 repo 생성 및 설치 - 서버 1,2,3 모두 동일)
vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum -y install elasticsearch
엘라스틱 서치 설정 (서버 1,2,3 모두 동일 )
클러스터링 이름 설정
cluster.name: es-cluster
해당 노드가 마스터가 되도록설정
node.master: true
해당 노드에 데이터를 저장하도록 설정 (만약 마스터 역할만 할경우 false 로 설정)
node.data: true
해당 노드의 이름 (위에서 설정한 이름으로 할것이므로 시스템의 hostname 으로 설정)
node.name: ${HOSTNAME}
해당 노드에 접근하도록 하기 위한 설정 (ip or local, global etc...)
network.host: site
클러스터링 되어있는 노드들간의 유니캐스팅 하기 위해 각 노드들의 ip:port 설정 (내부아이피)
discovery.zen.ping.unicast.hosts: ["10.10.10.1:9300","110.10.10.2:9300","10.10.10.3:9300"]
*** jvm.options 를 비롯한 시스템 퍼포먼스를 위한 설정을 해야하지만 기본으로도 현재 시스템에서는 문제가 없으므로 패스 하도록 한다.
#엘라스틱 서치 구동 및 재시작시 자동 시작되도록 등록
systemctl enable elasticsearch
systemctl start elasticsearch
엘라스틱 서치 클러스터 상태 확인
http://10.10.10.1:9200/_cat/health?v&pretty
http://10.10.10.2:9200/_cat/health?v&pretty
http://10.10.10.3:9200/_cat/health?v&pretty
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1521187495 04:04:55 es-cluster green 3 3 85 42 0 0 0 0 - 100.0%
엘라스틱 서치 클러스터 노드 확인
http://10.10.10.1:9200/_cat/nodes?v&pretty
http://10.10.10.2:9200/_cat/nodes?v&pretty
http://10.10.10.3:9200/_cat/nodes?v&pretty
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
10.10.10.1 23 25 43 0.01 0.03 0.05 mdi * es-data-1
10.10.10.2 44 43 42 0.00 0.01 0.05 mdi - es-data-2
10.10.10.3 30 89 0 0.01 0.03 0.05 mdi - es-data-3
참고로 shards ,replica 설정은 index 설정시 해주면 된다.
#kibana 설치를 위해 repo 설정 후 설치하도록 한다.
#서버 1,2,3 모두 동일하게 설치해준다. (fail over 를 위해 )
vi /etc/yum.repos.d/kibana.repo
[kibana-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
#kibana 설치 및 시작 , 부팅시 자동 시작되도록 등록
yum -y install kibana
systemctl enable kibana
systemctl start kibana
kibana 구성 설정 (서버 1,2,3 모두 동일)
vi /etc/kibana/kibana.yml
외부접근 포트 설정
server.port: 5601
server.host: "10.10.10.1" #서버 아이피
elasticsearch 접근 url 지정
elasticsearch.url: "http://10.10.10.1:9200"
kibana 재시작
logstash 설치 (여기서 logstash 사용은 하지 않는다 , 하지만 설치 방법을 기록하기위해 작성함)
vi /etc/yum.repos.d/logstash.repo
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
#kibana 샘플 데이터 테스트 (공식 가이드 데이터를 기준으로 테스트함)
참고:
6.x 설치하였기때문에 6.0 튜토리얼 참고 하였으며, 5.x 버전은 한글번역이 되어있어서 참고함.
https://www.elastic.co/guide/en/kibana/6.0/tutorial-load-dataset.html
https://www.elastic.co/guide/kr/kibana/current/tutorial-visualizing.html
6.x 버전의 샘플 데이터를 가이드 대로 따라 함
#filebeat 설치
vi /etc/yum.repos.d/filebeat.repo
[filebeat-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
yum -y install filebeat
#filebeat 설정
vi /etc/filebeat/filebeat.yml
filebeat.prospectors:
#log파일 경로 설정은 패턴 설정으로도 가능함.
#공식 가이드에 잘 나와있으므로 경로 설정은 공식 가이드를 참고하도록 한다.
- type: log
enabled: true
paths:- "log file path"
elasticsearch
output.elasticsearch:
Array of hosts to connect to.
hosts: ["10.10.10.1:9200","10.10.10.2:9200","10.10.10.3:9200"]
setup.kibana:
host: "10.10.10.1:port"
host: "10.10.10.2:port"
host: "10.10.10.3:port"
kibana 에서 indexpattern 추가 및 discover 에서 해당 index pattern 기반으로 로그들을 볼수 있게 된다.
filebeat 를 통해 elasticsearch 에 로그를 쌓게 되면 기본적으로 filebeat-버전명-날짜 패턴으로 생성 된다. (이부분도 설정 가능할까?)
엘라스틱에 생성된 index 들을 보기 위해서는 아래와같이 요청하면 볼수있게 된다.
http://10.10.10.1:9200/_cat/indices?v&pretty
http://10.10.10.2:9200/_cat/indices?v&pretty
http://10.10.10.3:9200/_cat/indices?v&pretty
여기까지 간단하게 엘라스틱 서치 클러스터링 및 파일 수집기인 filebeat 를 통해 로그를 수집한 후 kibana 로 모니터링 하기 이다.
Congratulations @gavinworld, you have decided to take the next big step with your first post! The Steem Network Team wishes you a great time among this awesome community.
The proven road to boost your personal success in this amazing Steem Network
Do you already know that awesome content will get great profits by following these simple steps, that have been worked out by experts?
Congratulations @gavinworld! You received a personal award!
Click here to view your Board
Congratulations @gavinworld! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!