3. 목표
1. ELK를 이용한 APM 살펴보기
a. ELK APM을 설치 후 데모를 실행
b. 몇 가지 언어로 프로그램을 만든 후 부하를 발생시키고 결과를 확인하는 과정에서 학습
2. ELK Stack 6.6 버전 살펴보기
a. 2.x를 라이브 서비스에 사용하고 있으며, 개인적으로는는 5.0을 마지막으로 사용해봄
b. 이후 버전에 많은 기능 변화가 있었음(현재도 빠르게 기능이 추가되고 있음)
4. 사전에 참고할 내용
1. 공식문서
a. APM 메인: https://www.elastic.co/solutions/apm
b. APM Overview : https://www.elastic.co/guide/en/apm/get-started/current/index.html
c. APM Server Reference : https://www.elastic.co/guide/en/apm/server/current/index.html
2. 지원언어(또는 프레임웤)
a. Java
b. Node.js
c. Django
d. Flask
e. Rails
f. Rack
g. RUM -JS
h. Go
5. APM 구성 Components
1. Elasticsearch : full-text search & 분석엔진. 데이터 저장소, 검색이 수행됨. APM Agents에서 전송된 데이터가 최종적으로
저장됨
2. Kibana : 시각화 컴포넌트, Elasticsearch에 질의를 요청하고 화면에 시각화 처리 함
3. APM agents : 서비스와 동일한 언어로 개발된 client side의 프로그램. 서비스의 성능 관련 데이터와 에러 데이터를
런타임에 APM서버로 전송
4. APM Server : Go로 작성된서버이며 APM agents로부터 데이터를 JSON HTTP API로 전송 받아서
documents(Elasticserarch의 데이터 row단위)를 만들어서 Elasticsearch에 저장함
6. 설치방법
1. Elasticsearch
a. 6.6버전은 open jdk 11설치(링크)
b. elasticserarch 6.6설치(링크)
2. Kibana
a. https://www.elastic.co/guide/en/elastic-stack-get-started/6.6/get-started-elastic-stack.html#install-kib
ana
b. config/kibana.yml 파일에서 server.host: "0.0.0.0" 로 변경하면 모든 IP에서 웹 접근이 허용 됨
3. Server
a. https://www.elastic.co/guide/en/apm/server/current/setup-repositories.html
4. Agent(Client)
a. https://www.elastic.co/kr/solutions/apm
7. 데모
1. 샘플 프로그램 실행
a. wget 'https://github.com/oshnew/ELK-Study/raw/master/apm/sample-program/hello-demo.jar' -O
hello-demo.jar
b. 실행
c. 트랙픽 발생
i. curl 'http://localhost:9878/test/hello'
ii. curl 'http://localhost:9878/test/hello2'
java
-javaagent:elastic-apm-agent-1.3.0.jar
-Delastic.apm.service_name=hello-demo
-Delastic.apm.server_url=http://localhost:8200
-Delastic.apm.application_packages=org.example
-jar -Dserver.port=8700 hello-demo.jar