Microsoft MVP성태의 닷넷 이야기
제니퍼 .NET: 4. 닷넷 APM 솔루션 - 제니퍼 닷넷의 기능 요약 [링크 복사], [링크+제목 복사]
조회: 19769
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 5개 있습니다.)
닷넷 APM 솔루션 - 제니퍼 닷넷의 기능 요약


지난 시간을 통해서 .NET APM(Application Performance Management) 솔루션인 "제니퍼 닷넷"의 설치 방법을 알아봤습니다.

JENNIFER .NET을 이용한 .NET 웹 사이트 모니터링 (1) - 임시 라이선스 요청 및 다운로드
; https://www.sysnet.pe.kr/2/0/857

JENNIFER .NET을 이용한 .NET 웹 사이트 모니터링 (2) - 설치
; https://www.sysnet.pe.kr/2/0/858

그런데 과연 어떤 기능들이 있길래, APM 솔루션으로써 자리매김할 수 있었을까요? 이번에는 그 주요 기능들을 하나씩 살펴보도록 하겠습니다.




1. 운영 서버 모니터링


"제니퍼"는 "운영 중인 시스템"을 최소한의 부하로 24시간 365일 상시 모니터링 할 수 있다는 점에서 타 APM 솔루션과 비교해 탁월한 성능 이슈 감지 기능을 제공합니다. 실 서버에 적용할 수 있다는 점으로 인해 운영 중에 불특정하게 발생할 수 있는 성능 문제를 모니터링하는 것이 가능합니다.

2. 전 거래 모니터링


제니퍼는 모든 "요청" 건수를 모니터링합니다. 이런 특성으로 인해 요청 간에 영향을 주는 문제까지 모두 파악할 수 있는 능력이 있습니다. 예를 들어, "A", "B", "C" 순으로 들어오는 요청에서 "A" 요청에서 DB 트랜잭션을 걸고 "B", "C"가 그 트랜잭션에 영향을 받아 Lock이 걸렸을 때의 상황을 "제니퍼" 대시보드를 통해 분석하는 것이 가능합니다.

이 때문에, "운영자"는 웹 사이트를 100% 관리 가능한 상태로 둘 수 있습니다. ("Managed 언어"로 만들어진 웹 사이트라고 해서 운영 시에 "Managed" 상태가 되는 것은 아닙니다.)

3. 수행 중인 서비스 모니터링


"현재 실행 중인 서비스", 즉 실행 중인 aspx, asmx, svc 등의 서비스 처리에 대한 상황을 제니퍼 대시보드에서 확인할 수 있습니다.

[그림 1: 수행 중인 서비스 대시보드]
jennifer_main_features_1.png

위에서 보는 것처럼 "(A)" 영역은 모니터링 대상이 되는 모든 IIS 서비스에서 처리 중인 aspx/asmx/svc 서비스의 수를 제공하고 "(B)"영역은 개별 웹 애플리케이션 별로 처리 중인 aspx/asmx/svc 서비스의 수를 보여주고 있습니다. [그림 1]의 상황에서는 현재 36개의 요청이 처리 중에 있음을 나타내고 (빨간 막대로 표시되는) 8초 이상 걸리는 서비스들이 14개 정도 있음을 알 수 있습니다.

이 화면을 통해서, 운영자는 직관적으로 빨간 막대가 늘어날 때 장시간 쓰레드를 점유하는 서비스가 있음을 알 수 있고 이는 곧 "사용자 응답시간"을 저해하는 요소로써 튜닝이 필요한 부분임을 알 수 있습니다.

나아가서, "실시간 액티브 서비스 개수" 대시보드의 막대를 마우스로 더블 클릭하면 요청 중인 서비스 목록을 확인하는 것도 가능합니다.

[그림 2: 수행 중인 aspx/asmx/svc 목록]
jennifer_main_features_2.png

운영자는 이런 경우, 장시간 수행 중인 aspx 웹 페이지가 도대체 어디에서 Hang(멈춤) 현상을 겪고 있는지를 알고 싶어할 것입니다. [그림 2]의 애플리케이션 뷰는 개별 서비스에 대한 링크를 제공하여 그 서비스를 수행 중인 스레드의 호출 스택을 보는 것이 가능합니다.

[그림 3: 수행 중인 스레드의 호출 스택(Call stack) 덤프]
jennifer_main_features_3.png

운영자는 [그림 3] 화면을 통해서 이 서비스의 장애 원인이 외부 서비스의 호출 때문인지? DB 트랜잭션 잠금으로 인한 것인지? 등의 원인을 파악할 수가 있고 개발자에게 문제 해결을 위한 정보를 제공할 수 있게 됩니다.

4. 응답 시간 분포 그래프(X-View) 제공


고객들의 피드백으로 입증된 제니퍼의 가장 강력한 기능으로써 X-View 화면을 들 수 있습니다. X 축을 호출된 시간으로, Y 축을 응답시간으로 하여 전 거래에 대한 분포도를 나타내고 있기 때문에 웹 사이트에 대한 성능을 한 눈에 파악하는 것이 가능합니다.

[그림 4: 응답 시간 분포 그래프(X-View)]
jennifer_main_features_4.png

X-View는 운영자로 하여금 직관적으로 알 수 있는 튜닝 포인트를 제공하는데, 뷰의 하단 영역에 위치한 - 즉, 처리가 빠른 서비스들보다는 X-View 화면의 상단에 분포한 거래를 위주로 튜닝해야 한다는 것과, 마우스로 그 영역을 Drag 함으로써 해당 요청들에 대한 보다 자세한 정보를 볼 수 있게 합니다.

[그림 5: 응답이 느린 요청 건수에 대한 상세 화면]
jennifer_main_features_5.png

"상세 화면"에서는 요청을 처리하는 과정 중에 발생한 DB 연동 결과를 함께 제공하므로, 대부분의 웹 사이트가 DB 연동 과정에서 장애가 발생하는 것에 대해 직접적인 원인을 파악할 수 있습니다.

5. 응답 시간 분포 그래프(X-View) 기반의 문제 해석 예 - 트랜잭션 잠김으로 인한 부하 발생


운영 서버에서 빈번하게 발생하는 문제 중의 하나가 바로 트랜잭션 Lock인데, X-View에서 어떻게 보여지는 지를 아래의 화면에서 확인할 수 있습니다.

[그림 6: 트랜잭션 Lock으로 인한 X-View 패턴]
jennifer_main_features_6.png

보통 이와 같이 수직으로 늘어서는 것을 볼 수 있는데, 대개 가장 상단의 요청에서 점유하고 있던 트랜잭션이 해제되면서 연이어 그 트랜잭션으로 인해 잠겨 있던 SELECT 유의 빠른 응답이 가능한 요청들이 처리되어 거의 "수직"에 가까운 선이 생기는 것을 볼 수 있습니다.

해당 트랜잭션을 발생한 서비스 및 SQL 쿼리를 알기 위해서 수직으로 늘어선 점들을 포함한 영역을 마우스로 드래그 하면 아래와 같이 상세화면을 볼 수 있습니다.

[그림 7: X-View 상세 화면을 통해 SQL 쿼리 확인]
jennifer_main_features_7.png

이 화면에서는 DB에 대한 "연결 문자열"과 "SQL 쿼리 문자열", 그 쿼리에 전달된 인자(IDbDataParameter)를 확인할 수 있습니다.

결국, 이런 과정을 통해서 웹 사이트 관리자는 서비스에 장애 요인이 될 수 있는 환경들을 점진적으로 개선할 수 있고, 그와 동시에 사이트 사용자들은 보다 낮은 응답시간의 웹 서비스를 경험하게 됩니다.

6. 자바/닷넷 웹 응용 프로그램 모니터링


동일한 제품 라인으로 자바 및 닷넷 프레임워크로 만들어진 웹 사이트를 모니터링하는 것이 가능하기 때문에, 다양한 웹 응용 프로그램을 관리하는 운영자는 웹 사이트 별 모니터링 제품을 복잡하게 고려할 필요가 없습니다. 또한, 자바와 닷넷의 환경 차이로 인한 설정값을 제외하고 대부분의 모니터링 환경이 동일하기 때문에 자바 버전의 제품 사용 경험이 닷넷 버전의 제품에서도 이어질 수 있도록 일관성 있는 UI 경험을 제공합니다.

7. 서비스 폭주 시 부하량 제어


보통 PLC(Peak Load Control: 임계 부하량 제어) 기능이 필요한 경우를 예로 들 때, 레거시 시스템과의 병목 현상을 이야기합니다. 가령 레거시 시스템으로부터 데이터를 가져오는 GetData.aspx라는 페이지가 있다고 할 때, 대상 시스템이 한 번에 "90"개의 동시 요청만을 받는 제한적인 상황이 있을 수 있습니다. 하루 중 가장 요청이 많은 서비스 시간대가 되면 빈번하게 90개 이상의 동시 요청이 들어올 수 있고, 이렇게 동시에 요청된 90개 이상의 요청들은 이전의 요청들이 끝날 때 까지 Hang(멈춤) 상태에 빠지게 됩니다. 혹은 동시 요청 제한이 없는 경우라 하더라도 대상 레거시 시스템이 급격한 요청 증가로 인해 시스템 다운이 된다면, 제니퍼를 이용하여 GetData.aspx 웹 페이지를 호출할 수 있는 동시 요청 수를 제한할 수 있습니다.

요청 거부된 웹 페이지들은 운영자가 정의한 별도의 HTML 웹 페이지로 재지정 될 수 있습니다.

아래의 화면은 90개를 상한으로 지정된 웹 페이지의 동시 요청 수가 그 임계값을 넘었을 때 제니퍼 콘솔의 스피드 미터에서 확인되어지는 상황과 사용자로 하여금 운영자가 정의한 메시지 화면을 볼 수 있도록 처리되었음을 보여주고 있습니다.

jennifer_main_features_8.png

8. 사용자 정의 대시보드 구성


특정 웹 사이트의 경우, 운영자가 해당 웹 사이트에서만 유효한 성능 카운터를 제니퍼 콘솔에서 같이 확인하는 것이 가능합니다. 이를 위해서 운영자는 제니퍼소프트에서 제공하는 REMON 라이브러리를 이용하여 성능 카운터를 제니퍼 서버에 전송하는 것이 가능하고, 전송된 성능 카운터 정보를 확인할 수 있는 "사용자 정의 대시보드"를 제니퍼 콘솔에 넣는 것이 가능합니다.

아래는 실제 사례로 구현된 사용자 정의 대시보드 화면입니다.

jennifer_main_features_9.png

9. 기타...


이 외에도 경보 기능, 통계 분석 및 보고서, 도메인 구성 등... 열거할 수 있는 기능들이 너무나 많은데 모두를 자세히 살펴볼 수 없기 때문에 생략하겠습니다. 자세한 사항은 별도 제공되는 매뉴얼을 참고하십시오. 필요한 경우, 시간 나는 데로 천천히 제 블로그를 통해서도 알아보도록 하겠습니다.




어떠세요? APM 솔루션이 손에 잡히시나요?

흔히들, APM 솔루션은 문제가 있는 시스템에서만 사용하는 걸로 알고 있습니다. 그런데 이 부분에 대해 제니퍼소프트의 연구소장으로 계시는 "김성조" 기술 이사님의 말씀이 재미있습니다.

"문제가 있는 시스템"이라는 것의 기준이 매우 모호하다는 것이 바로 더욱 근본적인 문제이다. 즉, 적절한 APM 솔루션이 없어 해당 웹 사이트에 대한 "성능의 정량화" 또는 "서비스 운영에 대한 가시성"이 확보되지 않았다면 과연 정말 문제가 있는지/없는지에 대해서는 판단할 수 없다...


그리고, 그렇게 해서 APM 솔루션을 선택해야 한다면? 가장 현실적이고 실용적인 APM 솔루션인 "제니퍼"가 있습니다.



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 11/22/2022]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2011-02-15 04시33분
[안기석] 안녕하십니까?

제니퍼의 서비스를 체험해 보고자 홈페이지에서 도큐멘트와 설치파일, 라이센스를 받아서 테스트 해 보는 중입니다만
이제 막 APM 에 관심을 가지게 되다 보니, 모르는 것이 많습니다.

다운로드 받은 JENNIFER4.5.net.install.pdf 설치 파일에
닷넷버전의 경우 IIS / COM+ / 이외의 응용프로그램(?) / NT 서비스를 모니터링 할 수 있다고 되어 있는데 반해
브로슈어에는 ASPX, ASMX, WCF, COM+ 를 모니터링 한다고 나와 있습니다.

설치 안내서에 나와 있는 응용프로그램(EXE)는 왜 모니터링 하는 것인지 궁금합니다.
지뢰찾기같은 아무 응용 프로그램도 모니터링이 되는 겁니까?^^

제니퍼 홈페이지에다 해야 할 질문을 정성태 님께 드리게 되어 실례가 된건 아닌지 모르겠습니다.
혹시 부적절한 질문이면 삭제하겠습니다.

감사합니다.

email : scabbag1@nate.com
[guest]
2011-02-15 06시17분
브로슈어는 가능한 대표적인 경우만을 제시한 것이라서 그렇게 나와 있습니다. (또는 꾸준히 제니퍼 기능이 올라가고 있기 때문에 브로슈어 만들 당시에 없던 것이 포함되기도 합니다.)

일반 응용 프로그램은, 가끔 보면 NT 서비스로 등록하지 않은 "서비스 식의 응용 프로그램"을 운영하는 곳이 있기 때문입니다. 예를 들어, 단순 EXE에 WCF 서비스를 올려놓고 사용하는 경우가 그 한 예입니다. (지뢰찾기 같은 것은... ^^; 글쎄요. 모니터링할만한 서비스 포인트가 없기 때문에 제니퍼 닷넷을 설치해도 별다르게 모니터링 되는 부분이 없을 것입니다.)

참고로, 제니퍼에 대한 문의는 댓글로 남기셔도 되지만, 제게 이메일을 보내시거나 저희 회사 홈페이지에 공개된 기술 엔지니어에게 메일을 보내셔도 됩니다. ^^
정성태

1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13573정성태3/5/20241558닷넷: 2225. Windbg - dumasync로 분석하는 async/await 호출
13572정성태3/4/20241633닷넷: 2224. C# - WPF의 Dispatcher Queue로 알아보는 await 호출의 hang 현상파일 다운로드1
13571정성태3/1/20241598닷넷: 2223. C# - await 호출과 WPF의 Dispatcher Queue 동작 확인파일 다운로드1
13570정성태2/29/20241622닷넷: 2222. C# - WPF의 Dispatcher Queue 동작 확인파일 다운로드1
13569정성태2/28/20241537닷넷: 2221. C# - LoadContext, LoadFromContext 그리고 GAC파일 다운로드1
13568정성태2/27/20241601닷넷: 2220. C# - .NET Framework 프로세스의 LoaderOptimization 설정을 확인하는 방법파일 다운로드1
13567정성태2/27/20241613오류 유형: 898. .NET Framework 3.5 이하에서 mscoree.tlb 참조 시 System.BadImageFormatException파일 다운로드1
13566정성태2/27/20241626오류 유형: 897. Windows 7 SDK 설치 시 ".NET Development" 옵션이 비활성으로 선택이 안 되는 경우
13565정성태2/23/20241464닷넷: 2219. .NET CLR2 보안 모델에서의 개별 System.Security.Permissions 제어
13564정성태2/22/20241608Windows: 259. Hyper-V Generation 1 유형의 VM을 Generation 2 유형으로 바꾸는 방법
13563정성태2/21/20241625디버깅 기술: 196. windbg - async/await 비동기인 경우 메모리 덤프 분석의 어려움
13562정성태2/21/20241628오류 유형: 896. ASP.NET - .NET Framework 기본 예제에서 System.Web에 대한 System.IO.FileNotFoundException 예외 발생
13561정성태2/20/20241739닷넷: 2218. C# - (예를 들어, Socket) 비동기 I/O에 대한 await 호출 시 CancellationToken을 이용한 취소파일 다운로드1
13560정성태2/19/20241743디버깅 기술: 195. windbg 분석 사례 - Semaphore 잠금으로 인한 Hang 현상 (닷넷)
13559정성태2/19/20242620오류 유형: 895. ASP.NET - System.Security.SecurityException: 'Requested registry access is not allowed.'
13558정성태2/18/20241802닷넷: 2217. C# - 최댓값이 1인 SemaphoreSlim 보다 Mutex 또는 lock(obj)를 선택하는 것이 나은 이유
13557정성태2/18/20241569Windows: 258. Task Scheduler의 Author 속성 값을 변경하는 방법
13556정성태2/17/20241634Windows: 257. Windows - Symbolic (hard/soft) Link 및 Junction 차이점
13555정성태2/15/20241943닷넷: 2216. C# - SemaphoreSlim 사용 시 주의점
13554정성태2/15/20241704VS.NET IDE: 189. Visual Studio - 닷넷 소스코드 디컴파일 찾기가 안 될 때
13553정성태2/14/20241726닷넷: 2215. windbg - thin/fat lock 없이 동작하는 Monitor.Wait + Pulse
13552정성태2/13/20241680닷넷: 2214. windbg - Monitor.Enter의 thin lock과 fat lock
13551정성태2/12/20242010닷넷: 2213. ASP.NET/Core 웹 응용 프로그램 - 2차 스레드의 예외로 인한 비정상 종료
13550정성태2/11/20242101Windows: 256. C# - Server socket이 닫히면 Accept 시켰던 자식 소켓이 닫힐까요?
13549정성태2/3/20242473개발 환경 구성: 706. C# - 컨테이너에서 실행하기 위한 (소켓) 콘솔 프로젝트 구성
13548정성태2/1/20242300개발 환경 구성: 705. "Docker Desktop for Windows" - ASP.NET Core 응용 프로그램의 소켓 주소 바인딩(IPv4/IPv6 loopback, Any)
1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...