Observability: Universal Profiling으로 워크로드 최적화

개요

Elastic Observability 소개

Elastic Cloud를 사용하여 애플리케이션에서 고객 로그를 수집, 확인 및 분석하는 방법에 대한 개요와 Elastic Observability에 대해 좀더 자세히 알아보세요. 애플리케이션을 현대화하고 자신 있게 클라우드를 채택할 수 있는 방법을 알아보세요.


그럼 시작해볼까요

Elastic Cloud 계정 생성하기

cloud.elastic.co에 접속하여 계정을 생성한 후에, 이 동영상을 따라 전 세계 50개 이상의 지원 리전 중 하나에서 Elastic 스택을 처음 시작하는 방법에 대해 알아보세요.

Create_Deployment_8.13.png

배포가 완료되면 Observability 탭에서 Optimize my workloads with Universal Profiling( Universal Profiling으로 내 워크로드 최적화)을 선택합니다.

olly_tiles.png

이제 시작하려면 데이터를 추가하라는 메시지가 표시됩니다. Set up Universal Profiling(Universal Profiling 설정)을 선택합니다.

universal-profiling-set-up.png

Universal Profiling 에이전트를 처음 사용하는 경우, 이를 설정하라는 메시지가 표시됩니다. 아래 지침을 따르세요.

kubernetes-universal-profiling-agent-install-start.png

다음은 Microsoft Azure AKS 클러스터에서 위 명령을 실행하는 예입니다.

kubernetes-universal-profiling-agent-install-in-azure-cloud-shell.png

데이터가 표시되기 시작하면 왼쪽 메뉴의 Universal Profiling에서 Stacktraces로 이동합니다. 스택 추적을 보는 것은 가장 많은 시간을 소비하는 것이 무엇인지 확인하는 것입니다. 차트 위에 마우스 커서를 올리면 개별 스레드의 물결 패턴을 볼 수 있습니다.

스택 추적 보기에는 스레드, 호스트, Kubernetes 배포 및 컨테이너별로 그룹화된 스택 추적 그래프가 표시됩니다. 스레드 전체에서 예상치 못한 CPU 급증을 감지하고 더 작은 시간 범위로 드릴다운하여 Flamegraph를 통해 추가 조사를 수행하는 데 사용할 수 있습니다.

약 3분 이내에 데이터가 표시되기 시작합니다. 스택 추적을 읽는 방법에 대한 자세한 내용은 이 블로그를 확인하세요.

kubernetes-universal-profiling-after-agent-install.png


Elastic Observability를 사용한 작업

Flamegraph 분석

그런 다음 왼쪽 메뉴의 Universal Profiling에서 Flamegraphs로 이동합니다. 기본적으로 프로파일링은 Flamegraph와 동의어입니다. 왼쪽에서 오른쪽으로 읽으면서 가장 비싼 코드가 무엇인지 또는 가장 비싼 함수가 무엇인지 나타냅니다.

Flamegraph 페이지는 특히 디버깅 및 최적화 시 가장 많은 시간을 소비하는 페이지입니다. Flamegraph를 통해 성능 병목 현상과 최적화 기회를 식별하려면 이 블로그를 이용하는 것이 좋습니다. 찾아야 할 세 가지 핵심 요소 조건은 너비, 계층 구조 및 높이입니다.

  • CPU 집약적인 함수의 너비에 초점을 맞춰 왼쪽에서 오른쪽으로 가로로 스캔합니다.
  • 수직으로 검사하여 스택을 검사하고 병목 현상을 찾아냅니다.
  • 코드의 잠재적인 복잡성을 식별하려면 우뚝 솟은 스택을 찾으세요.

kubernetes-universal-profiling-flame-graph-after-agent-install.png

탐색을 시작하려면 특정 스레드, 호스트, 배포 또는 컨테이너로 제한하는 것이 좋습니다. 검색창에 입력하시면 됩니다.

참고: Elastic Universal Profiling은 호스트에 디버그 기호가 필요 없이 커널부터 네이티브 코드, 고급 프로그래밍 언어까지 혼합 언어 가시성을 제공하는 업계 유일의 연속 프로파일링 솔루션입니다.

universal_differential_flamegraph.png

그래프를 분석할 때 선이 길수록 CPU 시간 측면에서 더 많은 시간이 소요된다는 점에 유의하세요. 라인 중 하나를 선택하면 더 자세한 내용이 포함된 플라이아웃이 표시됩니다. Function은 당시 실행된 코드 줄이며, 총 CPU, 연간 CO2연간 달러 비용과 같은 기타 주요 세부정보도 볼 수 있습니다.

universal_differential_details.png

변경 전과 변경 후의 코드 비교

차등 Flamegraph를 사용하면 프로덕션에 적용하기 전에 변경 전과 변경 후의 코드를 비교할 수 있습니다. 청록색은 개선을 나타내고 빨간색은 회귀를 나타냅니다.

아래 이미지에서는 색상에 따라 최적화된 컨테이너가 더 나은 것을 볼 수 있습니다.

universal_differential_good.png

Gained overall performance(전체 성능 향상)에서 드롭다운 화살표를 선택하면 전반적인 개선 값을 볼 수 있습니다.

universal_differential_good_value.png

다음으로, Swap sides(양면 교체) 아이콘(비교 중인 컨테이너 사이의 아이콘은 반대 방향을 가리키는 화살표로 표시됨)을 선택하면 됩니다. 최적화하기 전에 컨테이너의 코드로 되돌리면 회귀가 발생하는 것을 볼 수 있습니다.

universal_differential_bad.png

Lost overall performance(전체 성능 손실) 드롭다운 화살표를 선택하면 전체 회귀 값을 볼 수 있습니다.

universal_differential_bad_value.png

다음으로, Go to monitor(모니터로 이동)를 선택하면 즉시 높은 수준의 인사이트를 얻을 수 있습니다. 더 많은 테스트가 진행되면 이러한 차트가 렌더링되기 시작하지만 가용성, 테스트 실행 기간, 타임라인을 빠르게 확인할 수 있으며 폭포형 차트를 자세히 살펴볼 수도 있습니다. 자세히 알아보려면 View test run(테스트 실행 보기) 아래의 아이콘을 클릭하세요.


다음 단계

Elastic Cloud를 통해 로그를 수집하고 분석해 주셔서 감사합니다. Elastic을 처음 접하는 분들은 무료 14일 체험판을 꼭 이용해 보세요.

또한 Elastic과 함께 하는 여정을 시작하면서, 환경 전체에 배포할 때 사용자로서 관리해야 하는 운영, 보안 및 데이터 구성 요소를 이해해야 합니다.


Observability 리소스