티스토리 뷰
Elasticsearch 및 Kibana 기본 설정은 다음 문서를 참조합니다.
https://miiingo.tistory.com/216
APM이란?
APM(Application Performance Management)은 웹 어플리케이션, 서버 시스템 등의 성능을 관리하는 솔루션입니다. 어플리케이션이나 시스템의 신속한 장애 지점 파악, 원인 분석, 튜닝을 지원할 수 있는 APM을 도입하면 서비스를 안정적으로 제공할 수 있습니다.
Elasticsearch 설정
Elasticsearch를 실행하기 위해 설정을 수정합니다.
기본적으로 Elasticsearch는 외부에서 IP로 접근할 수 없으며, loopback(127.0.0.1 또는 localhost)로만 접속할 수 있습니다.
여기에서는 Elasticsearch가 실행될 호스트(HOST1)와 nodejs 프로젝트가 실행될 호스트(HOST2)가 동일하지 않습니다.
HOST1에서 실행중인 Elasticsearch에 HOST2의 nodejs 프로젝트가 접속할 수 있도록 Elasticsearch의 네트워크 설정을 변경해줍니다.
Elasticsearch 네트워크 호스트 변경
config/elasticsearch.yml 설정 파일의 network.host 부분을 변경합니다.
cd /opt/gopath/src/github.com/hyperledger/elastic-stack/elasticsearch-6.7.2
vi config/elasticsearch.yml
network.host: 0.0.0.0
위와 같은 형식으로 IP 주소를 직접 입력해도 되지만, Elasticsearch의 network.host 값을 사용해도 됩니다.
network.host: _site_
vm.max_map_count 변경
네트워크 호스트를 변경하고 Elasticsearch를 다시 시작했더니 다음과 같은 오류가 발생했습니다.
[2019-06-04T00:01:47,976][INFO ][o.e.n.Node ] [l46XU1d] initialized
[2019-06-04T00:01:47,977][INFO ][o.e.n.Node ] [l46XU1d] starting ...
[2019-06-04T00:01:48,208][INFO ][o.e.t.TransportService ] [l46XU1d] publish_address {<HOST1의 IP주소>:9300}, bound_addresses {[::]:9300}
[2019-06-04T00:01:48,281][INFO ][o.e.b.BootstrapChecks ] [l46XU1d] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [2] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2019-06-04T00:01:48,340][INFO ][o.e.n.Node ] [l46XU1d] stopping ...
[2019-06-04T00:01:48,430][INFO ][o.e.n.Node ] [l46XU1d] stopped
[2019-06-04T00:01:48,430][INFO ][o.e.n.Node ] [l46XU1d] closing ...
[2019-06-04T00:01:48,468][INFO ][o.e.n.Node ] [l46XU1d] closed
[2019-06-04T00:01:48,472][INFO ][o.e.x.m.p.NativeController] [l46XU1d] Native controller process has stopped - no new native processes can be started
로그 내용을 확인해보면 vm.max_map_count 값이 너무 적다는 내용인데, 다음 명령을 통해 vm.max_map_count를 권장 값인 262144로 변경해줍니다.
# vm.max_map_count 변경
sudo sysctl -w vm.max_map_count=262144
Elasticsearh 실행
이제 Elasticsearh를 실행합니다.
# Elasticsearh 실행
./bin/elasticsearch
HOST2에서 연결 확인
nodejs 프로젝트를 실행할 호스트인 HOST2에서 다음 명령을 통해 HOST1의 Elasticsearch에 접근이 가능한지 확인합니다.
curl http://<HOST1의 IP주소>:9200
실행 결과 다음과 같은 내용이 출력되어야 합니다.
{
"name" : "l46XU1d",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "9rbT8uDLRDyNUTJYFC7A5A",
"version" : {
"number" : "6.7.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "56c6e48",
"build_date" : "2019-04-29T09:05:50.290371Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Kibana 설정
Kibana 실행
Elasticsearh의 실행이 완료되면 Kibana를 실행해줍니다.
# Kibana 실행
cd /opt/gopath/src/github.com/hyperledger/elastic-stack/kibana-6.7.2-linux-x86_64
./bin/kibana
http://{HOST1의 IP}:5601에 접속해 Kibana가 정상적으로 실행되었는지 확인합니다.
Elastic APM 설정
APM Server 구성
APM Server의 버전은 Elastic Stack이 실행된 버전과 동일해야 합니다.
특정 버전의 APM Server를 설치하기 위해 다음 웹페이지를 참조합니다. https://www.elastic.co/kr/downloads/past-releases#apm-server
# 설치
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-6.7.2-linux-x86_64.tar.gz
tar -xzvf apm-server-6.7.2-linux-x86_64.tar.gz
cd apm-server-6.7.2-linux-x86_64
./apm-server setup
설정이 완료되면 다음과 같은 내용이 출력됩니다.
Index setup complete.
Loaded Ingest pipelines
Loaded index template
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
그리고 HOST2에서 APM Server에 접근할 수 있도록 호스트 주소를 변경해주어야 합니다. apm-server.yml 파일의 host 부분을 다음과 같이 수정합니다.
host: "0.0.0.0:8200"
이제 APM Server를 실행합니다.
# APM Server 실행
./apm-server -e
APM agent 설치
이제 HOST2의 nodejs 프로젝트 디렉토리 내에서 npm을 이용해 elastic-npm-node 패키지를 설치합니다.
cd <APM agent를 설치할 nodejs 프로젝트 디렉토리>
#npm install elastic-apm --save
npm install elastic-apm-node --save
※모듈 명칭이 elastic-apm에서 elastic-apm-node로 변경되었습니다!
설치가 완료되면 app.js 파일 내에 다음 코드를 추가합니다.
// elastic-apm
require('elastic-apm-node').start({
// Set required app name (allowed characters: a-z, A-Z, 0-9, -, _, and space)
appName: 'bc-platform-rest',
// Use if APM Server requires a token
secretToken: '',
// Set custom APM Server URL (default: http://localhost:8200)
serverUrl: 'http://<HOST1의 IP주소>:8200',
});
nodejs 실행
설정이 완료되면 HOST2의 nodejs 프로젝트를 실행합니다.
실행 후 다음과 같은 오류 로그가 출력되지 않아야 합니다.
APM Server transport error (ECONNREFUSED): connect ECONNREFUSED <HOST1의 IP주소>:8200
Kibana 웹페이지 접속
Kibana 웹페이지 접속해 APM 메뉴를 클릭하면 다음과 같이 설정한 nodejs 프로젝트가 뜨게 됩니다.
Metrics 탭에서는 다음과 같은 화면이 출력됩니다.
참고 사이트
'개발도구 > Monitoring Tool' 카테고리의 다른 글
- Total
- Today
- Yesterday
- 블록 체인
- 빅데이터 교육
- 하이퍼레저 패브릭
- Hyperledger Fabric v1.2
- 코테
- 빅데이터 강의
- 빅데이터 기초
- 기초 of 기초 데이터 개념
- docker
- 하이퍼레저 인디
- DOCs
- Blockchain
- 코딜리티
- 알고리즘
- 블록체인
- 암브로셔스
- 빅데이터
- Hyperledger Fabric v1.1
- 코딩테스트
- 문제풀이
- codility
- Hyperledger Indy
- ubuntu
- 어서와 데이터는 처음이지
- 직딩잇템
- ambrosus
- 하이퍼레저 페브릭
- Hyperledger Fabric
- Private Data
- javascript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |