Amazon OpenSearch로 EKS환경 Observability 구현하기에 대한 2번째 글 입니다.
1. Amazon OpenSearch로 EKS환경 Observability 구현하기 (1) - 마이크로서비스 환경의 Obervability와 필요성, AWS 인프라 구성
2. Amazon OpenSearch로 EKS환경 Observability 구현하기 (2) - OpenSearch 클러스터 테스트 및 EKS 클러스터 배포
3. Amazon OpenSearch로 EKS환경 Observability 구현하기 (3) - 로그검색 활성화 및 Observavility 구현/테스트
OpenSearch 테스트
- Stack의 출력탭의 AOSDashboardsPublicIP0을 확인하여 Dashboard URL을 확인합니다.
- 확인한 URL을 통해 대시보드에 접속합니다.
- 로그인 정보는 출력탭의 AOSDomainUserName0, AOSDomainPassword0 에서 확인할 수있습니다.
- 로그인 정보는 출력탭의 AOSDomainUserName0, AOSDomainPassword0 에서 확인할 수있습니다.
- 개발도구 (Dev Tools)를 선택하여 REST API를 테스트 해봅니다.
- 요청을 입력하고 API를 요청합니다.
GET \_cat/indices?v
Cloud9 테스트
- Stack 출력탭의 Cloud9IDE0를 확인하여 Cloud9 환경에 접속합니다.
마이크로서비스 구축
- 샘플앱인 o11y Shop을 마이크로서비스 아키텍쳐로 배포해봅시다.
https://github.com/aws-samples/observability-with-amazon-opensearch/ - Cloud9 터미널에서 샘플앱을 받아오고 배쉬쉘에 적용합니다.
curl -sSL <[https://raw.githubusercontent.com/aws-samples/observability-with-amazon-opensearch/main/00-setup.sh](https://raw.githubusercontent.com/aws-samples/observability-with-amazon-opensearch/main/00-setup.sh)\> | bash -s stable source ~/.bash\_profile
- 마이크로서비스 이미지를 빌드하고 ECR에 푸시합니다.
- 총 8개의 서비스로 구성되어 ECR에 각각 푸시됩니다. 푸시되는 리포지토리는 다음과 같습니다.
- analytics-service, database-service, order-service, inventory-service, payment-service, recommendation-service, authentication-service, client-service
cd ~/environment/observability-with-amazon-opensearch/scripts/ bash 01-build-push.sh
분석데이터를 OpenSearch로 전송하기
- 구축한 마이크로서비스(o11y shop)에서 로그 및 추적을 캡쳐한 후 OpenSearch로 전송합니다.
- 로그수집 - FluentBit FluentBit을 사용하여 EKS컨테이너에 적용합니다. 애플리케이션의 로그를 캡쳐하고 OpenSearch에 로그를 기록하는 Data Prepper로 전달합니다.
- 추적수집 - OpenTelemetry용 AWS Distro EKS에서 에서 실행되는 o11y Shop애플리케이션의 추적을 수집하고 Data Prepper로 전달합니다.
- OpenSearch 도메인으로 로그와 추적 인제스쳔 Data Prepper 를 사용하여 원격 분석 데이터를 OpenSearch로 보내는 파이프라인을 구축합니다. Data Prepper는 OpenTlemetry Collector에서 추적데이터를, FluentBit에서 로그데이터를 받아 OpenSearch에 기록합니다.
- Cloud9에서 Data Prepper 설정파일로 이동합니다.
- 설정파일은 다음에 위치하고 있습니다. ~/environment/observability-with-amazon-opensearch/sample-apps/01-data-prepper/kubernetes/data-prepper.yaml
- data-prepper.yaml 에서 raw-pipeline (25행), service-map-pipeline (37행) 및 log-pipeline (50행) 파이프라인을 검색합니다 .
- 위의 각 파이프라인의 싱크 구성에 OpenSearch 자격 증명( hosts , username 및 password )이 누락되었음을 알 수 있습니다 . 적절한 액세스 자격 증명이 없으면 Data Prepper는 OpenSearch에 데이터를 쓸 수 없습니다.
- CloudFormation의 '출력' 탭의 AOSDomainEndpoint0, AOSDomainUserName0, AOSDomainPassword0 을 사용하여 자격증명을 업데이트 합니다.
- data-prepper.yaml 의 변수( hosts , username 및 password ) 를 변경합니다.
마이크로서비스 배포하기
- Data Prepper또한 다른 마이크로서비스와 함께 배포되므로, Kubernetes 매니페스트를 적용해야합니다.
- 다음 명령을 입력합니다. 매니페스트를 적용합니다.
cd ~/environment/observability-with-amazon-opensearch/scripts/ bash 02-apply-k8s-manifests.sh
- 다음 명령을 입력합니다. 매니페스트를 적용합니다.
- 모든 파드가 실행중인지 확인합니다.
- 다음 명령을 입력합니다.
watch -n 10 kubectl get pods --all-namespaces
- 다음 명령을 입력합니다.
- o11y Shop의 웹 URL로 접속을 시도해보겠습니다.
- URL가져옵니다. 다음 명령을 입력합니다.
kubectl get svc -nclient-service | awk '{print $4}' | tail -n1
- URL가져옵니다. 다음 명령을 입력합니다.
- 접속 완료