Elastic DevOps 모니터링 테스트 교육
11월 13일 부터 11월 16일 까지의 DevOps 모니터링 및 테스트 교육을 진행하였다.
교육의 일정은 다음과 같이 진행되었다. DevOps 교육을 받기 위해서는 이전에 AWS에서 강의를 듣고 수료를 해야 한다.
이는 4일 동안의 교육에서 기초적인 내용은 배제하고 우리의 프로젝트에 도움이 되는 교육을 알려주기 위함인 것 같다.
AWS 강의를 다 듣고 난 후 인증사진 이다. AWS 관련 개념을 익히는 데 도움이 되었다.
1일차
배고픈 상태로 아침 9시에 교실에 털털 가니깐 교육을 알리는 배너가 나를 반겨주었다.
우와 ~~~
교실에 들어가니 많은 멘토 분들이 준비하고 있었다.
나의 눈에 들어온 것은 간식들이었다. 오호호호 ~
많은 간식이 준비돼있어서 배고픈 나는 아주 기뻤다.
준비해주신 간식들은 평소에 먹어보지 못한 새로운 과자들이었다.
특히 저 달칩 초코샌드는 뻥튀기 사이에 초콜릿을 넣은 느낌이라 초콜릿과 조합이 아주 끝내줍니다!
그리고 수업 시작 전 slack을 통한 음료 선택 아이스 아메리카노랑 아이스티만 이루어진 조합이 아닌
무려 7개의 조합 나는 아 샷 추를 골랐다. 아이스 아메리카노에 샷 추가는 아니죠
아이스티의 샷 추가입니다.
오전 시간에는 AWS 와 slack 연동해서 chat-bot을 제작하였다.
slack 을 잘 사용하지 않은 나는 처음 만져보면서 신기했다.
slack에서는 다양한 app를 사용할 수 있는데 교육 과정에서는 직접 app 을 생성하는 거였다.
오른쪽 사진과 같이 agree를 하고 토큰 설정을 하면 app 을 생성할 수 있다.
위의 사진은 slack 채널에서 chat bot 을 부를 때 hello를 해주는 모습이다 .
오후 시간에는 ec2를 생성하고 vs code 에서 코드를 작성하여 3 tier 구축을 하는 과정을 진행하였다.
학교 수업에서는 xcp-ng server 에서 vm 을 생성하여 3 tier 패턴을 통해 구축해보았는데
aws ec2 와 AWS s3 이용해서 구축해보니 또 다른 재미가 있었다.
3 tier 구축을 완료하면 해당 페이지를 볼수 있다. 나는 서버 설정과 데이터베이스 연결까지는 하였지만
이후 정적 웹페이지 s3 설정에서 ACL 설정을 통해서 버킷과 객체에 대한 접근 권한처리까지 하였지만, 어찌 저찌 안돼서 아쉬웠다. 나중에 AWS 계정에 대한 지원을 받으면 다시 한번 진행해보고 싶다.
2일차
2일차의 경우는 Elastic 관련 개념과 기업 활용 사례에 관련해서 교육을 들었다.
APM agent 를 통해서 데이터 수집 및 적재에 관련된 내용을 배웠는데 우리 팀에서 진행하고 있는 프로젝트에 사용할 수 있을 것 같은 느낌이 들었다.
var apm = require('elastic-apm-node').start({
serviceName: 'serviceName,
secretToken:secretToken,
serverUrl: 'URL',
environment: 'my-environment'
});
// HTTP 모듈을 가져옵니다.
const http = require('http');
// 간단한 HTTP 서버를 만듭니다.
const server = http.createServer((req, res) => {
// URL에 따라 다른 응답을 생성합니다.
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 컨텍스트를 추가합니다.
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');
}
});
// 서버가 듣고 있는 포트를 설정합니다.
const port = 3000;
// 서버를 시작하고 지정된 포트에서 듣습니다.
server.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
해당 코드를 실행하면 다음과 같은 결과를 얻을 수 있다 .
코드 설명이 간단하게 하자면 HTTP 서버를 만들고 URL에 따라서 행동하도록 하였다
그리고 해당 URL로 들어가는 경우 LOG가 계속 쌓이는 형태인 것 같다.
다음과 같이 transactions 에 대한 내용을 그래프 형태로 쉽게 파악할 수 있다.
else if (req.url==='/create'){
apm.setTransactionName("CreateTransaction");
apm.setCustomContext({ environment: 'beta' });
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Demo page with custom APM context\n');
나의 경우에 create 대한 URL 도 검사해보고 싶어 위의 코드와 거의 비슷한 내용에서 조금씩 수정해서 진행해 보고
나의 EC2 url / 를 통해서 진입하고 elastic에서 확인해보니 잘 진행되는 것 볼 수 있었다.
3일차
3일차에는 Kibana Dashboard 와 Rules & 생성에 대해 배웠다.
수업 시작 전 깔쌈하게 아 샷 추 선택해주고 간식을 먹으면서 수업을 들었다. 그리고 멘토님들이 스티커도 주셨는데 아주 마음에 든다 . 특히 뉴진스 스티커 아주 굿!!!!!
내가 생성한 dashboard이다. 수업에서 제공해주신 관광지 샘플 데이터를 이용해서 만들었다.
내 팀원은 아주 삐까뻔쩍 한데 내 것은 조촐하지만 나 자신은 만족했다. !!
우리의 프로젝트에 사용한다면 더 예쁘게 보여줄 수 있을 것 같다.
rules 와 alert의 경우 내가 지정한 rule의 어기는 경우 다음과 같이 slack 메시지를 통해서 오는 것을 볼 수 있다.
4일차
마지막 수업날에는 elastic ML 에 대해서 강의 해주셨다.
통합 모니터링을 위해서는 로그 매트릭 트레이스가 필요하다.
로그는 특정 이벤트가 발생할 때마다 생성되는 데이터 매트릭은 주기적으로 특정 값을 측정한 데이터 트레이스는 애플리케이션 코드이다.
수업을 듣다 보니 나의 배꼽시계가 울렸다.
점심은 다음과 같이 6개의 메뉴 중 고르면 된다, 우리의 선택을 존중해주시는 멘토 분들 완벽 !!!!
나는 숯불 제육을 골랐다 . 남자의 점심 3대장중 하나인 제육
점심 이후에는 ML 수업을 계속 진행하셨다.
실습을 진행해보면 다음과 같은 그래프를 볼 수 있다. 해당 그래프를 통해서 어디서 에러가 발생하는지 쉽게 확인할 수 있다.
오른쪽 화면에서 보이는 주황색 동그라미가 에러로그들이 있는 시간대를 보여준다.
후기
4일 동안 Dev Ops 관련 수업을 들었는데 학교 수업과는 또 다른 느낌이었다. 많은 멘토 분들이 주위에서 도와주면서 진행을 하였고 다양한 간식과 멘토 분들의 좋은 조언들이 도움이 되었던 것 같다.
특히 기억남은 멘트는 영어를 열심히 하는것과 성공을 하는 사람들은 일의 몰입 해서 한 번씩 쓰러지는 것이었다.
성공을 원하는 마음이 있다면 내 몸따위야 ..
한번은 쓰러질 수 있을 것 같다. 두 번 세 번은 싫지만