본문 바로가기
오픈텔레메트리 모니터링

(How to)제니퍼의 오픈텔레메트리 모니터링

by 제니퍼소프트 2023. 8. 10.

by Sam Yoon, Software Engineer

 

오픈텔레메트리는 이미 많은 모니터링 제품들이 자신들의 기능에 맞도록 데이터를 수집, 조회하는 기능을 제공하고 있습니다. 일부 제품들은 새로운 별도의 라인으로 구현하거나 별도의 화면을 개발하는등 제한적인 사용성을 제공하기도 합니다.

오픈텔레메트리 데이터 수집을 지원하는 것은 사용자에 일종의 데이터 원천의 선택권을 제공하는 것인데요. 제니퍼 역시 이러한 일환에서 오픈텔레메트리 데이터를 제니퍼에서 최대한 표현가능한 형태로 수용하여 모니터링 할 수 있도록 지원하고 있습니다.

제니퍼에서 오픈텔레메트리 데이터를 수집했을때 어떠한 형태의 모니터링이 가능한지 알아볼까요?

 

모니터링 대상은 분산 트레이싱으로 널리 알려진 Jaeger 개발자가 만든 microsim 을 이용했습니다. microsim 은 golang 으로 만든 7개의 서비스로 이루어진 작은 마이크로 서비스 데모입니다.

대시보드

데이터가 유입되면 제니퍼는 각 서비스별로 인스턴스를 생성하여 대시보드에 표현합니다. 동시사용자 수, 힙 메모리, 물리 메모리 등과 같은 정보들은 제외한 심플한 구성을 갖고 있습니다.

이러한 정보를 제외한 이유는 오픈텔레메트리는 Trace, Span 이라는 두개의 단순한 개념만이 존재하여 모니터링 대상의 정보는 별도의 에이전트 구성이 필요하기 때문입니다. 가급적 추가적인 설정없이 서비스를 모니터링 할 수 있는 요소로 구성을 했습니다.

기존 제니퍼의 사용자들에게 가장 많은 도움이 되었던 요소인 액티브 서비스, X-View 분석 기능에 있어 동일한 사용 경험을 제공하기 위해 많은 고민을 했습니다. 일종의 다른 제품에서 수집하여 전송하는 데이터를 제니퍼의 에이전트가 보낸 것과 동일하게 보여주고자 하기 위한 노력의 일환입니다.

데이터 출처의 선택은 사용자에게 있으나 제니퍼의 사용 경험은 동일하게 제공하고 싶었습니다.

액티브 서비스

오픈텔레메트리의 데이터 역시 실시간 상황을 즉각적으로 확인하는 것은 매우 중요합니다.

단, 데이터가 오픈텔레메트리 Collector 를 거쳐 제니퍼 서버로 전송되기 때문에 초 단위 정밀도는 보장하기 어렵지만 제니퍼에서는 준 실시간에 가까운 상태를 확인할 수 있습니다. 위 차트의 각 요소를 더블 클릭하면 다음과 같이 액티브 서비스 목록, 상세 내용을 확인할 수 있습니다.

X-View

제니퍼의 핵심 기능인 X-View 역시 동일하게 사용 가능합니다. 오픈텔레메트리 요소의 하나하나가 모두 트랜잭션으로 표현되며 상세 분석시 하위 Span 정보들을 프로파일로 확인할 수 있습니다.

차트를 드래그 하면 다음과 같이 트랜잭션 목록을 확인할 수 있습니다.

여기서 개별 트랜잭션을 클릭하면 프로파일 상세 분석 화면으로 이동합니다.

주황색으로 보이는 각 노드는 외부 호출을 뜻하는 것으로 test-executor 로부터 mysql 서비스까지 호출 구조를 한눈에 확인할 수 있습니다.

시간의 흐름을 나타내는 타임라인을 보면 주황색 노드가 없는 녹색 실선하나만이 존재하는 영역이 보이는데 이것은 micro-sim 데모가 5초마다 호출을 하고 있기 때문 입니다. sleep 같은 것을 이용해서 지연 후 다음 호출을 이어 나가고 있음을 유추해 볼 수 있습니다.

micro-sim 데모와 같이 세분화 된 서비스 호출이 많은 경우 Flame Graph 를 이용하면 최종 호출 서비스까지의 관계도를 조금 더 쉽게 확인할 수 있습니다.

제일 하단에 있는 노드들은 모두 redis 서비스를 호출하고 있네요. driver 서비스의 FindNearest 는 다수의 redis 호출로 이루어져 있음을 알 수 있습니다.

연관 트랜잭션

기존의 연관 트랜잭션을 개선한 기능입니다. 개별 서비스의 호출에 대한 관계를 확인할 수 있습니다. 각 노드를 클릭하면 해당 트랜잭션으로 이동하여 상세 분석이 가능합니다. 어느 지점에나 마우스 커서를 올려 놓으면 서비스의 시작부터 끝을 강조하여 분석해야 할 대상의 범위를 빠르게 줄여나갈 수 있을 것입니다.

토폴로지

토폴로지 역시 각 서비스의 호출 관계를 실시간으로 모니터 기능을 제공합니다. 각 Span 들의 상관 관계를 분석하여 구성했으며 구간 호출 정보 역시 기존처럼 동일하게 X-View 로 확인할 수 있습니다.

다양한 서비스로 이루어진 경우 전체 시스템의 서비스 호출 구조를 한눈에 파악하는데 도움을 줄 수 있습니다.

그 외 지원하는 기능들

제니퍼 에이전트의 유틸성 기능을 제외한 기능들을 제공하고 있습니다.

대시보드/사용자 정의 대시보드, 분석, 통계, 보고서

마치며

오픈텔레메트리를 제니퍼에서 표현하기까지 다양한 제품들을 이용해보고 다음과 같은 생각이 들었습니다.

뭔가 움직이는게 안보이는데.. 실시간으로 확인할 수 있는 내용들이 조금 부족한 것 같기도 하고. 어디를 봐야 서비스들의 상태를 알 수 있을까?

오픈텔레메트리를 지원하긴 하는데 데이터가 안나오는게 있네. 어딘가 설정이 있겠지? 제품이 지원하는 기능이 많다보니 설정을 찾기도 쉽지가 않구나.

수 많은 기능을 제공하지만 사용하기 쉽지 않다라는 느낌을 많이 받았습니다. 제니퍼 역시 사용 경험이 전무한 사용자에게는 어렵게 느껴질 수 있지만 기본적인 모니터링에는 직관적인 사용 경험을 제공한다고 생각합니다.

 

제니퍼의 데이터와 다른 특성을 갖고 있는 오픈텔레메트리의 모니터링을 할 때 역시 좀 더 쉬운 모니터링을 할 수 있도록 예외적인 상황을 만들지 않으려 노력했습니다.

 

국내와 달리 해외에서는 오픈텔레메트리와 같은 모니터링의 표준 방법이 발표된 후 모니터링 제품 선택에 있어 자유도가 높아졌습니다. 거대한 모니터링 기업들이 오픈텔레메트리 개발에 적극적으로 참여하며 지원하기 때문입니다.

기존 사용자 뿐 아니라 좀 더 자유로움을 추구하는 사용자의 선택지에 제니퍼가 포함될 수 있기를 기대하며 본 글을 마칩니다.

'오픈텔레메트리 모니터링' 카테고리의 다른 글

오픈텔레메트리란 무엇일까요?  (0) 2023.08.10