회사에서 업무로 Splunk를 도입해서 사용하는 것을 보면서...
Linux 및 OpenSource 매니아로써... 왠지 ELK 조합에 대해서 공부를 해봐야겠다라는 생각이 불끈~!!
다들 알겠지만... 추구하는 방향은 다음과 같다.
- 오픈소스 구성
- Ubuntu 환경
- 패키지 설치보다는 다운로드 방식으로
이번 포스팅에서는 일단 한 번 실행해보는 것으로 만족하겠다.
다음번 포스팅을 하게 되면 그 때 조금 더 실용적인(?) 방향으로 공부해보겠다.
1. [ ElasticSearch ] 다운로드
- 현재 가장 최신 버전은 6.5.0 이다.
- 이름에서 보는바와 같이 메인이 되는 놈이다.
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.0.tar.gz
$ tar zxvf ./elasticsearch-6.5.0.tar.gz
2. [ LogStash ] 다운로드
- 일단 다운로드는 받아보는데... 이번에는 아직 안써먹을거다.
- 로그들을 받아서 분석하는 놈 같은데... 이번엔 생략
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.0.tar.gz
$ tar zxvf ./logstash-6.5.0.tar.gz
3. [ Kibana ] 다운로드
- 결과물을 보여주는 웹 페이지를 제공해주는 놈이다.
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.0-linux-x86_64.tar.gz
$ tar zxvf ./kibana-6.5.0-linux-x86_64.tar.gz
4. [ ElasticSearch ] 실행환경 설정 - ulimit
- 프로세스가 사용할 수 있는 자원의 한도 값을 정해주는 ulimit 설정을 해야 한다고 한다.
- 그런데, ubuntu 설치하고 별도로 설정하지 않았는데, 기본 설정값으로 충분하네?!
$ ulimit -Hn
1048576
- 보통 4096 정도의 기본값이라고 하던데.... 이미 충분하네!? 그러면 스킵~
5. [ ElasticSearch ] 실행환경 설정 - mmapfs
- ElasticSearch에서 index 저장 공간으로 mmapfs 을 사용한다고 한다 (기본값)
- 그런데 기본적으로 주어진 값이 작은 경우 문제가 있을 수 있으니...
$ sudo sysctl -a | grep vm.max_map_count
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.enp0s3.stable_secret"
sysctl: reading key "net.ipv6.conf.enp0s8.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
vm.max_map_count = 65530
- 65530 값은 작다 !! "262144" 로 올려줘야 함
$ sudo nano /etc/sysctl.conf
...
vm.max_map_count=262144
$ sudo reboot
- 재부팅을 해야 적용이 된다.
6. [ ElasticSearch ] 설정파일 셋팅 - host
- 접근할 때 사용할 주소를 설정하자
$ cd elasticsearch-6.5.0
$ nano ./config/elasticsearch.yml
...
network.host: 192.168.56.103
...
- 필자의 경우에는 내부 IP 값을 설정했지만, DNS가 있으면 DNS를 사용하면 된다.
- localhost 를 사용하지는 말자. 나중에 뭔가 꼬인다.
7. [ ElasticSearch ] 설정파일 셋팅 - JVM Heap
- 서버의 메모리가 충분히 크다고 하면 별도 설정하지 않아도 된다고 한다.
- 필자의 경우는 VirtualBox로 사용하는 아이라서 메모리가 충분하지 않다보니...
$ cd elasticsearch-6.5.0
$ nano ./config/jvm.options
...
#-Xms1g
#-Xmx1g
-Xms128m
-Xmx128m
...
- 2개 값은 동일하게 설정하는 것이 좋단다. 음... 너무 작게 하는 것이 않은가 싶기는 하지만...
8. [ LogStash ] 설정파일 셋팅 - JVM Heap
- 하는김에 LogStash 의 설정도 이어서 해버리자.
$ cd logstash-6.5.0
$ nano ./config/jvm.options
...
#-Xms1g
#-Xmx1g
-Xms128m
-Xmx128m
...
9. [ Kibana ] 설정파일 셋팅 - host
10. [ ElasticSearch ] 실행
- 주소가 같다고 하여 http://localhost:9200 으로 접속하면 제대로 나오지 않는다.
11. [ Kibana ] 실행
- 단독으로 실행되지 않는다. ElasticSearch가 실행된 상태에서 실행해야 한다.
$ cd kibana-6.5.0-linux-x86_64/
$ ./bin/kibana
- http://192.168.56.103:5601/ 주소로 접속해보면 아래와 같이 잘 나온다.
- 뭔가 나오긴 하지만... 집어넣은 데이터가 없으니 볼게 없다.
- 그나마 Monitoring 기능을 On 시키면 아래와 같은 화면을 볼 수 있다.
- 이걸론 뭔가 썰렁하니 서버 정보를 밀어 넣어서 화면으로 볼 수 있게 해보자.
12. [ MetricBeat ] 다운로드
- 일종의 플로그인처럼, 편하게 사용할 수 있도록 제공해주는 아이들을 Beat라고 부른다.
- 그 중에서 서버 정보 등을 지표처럼 관리할 수 있게 해주는 것이 MetricBeat 이다.
$ wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.5.0-linux-x86_64.tar.gz
$ tar zxvf ./metricbeat-6.5.0-linux-x86_64.tar.gz
13. [ MetricBeat ] 환경설정 - host
$ cd ./metricbeat-6.5.0-linux-x86_64
...
#============================== Kibana =================================
setup.kibana:
host: "192.168.56.103:5601"
#============================== Outputs =================================
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
hosts: ["192.168.56.103:9200"]
- 앞에서 설정한 값들을 참조하여 제대로 알려주면 된다.
14. [ MetricBeat ] 초기 셋업 그리고 실행
- Kibana에 Dashboard 등을 제대로 반영할 수 있도록 셋업 작업을 해줘야 한다.
$ ./metricbeat setup -c metricbeat.yml
- 셋업이 완료되면 이제 실행하자.
$ ./metricbeat -e
- Kibana 에 접속해서 Management 항목을 들어가보면 아래와 같이 Create Index Pattern을 해야한다고 나온다.
- 하단에 있는 "metricbeat.*"을 눌러버리자.
- 이제 Dashboard를 보면 뭔가 주르륵 나온다.
- 지금 뭔가 돌리고 있는 서버가 아니라서.... System Overview 항목을 선택해보자.
- 뭔가 그럴듯해졌다.
아직은 내가 마음먹은대로 사용하기에는 아는게 부족한 상태다.
임의의 데이터도 집어넣고 임의로 데이터를 뽑아내고 그래야할텐데...
일단 뭔가 나오도록은 했으니... 하나씩 계속 내걸로 만들어야겠다.
아래 사이트를 통해서 많은 도움을 받았다.
- https://github.com/higee/elastic/wiki/Elastic-Stack-%EC%84%A4%EC%B9%98-%EB%B0%8F-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95.
'Dev Tools' 카테고리의 다른 글
개발자를 위한 노트패드(연습장) - Heynote (0) | 2024.01.09 |
---|---|
네트워크(인터넷) 속도 측정 사이트 목록 (0) | 2023.11.13 |
Ansible 세번째 발걸음 (apt-get upgrade) (1) | 2017.07.16 |
Ansible Source Build Install (Ubuntu 14.04) (0) | 2017.07.16 |
Ansible 두번째 발걸음 (playbook 맛보기) (0) | 2017.07.15 |