Cloud/ElasticSearch
[실습] Elastic APM 사용하여 접속 기록 수집하기
y-seo
2023. 12. 28. 17:30
실습 개요
Elastic의 APM 기능을 사용하여 접속 기록을 수집하고 그 결과를 확인할 수 있다.
1. EC2 서버에서 설정하기
(1) EC2 서버를 연결한다.
(2) nodejs를 설치한다.
sudo yum instal nodejs
(3) test page를 작성한다.
/home/ec2-user 위치에서 작성해야 하며 이는 pwd 명령어로 확인 가능하다.
vi app.js
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
const port = 3000;
server.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
(4) 인바운드 규칙을 다음과 같이 설정한다.
2. Elastic 설정하기
(1) Integrations에 접속하여 APM을 선택한다.
(2) Check APM Server status를 선택한다.
(3) EC2 서버에 APM Agent를 설치한다.
npm install elastic-apm-node --save
(4) app.js에 아래 내용을 추가하여 실행한다.
var apm = require('elastic-apm-node').start({
serviceName: 'my-service-name',
secretToken: ‘{secretToken}’,
serverUrl: ‘{serverUrl}’,
environment: 'my-environment'
})
이때 {secretToken}, {serverUrl} 은 아까 만든 elastic의 APM 페이지에 있는 값들을 이용한다.
실행은 위와 같이 이루어진다.
3. APM 확인하기
(1) Observality > APM > Services에서 확인할 수 있다.
(2) app.js에 아래 내용을 추가하여 Transaction/Error 로그를 추가한 후 실행한다.
const server = http.createServer((req, res) => {
if (req.url === '/fail') {
apm.setTransactionName("FailTransaction");
const statnum = 500;
res.writeHead(statnum, {'Content-Type': 'text/plain'});
res.end('Fail ' + statnum);
} else if (req.url === '/demo') {
apm.setTransactionName("DemoTransaction");
apm.setCustomContext({ environment: 'beta' });
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Demo page with custom APM context\n');
} else if (req.url === '/error') {
apm.setTransactionName("ErrorTransaction");
const err = new Error('Test Error');
apm.captureError(err);
res.writeHead(500, {'Content-Type': 'text/plain'});
res.end('Error captured\n');
} else {
apm.setTransactionName("DefaultTransaction");
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello, World!\n');
}
});
(3) EC2 서버의 3000번 포트로 접속하여 여러 페이지에 접속한다.
주소 형식 : {EC2 Public IPs}:3000/error
error 대신 demo와 fail도 있다.
(4) Elastic에서 아래와 같이 수집 결과를 확인할 수 있다.