회사에서 업무로 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


    - 주소값을 맞춰서 넣자.

$ cd kibana-6.5.0-linux-x86_64/

$ nano ./config/kibana.yml

server.host: "192.168.56.103"
elasticsearch.url: "http://192.168.56.103:9200"

    - server.host는 Kibana의 주소값을 넣는 것이고,
    - elasticsearch.url 값은 말 그대로 elasticsearch의 주소값을 넣어야 한다.
    - 실제로 elasticsearch에서 설정한 값 그대로 넣어야 한다. 주소가 같다고 localhost 등을 넣으면 접속이 안된다.






10. [ ElasticSearch ] 실행


    - 일단은 그냥 무조건 실행해 보자

$ cd elasticsearch-6.5.0

$ ./bin/elasticsearch

    - 데몬으로 실행하고 싶으면 "-d" 옵션을 붙이면 된다 ("-f" 옵션이 디폴트로 적용이 되어 있다)

    - 실행 결과는 http://192.168.56.103:9200 주소로 붙어보면 아래와 같이 나온다.


    - 주소가 같다고 하여 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


    - 지금은 같은 서버에 설치를 하고 있지만, 본래 MetricBeat는 모니터링을 할 아이에게 설치를 하는 것이다.

    - Kibana와 ElasticSearch 등의 정보를 알려주자.

$ cd ./metricbeat-6.5.0-linux-x86_64


$ nano ./metricbeat.yml


...


#============================== 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.



반응형

+ Recent posts