SlideShare a Scribd company logo
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
Aws 커뮤니티데이 APM 헨즈온
서비스 배포 & 모니터링
썸네일 서비스 배포
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

PDF
EC2용 SSH Tool - Eclair
PDF
Ansible과 CloudFormation을 이용한 배포 자동화
PDF
Redis on AWS
PDF
Eclair
PPTX
02.실전! 시스템 관리자를 위한 Ansible
PDF
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
PDF
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
PDF
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
EC2용 SSH Tool - Eclair
Ansible과 CloudFormation을 이용한 배포 자동화
Redis on AWS
Eclair
02.실전! 시스템 관리자를 위한 Ansible
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220

What's hot (20)

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

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

PPTX
EKS workshop 살펴보기
PDF
AWS에서 Kubernetes 실행하기 - 황경태 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
PDF
Running Kubernetes in hybrid environments with AWS (EKS Distro & EKS Anywhere...
PDF
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
PDF
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
PDF
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
PDF
Amazon EKS를 통한 빠르고 편리한 컨테이너 플랫폼 활용 – 이일구 AWS 솔루션즈 아키텍트:: AWS Cloud Week - Ind...
PDF
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
PDF
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
PDF
통신사의 차별화된 메시징 서비스 아키텍처를 소개합니다 - 정영준 AWS 솔루션즈 아키텍트 / 강성원, 나상화 소프트웨어 엔지니어 무선사업부...
PDF
Prometheus in openstack-helm
PDF
셸 스크립트를 이용한 클라우드 시스템 운영
PDF
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
PDF
오픈소스 모니터링 알아보기(Learn about opensource monitoring)
PPTX
Use Helm to deploy Prometheus Operator in EKS.pptx
PDF
클라우드 네이티브 환경에 맞는 IT 운영 원칙과 모범사례 - 권신중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
PDF
Kubernetes on Premise Practical Guide
PDF
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
PDF
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
PDF
[제3회 스포카콘] Kubernetes in Spoqa
EKS workshop 살펴보기
AWS에서 Kubernetes 실행하기 - 황경태 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Running Kubernetes in hybrid environments with AWS (EKS Distro & EKS Anywhere...
Amazon EKS로 웹 애플리케이션 구축하기-awskrug.pdf
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
AWS 기반 Kubernetes 정복하기::정영준:: AWS Summit Seoul 2018
Amazon EKS를 통한 빠르고 편리한 컨테이너 플랫폼 활용 – 이일구 AWS 솔루션즈 아키텍트:: AWS Cloud Week - Ind...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
세션3_데보션테크데이_gitopsinfra_v1.1.pdf
통신사의 차별화된 메시징 서비스 아키텍처를 소개합니다 - 정영준 AWS 솔루션즈 아키텍트 / 강성원, 나상화 소프트웨어 엔지니어 무선사업부...
Prometheus in openstack-helm
셸 스크립트를 이용한 클라우드 시스템 운영
EKS를 통한 차량 공유 서비스 '타다' 서비스 구축기 - 김태호, VCNC :: AWS Summit Seoul 2019
오픈소스 모니터링 알아보기(Learn about opensource monitoring)
Use Helm to deploy Prometheus Operator in EKS.pptx
클라우드 네이티브 환경에 맞는 IT 운영 원칙과 모범사례 - 권신중 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
Kubernetes on Premise Practical Guide
데브옵스 엔지니어를 위한 신규 운영 서비스 - 김필중, AWS 개발 전문 솔루션즈 아키텍트 / 김현민, 메가존클라우드 솔루션즈 아키텍트 :...
Amazon ECS를 통한 도커 기반 콘테이너 서비스 구축하기 - AWS Summit Seoul 2017
[제3회 스포카콘] Kubernetes in Spoqa
Ad

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
  • 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 삭제