XLog 활용
Scouter 개발시 가장 중점을 두었던 것 중 하나가 "XLog 차트 안에서 모든 문제를 다 해결할 수 있도록 하자" 였습니다. 그래서 XLog 차트는 상당히 많은 기능을 가지고 있으며 그중 중요한 기능들에 대해 설명하도록 하겠습니다.
1. XLog의 조작 |
1) 키보드를 통한 간편 이동
- 실시간 XLog 차트에서 키보드를 사용하여 XLog 차트의 시간을 이동시킬수 있습니다. 이를 통해 가까운 과거 시점으로 빠르게 이동이 가능합니다. (큰 시간을 이동하여야 하면 Load History 메뉴를 사용하여야 함)
- 좌우 화살표 : 한번 누르는 경우 10초를 이동합니다.
- 상하 화살표 : 한번 누르는 경우 일정한 비율로 Y축의 스케일을 조절합니다.
2) Y축 항목 변경
- Y축 항목을 응답시간(ElapsedTime)이 아닌 다른 값으로 변경할 수 있습니다.
- 현재 서비스가 CPU bound인지 혹은 SQL이나 Api call bound인지를 한눈에 파악할때 주로 사용하게 됩니다.
- 혹은 SQL 호출 회수가 많은 서비스를 골라내거나, 메모리 사용량이 많은 서비스를 골라낼때 사용하기도 합니다.
3) Load History
- 과거 특정 시점의 XLog 차트를 로드하기 위해 사용합니다.
4) Summary
- 화면에 표현된 XLog 점들에 대한 통계를 바로 확인할 수 있는 기능입니다.
- 예를 들면 각 서비스에 대한 총 호출 건수 및 총 응답시간, 평균 응답시간, SQL 및 API 호출에 대한 평균 응답시간 등을 확인할 수 있습니다.
5) Filter
XLog를 통한 분석시 가장 많이 사용되는 기능중의 하나입니다.
원하는 조건의 XLog 점들만 보여지도록 하는 기능으로 필터를 적용하면 XLog 차트의 배경색이 에메랄드 색으로 변경됩니다.
- Service : Service명으로 Filter 적용
- IP : IP로 Filter 적용
- StartHMS: 요청 시작 시간으로 Filter 적용
- User-Agent: user agent 값으로 Filter 적용
- Login, desc, text1~5: agent plugin으로 적용한 사용자 정의 값에 대한 filter 적용
- 빠른 필터 : SQL이 포함된 요청, Api 호출이 포함된 요청, Error가 발생한 요청
각 값은 특정한 와일드 카드 형식으로 표현이 가능합니다.(당연히 정확한 값의 경우가 검색이 빠름) - 단어의 가장 앞, 가장 끝, 그리고 중간에 각 하나씩 최대 3개의 *를 사용할 수 있습니다. - 예를 들어 /user/100<GET>라는 요청은 /user*, *user*, 또는 *us*r* 등으로 검색이 가능합니다. |
6) Search
과거 시점의 XLog 목록을 특정 조건으로 조회하는 기능입니다.
(반면에 Load History는 과거 시점의 XLog 차트를 열어주는 기능임)
2. XLog 관련 주요 설정 |
XLog의 목적은 시스템에 발생하는 문제를 빠르게 인지하고 원인을 파악하여 해결하기 위함입니다.
이러한 목적을 잘 달성하기 위해서는 모니터링 대상 시스템을 잘 추적할 수 있도록 설정하는 것이 도움이 됩니다.
단 추가된 설정만큼 저장되는 데이터의 양이 많아지고 과도한 정보를 profiling하는 것은 오히려 분석에 방해가 되는 경우가 있으므로 시스템 상황에 맞게 적절히 조절할 것을 권장합니다.
1) method profilingScouter의 profiling은 주로 외부 연동 정보를 위주로 profiling을 하게 되므로 보다 상세한 profiling이 필요한 경우 보통 가장 먼저 설정하는 부분입니다. 모니터링 대상 코드를 분석 후 아래 옵션을 통해 추가적으로 profiling 할 method를 지정해 줍니다.
아래 옵션을 지정하면 profile에 지정한 method가 추가됩니다.
hook_method_patterns=comp.order.*Controller.*,comp.order.*Service.*,comp.order.*Repository.*
Patterns 설정 방법 |
Scouter 설정 중 이름이 patterns로 끝나는 경우는 대부분 아래와 같은 형식으로 사용할 수 있음 < 예시 > |
method profiling은 public method에만 작동합니다.
다른 접근 제한자에 대한 profiling을 허용하려면 다음 옵션을 사용합니다.
hook_method_access_public_enabled=true
hook_method_access_private_enabled=false
hook_method_access_protected_enabled=false
#Activating default Method hooking
hook_method_access_none_enabled=false
※ XLog 샘플링 옵션을 적용하여도 TPS나 서비스 호출건수등의 카운터 정보에는 영향을 주지 않습니다.
그리고 xlog discard 옵션을 사용하면 TPS등에 반영되지도 않습니다. 보통 health check 요청등을 무시하기 위해 사용됩니다.
xlog_discard_service_patterns=
#error 발생시에는 xlog에 기록한다.
xlog_discard_service_show_error=true
3. Scouter 서버의 데이터 저장 공간 설정 |
xlog와 profile은 서버 저장 공간 중 가장 많은 부분을 차지하는 데이터입니다. 디스크 용량이 한도를 넘어서게 되면 무조건 과거 데이터부터 삭제를 하게 되므로 한도 용량을 넘어서지 않도록 적절히 조절하여 설정하는 것이 중요합니다. 일반적으로 profile의 저장 기간을 가장 짧게 설정하고 성능 카운터의 정보를 가장 길게 유지합니다.
- 아래 설정들은 java agent 설정이 아닌 collector server의 설정입니다.
#데이터 저장소의 위치는 scouter server가 설치된 경로 하위의 database 디렉터리이다.
db_dir=./database
#디스크의 특정 용량을 초과하면 과거 데이터부터 삭제한다.
mgr_purge_disk_usage_pct=90
#프로파일 데이터를 유지하는 기간(일반적으로 가장 큰 사이즈의 데이터이다.)
mgr_purge_profile_keep_days=10
#XLog를 유지하는 기간
mgr_purge_xlog_keep_days=30
#성능 카운터 정보를 유지하는 기간
mgr_purge_counter_keep_days=70
※ db 디렉터리에 들어가면 각 날짜별 항목별 데이터의의 사이즈가 얼마나 되는지 확인할 수 있습니다.
출처 : http://gunsdevlog.blogspot.com/2018/05/scouter-apm-xlog-howto.html
'IT 이야기 > Scouter' 카테고리의 다른 글
Scouter Paper 설치 및 활용 (0) | 2019.12.13 |
---|---|
Scouter 사용자 정의 알람 (0) | 2019.12.13 |
Scouter Active Service와 XLog (0) | 2019.12.12 |
Scouter 기본 항목 모니터링(2/2) (0) | 2019.12.12 |
Scouter 기본 항목 모니터링(1/2) (0) | 2019.12.12 |
댓글