Ssoon
AWS EKS - Observability - Open Source 본문
CloudNet@ 팀의 AWS EKS Workshop Study 2기 - 4주차
# EKS Workshop 참고
- Workshop 실습 환경 준비
더보기


- 실습 환경 다음과 같이 변경
- 오픈 텔레메트리용 AWS 배포용 EKS 관리형 애드온을 설치
- ADOT 수집기가 Amazon 관리형 Prometheus에 액세스할 수 있도록 IAM 역할을 생성
- 테라폼실습구성링크
AWS Distro for OpenTelemetry(ADOT)
- AWS가 제공하는 오픈 표준 분산 추적 및 모니터링 솔루션
- 모델 기반의 분산 추적, 메트릭 및 로그 수집, 분석을 지원하여 클라우드 환경에서 애플리케이션 성능 모니터링
- 분산 추적(Distributed Tracing):
- ADOT는 애플리케이션의 분산 추적을 위한 오픈 표준을 제공
- 애플리케이션의 요청이 여러 마이크로서비스를 통과하는 경로를 추적
- OpenTelemetry의 모델 기반 추적을 기반으로 구축되어 있으며, 다양한 프로그래밍 언어 및 프레임워크에서 사용
- 메트릭 및 로그 수집:
- ADOT는 메트릭과 로그를 수집하여 중앙 집중식 저장소에 보내는 기능을 제공
- 애플리케이션의 성능 및 상태에 대한 실시간 모니터링을 수행
- Amazon CloudWatch 및 Amazon S3와 같은 AWS 서비스와 통합되어 데이터를 수집하고 저장
- 연동 및 확장성:
- ADOT는 다양한 AWS 및 서드파티 서비스와의 연동을 지원하여 클라우드 네이티브 환경에서의 모니터링
- 또한 오픈 표준 기반으로 구축되어 있어 다양한 플러그인 및 확장 기능을 제공
- 보안 및 권한 관리:
- ADOT는 AWS 보안 및 권한 관리 도구와 통합되어 데이터의 보안을 강화하고 접근 제어를 관리
- IAM(Identity and Access Management)을 사용하여 데이터에 대한 액세스 권한을 제어
- AWS 지원 및 관리:
- AWS Distro for OpenTelemetry는 AWS에서 제공하는 서비스로써 지속적인 업데이트와 관리를 제공
- AWS가 OpenTelemetry의 지원 및 유지 관리를 담당하여 사용자는 안정적인 서비스를 기대
Amazon Managed Service for Prometheus(AMP)
- AWS에서 제공하는 완전관리형 Prometheus 서비스
- Prometheus와 호환되는 완전 관리형 솔루션으로, 클라우드에서 메트릭을 수집, 저장, 쿼리하는 데 사용
- 애플리케이션 및 인프라의 성능을 실시간으로 모니터링하고 분석
- 완전 관리형 서비스:
- AMP는 완전 관리형 서비스로, AWS가 서버 관리, 스케일링, 백업 및 유지 관리를 모두 담당
- 사용자는 Prometheus 인프라를 구축하거나 관리할 필요 없이 메트릭을 수집하고 분석
- Prometheus 호환성:
- AMP는 Prometheus와 완전히 호환되며, Prometheus가 지원하는 모든 기능과 기능을 지원
- 사용자는 기존의 Prometheus 설정, 경보 및 규칙을 AMP에 쉽게 이전
- 확장성 및 성능:
- AMP는 대규모 메트릭 데이터를 처리하고 분석할 수 있도록 설계
- 탄력적인 스토리지 및 쿼리 엔진을 사용하여 대규모 환경에서도 높은 성능을 제공
- 시각화 및 모니터링:
- AMP는 메트릭을 시각화하고 모니터링하기 위한 다양한 도구를 제공
- Amazon CloudWatch 및 AWS X-Ray와 같은 AWS 서비스와 통합되어 메트릭 데이터를 모니터링하고 대시보드를 생성
- 보안 및 권한 관리:
- AMP는 AWS의 보안 및 권한 관리 도구를 사용하여 데이터의 보안을 강화하고 접근 제어를 관리
- IAM(Identity and Access Management)을 사용하여 데이터에 대한 액세스 권한을 제어
OpenTelemetry용 AWS 배포를 사용하여 애플리케이션에서 메트릭을 수집하고, Prometheus용 Amazon 관리형 서비스에 메트릭을 저장하고, Amazon 관리형 Grafana를 사용하여 시각화
💠 오픈 텔레메트리용 AWS 배포판을 사용한 메트릭 스크래핑
- 이미 생성된 Amazon 관리형 서비스용 Prometheus 작업 공간에 메트릭을 저장
- 워크스페이스를 보려면 왼쪽 제어판에서 모든 워크스페이스 탭을 클릭
- eks-workshop으로 시작하는 작업 공간을 선택하면 작업 공간 아래에서 규칙 관리, 알림 관리자 등과 같은 탭 확인
- Amazon EKS 클러스터에서 메트릭을 수집하기 위해 OpenTelemetryCollector 사용자 정의 리소스를 배포
- EKS 클러스터에서 실행 중인 ADOT 운영자는 이 리소스의 존재 또는 변경 사항을 감지하고 그러한 변경 사항에 대해 다음 작업을 수행
- 생성, 업데이트 또는 삭제 요청에 필요한 모든 연결이 Kubernetes API 서버에 사용 가능한지 확인
- 사용자가 OpenTelemetryCollector 리소스 구성에 표현한 방식으로 ADOT collector 인스턴스를 배포
- ADOT collector 에 필요한 권한을 허용하는 리소스 생성
- 수집기 에 Kubernetes API에 액세스할 수 있는 권한을 부여하는 ClusterRole 부터 시작
- 관리형 IAM 정책인 AmazonPrometheusRemoteWriteAccess 를 사용하여 서비스 계정에 대한 IAM 역할을 통해 수집기에 필요한 IAM 권한을 제공
- 이 IAM 역활을 수집기에 대한 서비스 계정에 추가
- 리소스 생성
- 수집기 의 사양 확인
- OpenTelemetry 수집기 구성
- 다음과 같은 구조로 OpenTelemetry 파이프라인을 구성
- Receivers
- Prometheus 엔드포인트를 노출하는 대상에서 메트릭을 스크랩하도록 설계된 Prometheus 수신기
- Processors
- 이 파이프라인에 없음
- Exporters
- AMP와 같은 Prometheus 원격 쓰기 엔드포인트로 메트릭을 전송하는 Prometheus 원격 쓰기 내보내기
- Receivers
- 하나의 수집기 에이전트가 실행 중인 배포로 실행되도록 구성
- 실행 중인 ADOT 수집기 파드를 검사
💠 AMP로 메트릭 저장
- 메트릭의 수집을 확인
💠 Grafana에 액세스
- Grafana 인스턴스가 EKS 클러스터에 사전 설치 / 액세스하려면 먼저 URL을 검색
- 사용자 자격 증명을 검색하려면 Grafana 헬름 차트에서 생성한 secret 을 쿼리
- Grafana 콘솔에 로그인한 후, 데이터 소스 섹션 확인
- 이미 데이터 소스로 구성된 Prometheus용 Amazon 관리형 서비스 작업 영역 확인
💠 클러스터 대시보드
- 대시보드 섹션으로 이동하여 AWS 배포판에서 수집한 EKS 클러스터 메트릭을 시각화
- 총 사용량 패널에는 CPU, 메모리 및 파일 시스템 사용량 측면에서 전체 클러스터 사용률이 표시
💠 Application Metrics
- 워크로드에 의해 노출되는 메트릭에 대한 인사이트를 얻는 방법:
- Java 힙 메트릭 또는 데이터베이스 연결 풀 상태와 같은 시스템 메트릭
- 비즈니스 KPI와 관련된 애플리케이션 메트릭
- OpenTelemetry용 AWS 배포판을 사용해 애플리케이션 메트릭을 수집하고 Grafana를 사용해 메트릭을 시각화하는 방법
- 이 워크샵의 각 구성 요소는 특정 프로그래밍 언어 또는 프레임워크와 관련된 라이브러리를 사용하여 Prometheus 메트릭을 제공하도록 계측
- 주문 서비스에서 이러한 메트릭의 예
- System metric
- 유휴 상태인 JDBC 연결 수
- Application metric
- 리테일 스토어를 통해 접수된 주문 수
- 결제 서비스 등 다른 컴포넌트에도 유사한 요청을 실행
- 이 실습에서는 ADOT를 활용하여 모든 구성 요소에 대한 메트릭을 수집하고 주문이 접수된 수를 표시하는 대시보드를 확인
- 애플리케이션 포드에서 메트릭을 스크랩하는 데 사용되는 OpenTelemetry 구성 확인
- 이 구성은 특정 어노테이션이 있는 모든 파드를 자동으로 검색하기 위해 Prometheus Kubernetes 서비스 검색 메커니즘을 활용
- prometheus.io/scrape 어노테이션이 있는 모든 파드를 검색하고 네임스페이스 및 파드 이름과 같은 Kubernetes 메타데이터로 스크랩하는 메트릭을 보강
- 주문 구성 요소 포드에서 주석을 확인
- 클러스터 지표에 관한 섹션에서 살펴본 것처럼 이러한 포드 지표도 동일한 OpenTelemetry 내보내기를 사용하여 AMP로 전송
- 다음으로 아래 스크립트를 사용하여 스토어를 통해 주문을 처리하고 애플리케이션 지표를 생성하는 로드 생성기를 실행
- 대시보드 페이지로 이동하여 대시보드 주문 서비스 메트릭을 클릭하여 대시보드 내의 패널을 검토
- 제품별 주문' 패널의 제목 위로 마우스를 가져가 '편집' 버튼을 클릭 => 대시보드가 AMP를 쿼리하도록 어떻게 구성되었는지 확인
- 이 패널을 만드는 데 사용된 PromQL 쿼리는 페이지 하단에 표시
- sum by(productId):
- 결과를 productId 레이블을 기준으로 그룹화하고, 각 그룹의 값을 합산하는 것을 의미
- 즉, 메트릭 데이터를 productId에 따라 그룹화하고, 같은 productId 값을 가지는 메트릭 값을 합산
- (watch_orders_total{productId!="*"}):
- 쿼리의 대상이 되는 메트릭을 지정
- watch_orders_total이라는 메트릭을 쿼리하며, productId 레이블 값이 "*"(모든 값)이 아닌 것들만 선택
- 즉, 모든 productId 값을 가진 메트릭이 아닌, 실제 값이 있는 경우만 선택
특정 시간 범위 내에서 watch_orders_total 메트릭을 기반으로 한 productId의 합계를 계산합니다. 이를 통해 각 productId에 대한 주문 총액 또는 수량 등을 쉽게 파악
'AWS EKS Workshop Study 2기' 카테고리의 다른 글
AWS EKS - Observability - Cost visibility with Kubecost (0) | 2024.03.30 |
---|---|
AWS EKS - Observability - Container Insights (0) | 2024.03.30 |
AWS EKS - Observability - OpenSearch (0) | 2024.03.30 |
AWS EKS - Observability - Logging in EKS (0) | 2024.03.30 |
AWS EKS - Storage - EFS (2) | 2024.03.23 |
Comments