SlideShare a Scribd company logo
1 of 34
Download to read offline
EKS에서 Opentelemetry로
내 코드가 잘 동작하는지 모니터링하기
신재현
백엔드 개발자
인덴트코퍼레이션
오늘은 무엇을 하나요?
헨즈온 환경 구축 하기 OpenTelemetry는 무엇인가요? 서비스 배포&모니터링 하기 리소스 정리
헨즈온 환경 구축하기
헨즈온 환경 구축하기
1. EKS 접속을 위한 IAM 생성
2. Cloud9 생성 및 인증 정보 설정
3. EKS 생성
4. Helm으로 grafana, jaeger 설치
IAM role 생성하기
1. 아래 링크를 눌러 IAM role을 생성합니다.
https://console.aws.amazon.com/iam/home#/roles$new?
step=review&commonUseCase=EC2%2BEC2&selectedUseCase=EC2&po
licies=arn:aws:iam::aws:policy%2FAdministratorAccess
2. role 이름을 적는 폼이 나올때 까지 Next 버튼을 눌러주세요
3. role 이름을 cday-apm-handson으로 입력하고 Create role 버튼을 눌러주세요
Cloud9 생성
1. Cloud9 콘솔에 접속하셔서 Create Environment 버튼을 클릭합니다.
2. 이름은 aws-cloud9-apm 으로 나머지는 수정없이 Cloud9 생성을 완료합니다.
3. Cloud9이 생성될 때 까지 기다립니다.
Cloud9 환경 설정
4. Cloud9이 뜨면 R로 시작하는 프로필 버튼을 클릭 > manage EC2 Instance 클릭
Cloud9 환경 설정
5. Cloud9 인스턴스 선택 > Actions 클릭 > Security 클릭 > Modify Iam role 클릭
Cloud9 환경 설정
6. 방금 만든 cday-apm-handson role 선택후 저장
Cloud9 환경 설정
7. Cloud9 설정 > AWS 설정 > Credentials > AWS 임시 토큰 사용 비활성화
Cloud9 환경 설정
8. 좌측 사이드바의 AWS로고 클릭시 우측 하단에 ec2:instance 라고 뜨는지 확인
EKS 개발 환경 구축
1. 헨즈온 레포 다운로드
git clone https://github.com/wesky93/cday-2021-apm-handson.git
cd cday-2021-apm-handson/
EKS 개발 환경 구축
2. SSH 키 생성 및 EC2에 SSH키 등록
ssh-keygen
# enter 3번 하기
aws ec2 import-key-pair 
--region ap-northeast-2 
--key-name "cday-handson" 
--public-key-material file://~/.ssh/id_rsa.pub
EKS 개발 환경 구축
3. eksctl 설치
curl --silent 
--location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" 
| tar xz -C /tmp
sudo mv -v /tmp/eksctl /usr/local/bin
# 설치 확인
eksctl version
EKS 개발 환경 구축
4. kubectl 설치
# kubectl 다운로드
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# kubectl 설치
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 설치 확인
kubectl version --client
EKS 개발 환경 구축
5. AWS IAM Authenticator
curl -o aws-iam-authenticator 
https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator
chmod +x ./aws-iam-authenticator
mkdir -p $HOME/bin 
&& cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator 
&& export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
aws-iam-authenticator help
EKS 개발 환경 구축
6. Helm 설치
curl -fsSL -o get_helm.sh 
https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
EKS 클러스터 생성
eksctl create cluster 
--name apm-cluster 
--region ap-northeast-2 
--with-oidc 
--ssh-access=true 
--ssh-public-key ~/.ssh/id_rsa.pub 
--managed
# eks 접속
kubectl get nodes
Helm repo 추가
helm repo add grafana https://grafana.github.io/helm-charts
helm repo add incubator https://charts.helm.sh/incubator
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm repo update
Helm chart 설치
# grafana 설치
helm install grafana grafana/grafana 
--set adminPassword="cday-handson" 
--set service.type=LoadBalancer
# jaeger 설치
helm install jaeger jaegertracing/jaeger-operator 
--set rbac.clusterRole=true
Grafana 접속
# grafana 주소 확인 및 접속
kubectl get all -n default | grep service/grafana
# ID : admin PW : cday-handson
An observability framework for cloud-native software
APM
APM 솔루션
Image caption 1 Image caption 2 Image caption 3
Image caption 4 Image caption 5 Image caption 6
서비스 배포 & 모니터링
썸네일 서비스 배포
kubectl apply -f k8s/
# 썸네일 서비스 주소 확인
kubectl get all -n default | grep service/thumbnail-app-srv
<썸네일 서비스 주소>/docs 로 접속
1. crop, resize, smartcrop 에 각각 아래 값을 넣어서 결과를 확인 합니다.
URL_1 : https://images.chosun.com/resizer/a5YP6FNZMLmdoSmJCXiQJcN25Fw=/
540x799/smart/cloudfront-ap-northeast-1.images.arcpublishing.com/chosun/
CFCFB3LGQ75OBNIYD36LN74FHQ.jpg
URL_2 : https://naver.com
Width : 200
Height: 200
썸네일 서비스 테스트
1. Grafana 에서 설정 > 데이터 소스 > 데이터 소스 추가 > jaeger 선택
2. 아래 주소를 url에 입력후 save&test 클릭
URL : jaeger-query.default.svc.cluster.local:16686
Grafana에 jaeger 데이터소스 추가
1. crop 과 smart crop요청을 비교해봅니다.
2. 각 span의 메타데이터를 확인 합니다.
3. namespace가 default인 요청만 찾아봅니다.
4. 에러가 발생한 요청만 찾아봅니다.
Grafana explore 에서 요청 쿼리해보기
리소스 정리하기
K8S 리소스 정리
kubectl delete -f k8s/
helm uninstall grafana
helm uninstall jaeger
# 삭제 됬는지 확인
kubectl get all -n default
# EKS 삭제
eksctl delete cluster --name apm-cluster --region ap-northeast-2
AWS 리소스 정리
1. Cloud9 삭제
https://ap-northeast-2.console.aws.amazon.com/cloudformation/home?
region=ap-northeast-2#/stacks?filteringStatus=active&filteringText=aws-
cloud9-aws-cloud9-apm&viewNested=true&hideStacks=false&stackId=
2. EC2 key-pair 삭제
3. IAM 삭제
감사합니다!
May the trace with you!

More Related Content

What's hot

Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라MinKyu Kim
 
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 finalGi Bong Kim
 
자동화된 인프라구축 - 2009년 자료
자동화된 인프라구축 - 2009년 자료자동화된 인프라구축 - 2009년 자료
자동화된 인프라구축 - 2009년 자료태준 문
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Harrison Jung
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기iFunFactory Inc.
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 
AWS Community Day: AWS Fargate on EKS 실전 사용하기
AWS Community Day: AWS Fargate on EKS 실전 사용하기AWS Community Day: AWS Fargate on EKS 실전 사용하기
AWS Community Day: AWS Fargate on EKS 실전 사용하기Chanho Yong
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치choi sungwook
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표NAVER D2
 
[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지
[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지
[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지Tae-Seong Park
 
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성Tae-Seong Park
 
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...AWSKRUG - AWS한국사용자모임
 

What's hot (20)

Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
 
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
Docker를 활용한 손쉬운 ECS 활용기 - 김민태 (AUSG) :: AWS Community Day Online 2021
 
Aws발표자료 final
Aws발표자료 finalAws발표자료 final
Aws발표자료 final
 
자동화된 인프라구축 - 2009년 자료
자동화된 인프라구축 - 2009년 자료자동화된 인프라구축 - 2009년 자료
자동화된 인프라구축 - 2009년 자료
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
Aws로 ci하기 안기욱
Aws로 ci하기 안기욱Aws로 ci하기 안기욱
Aws로 ci하기 안기욱
 
Dynamodb 삽질기
Dynamodb 삽질기Dynamodb 삽질기
Dynamodb 삽질기
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.Google Cloud Next 2017 Seoul Extended 1st Session.
Google Cloud Next 2017 Seoul Extended 1st Session.
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
Ansible
AnsibleAnsible
Ansible
 
AWS Community Day: AWS Fargate on EKS 실전 사용하기
AWS Community Day: AWS Fargate on EKS 실전 사용하기AWS Community Day: AWS Fargate on EKS 실전 사용하기
AWS Community Day: AWS Fargate on EKS 실전 사용하기
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치onpremise환경에서 kubespray설치
onpremise환경에서 kubespray설치
 
파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표파이어베이스 네이버 밋업발표
파이어베이스 네이버 밋업발표
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지
[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지
[AWSKRUG] AWS Lambda Layer 로컬테스트부터 배포까지
 
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
[AWSKRUG] Lambda로컬테스트부터 배포까지의 여정-박태성
 
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 2회 - 팀플 과제를 여행하는 히치하이커를 위한...
 

Similar to Aws 커뮤니티데이 APM 헨즈온

도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습Yeomyeong Woo
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정Seonghun Kang
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제choi sungwook
 
Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축Gi Bong Kim
 
EKS workshop 살펴보기
EKS workshop 살펴보기EKS workshop 살펴보기
EKS workshop 살펴보기Jinwoong Kim
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호용호 최
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service PublishHyun Jin Moon
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3Amazon Web Services Korea
 
Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축JoongSeob Kim
 
nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성choi sungwook
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanJinsoo Park
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2XpressEngine
 

Similar to Aws 커뮤니티데이 APM 헨즈온 (20)

도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습도커 초보의 Elastic Container Service 실습
도커 초보의 Elastic Container Service 실습
 
초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정초보자를 위한 AWS EC2, RDS 설정
초보자를 위한 AWS EC2, RDS 설정
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제
 
Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축Aws개념 EC2로 API서버 구축
Aws개념 EC2로 API서버 구축
 
EKS workshop 살펴보기
EKS workshop 살펴보기EKS workshop 살펴보기
EKS workshop 살펴보기
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
Amazed by aws 2nd session
Amazed by aws 2nd sessionAmazed by aws 2nd session
Amazed by aws 2nd session
 
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호
 
AWS DevDay 실습 가이드 - 콘테이너
AWS DevDay 실습 가이드 - 콘테이너AWS DevDay 실습 가이드 - 콘테이너
AWS DevDay 실습 가이드 - 콘테이너
 
Node.js Cloud Service Publish
Node.js Cloud Service PublishNode.js Cloud Service Publish
Node.js Cloud Service Publish
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
 
성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3성공적인 게임 런칭을 위한 비밀의 레시피 #3
성공적인 게임 런칭을 위한 비밀의 레시피 #3
 
Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축Elastic beanstalk 배포 환경 구축
Elastic beanstalk 배포 환경 구축
 
nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성nexus helm 설치와 private docker repo 생성
nexus helm 설치와 private docker repo 생성
 
Nest js 101
Nest js 101Nest js 101
Nest js 101
 
테스트
테스트테스트
테스트
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
AWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide koreanAWS EC2 flask_uwsgi_nginx install guide korean
AWS EC2 flask_uwsgi_nginx install guide korean
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 

Aws 커뮤니티데이 APM 헨즈온

  • 1. EKS에서 Opentelemetry로 내 코드가 잘 동작하는지 모니터링하기 신재현 백엔드 개발자 인덴트코퍼레이션
  • 2. 오늘은 무엇을 하나요? 헨즈온 환경 구축 하기 OpenTelemetry는 무엇인가요? 서비스 배포&모니터링 하기 리소스 정리
  • 4. 헨즈온 환경 구축하기 1. EKS 접속을 위한 IAM 생성 2. Cloud9 생성 및 인증 정보 설정 3. EKS 생성 4. Helm으로 grafana, jaeger 설치
  • 5. IAM role 생성하기 1. 아래 링크를 눌러 IAM role을 생성합니다. https://console.aws.amazon.com/iam/home#/roles$new? step=review&commonUseCase=EC2%2BEC2&selectedUseCase=EC2&po licies=arn:aws:iam::aws:policy%2FAdministratorAccess 2. role 이름을 적는 폼이 나올때 까지 Next 버튼을 눌러주세요 3. role 이름을 cday-apm-handson으로 입력하고 Create role 버튼을 눌러주세요
  • 6. Cloud9 생성 1. Cloud9 콘솔에 접속하셔서 Create Environment 버튼을 클릭합니다. 2. 이름은 aws-cloud9-apm 으로 나머지는 수정없이 Cloud9 생성을 완료합니다. 3. Cloud9이 생성될 때 까지 기다립니다.
  • 7. Cloud9 환경 설정 4. Cloud9이 뜨면 R로 시작하는 프로필 버튼을 클릭 > manage EC2 Instance 클릭
  • 8. Cloud9 환경 설정 5. Cloud9 인스턴스 선택 > Actions 클릭 > Security 클릭 > Modify Iam role 클릭
  • 9. Cloud9 환경 설정 6. 방금 만든 cday-apm-handson role 선택후 저장
  • 10. Cloud9 환경 설정 7. Cloud9 설정 > AWS 설정 > Credentials > AWS 임시 토큰 사용 비활성화
  • 11. Cloud9 환경 설정 8. 좌측 사이드바의 AWS로고 클릭시 우측 하단에 ec2:instance 라고 뜨는지 확인
  • 12. EKS 개발 환경 구축 1. 헨즈온 레포 다운로드 git clone https://github.com/wesky93/cday-2021-apm-handson.git cd cday-2021-apm-handson/
  • 13. EKS 개발 환경 구축 2. SSH 키 생성 및 EC2에 SSH키 등록 ssh-keygen # enter 3번 하기 aws ec2 import-key-pair --region ap-northeast-2 --key-name "cday-handson" --public-key-material file://~/.ssh/id_rsa.pub
  • 14. EKS 개발 환경 구축 3. eksctl 설치 curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp sudo mv -v /tmp/eksctl /usr/local/bin # 설치 확인 eksctl version
  • 15. EKS 개발 환경 구축 4. kubectl 설치 # kubectl 다운로드 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" # kubectl 설치 sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl # 설치 확인 kubectl version --client
  • 16. EKS 개발 환경 구축 5. AWS IAM Authenticator curl -o aws-iam-authenticator https://amazon-eks.s3.us-west-2.amazonaws.com/1.19.6/2021-01-05/bin/linux/amd64/aws-iam-authenticator chmod +x ./aws-iam-authenticator mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$PATH:$HOME/bin echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc aws-iam-authenticator help
  • 17. EKS 개발 환경 구축 6. Helm 설치 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
  • 18. EKS 클러스터 생성 eksctl create cluster --name apm-cluster --region ap-northeast-2 --with-oidc --ssh-access=true --ssh-public-key ~/.ssh/id_rsa.pub --managed # eks 접속 kubectl get nodes
  • 19. Helm repo 추가 helm repo add grafana https://grafana.github.io/helm-charts helm repo add incubator https://charts.helm.sh/incubator helm repo add jaegertracing https://jaegertracing.github.io/helm-charts helm repo update
  • 20. Helm chart 설치 # grafana 설치 helm install grafana grafana/grafana --set adminPassword="cday-handson" --set service.type=LoadBalancer # jaeger 설치 helm install jaeger jaegertracing/jaeger-operator --set rbac.clusterRole=true
  • 21. Grafana 접속 # grafana 주소 확인 및 접속 kubectl get all -n default | grep service/grafana # ID : admin PW : cday-handson
  • 22. An observability framework for cloud-native software
  • 23. APM
  • 24. APM 솔루션 Image caption 1 Image caption 2 Image caption 3 Image caption 4 Image caption 5 Image caption 6
  • 25.
  • 26. 서비스 배포 & 모니터링
  • 27. 썸네일 서비스 배포 kubectl apply -f k8s/ # 썸네일 서비스 주소 확인 kubectl get all -n default | grep service/thumbnail-app-srv <썸네일 서비스 주소>/docs 로 접속
  • 28. 1. crop, resize, smartcrop 에 각각 아래 값을 넣어서 결과를 확인 합니다. URL_1 : https://images.chosun.com/resizer/a5YP6FNZMLmdoSmJCXiQJcN25Fw=/ 540x799/smart/cloudfront-ap-northeast-1.images.arcpublishing.com/chosun/ CFCFB3LGQ75OBNIYD36LN74FHQ.jpg URL_2 : https://naver.com Width : 200 Height: 200 썸네일 서비스 테스트
  • 29. 1. Grafana 에서 설정 > 데이터 소스 > 데이터 소스 추가 > jaeger 선택 2. 아래 주소를 url에 입력후 save&test 클릭 URL : jaeger-query.default.svc.cluster.local:16686 Grafana에 jaeger 데이터소스 추가
  • 30. 1. crop 과 smart crop요청을 비교해봅니다. 2. 각 span의 메타데이터를 확인 합니다. 3. namespace가 default인 요청만 찾아봅니다. 4. 에러가 발생한 요청만 찾아봅니다. Grafana explore 에서 요청 쿼리해보기
  • 32. K8S 리소스 정리 kubectl delete -f k8s/ helm uninstall grafana helm uninstall jaeger # 삭제 됬는지 확인 kubectl get all -n default # EKS 삭제 eksctl delete cluster --name apm-cluster --region ap-northeast-2
  • 33. AWS 리소스 정리 1. Cloud9 삭제 https://ap-northeast-2.console.aws.amazon.com/cloudformation/home? region=ap-northeast-2#/stacks?filteringStatus=active&filteringText=aws- cloud9-aws-cloud9-apm&viewNested=true&hideStacks=false&stackId= 2. EC2 key-pair 삭제 3. IAM 삭제