jennifer-metrics
콘솔의 일일 시스템 성능 통계(대상별 상세)에서 JENNIFER 도메인 인스턴스의 지표 시계열을 긴 형식으로 조회합니다. 한 행이 버킷 하나, 인스턴스 하나, 지표 하나입니다. 이상 감지에 사용하세요. 하루치에 stats avg/stddev로 지표·인스턴스별 기준선을 구해 최근 버킷과 비교(z-score)하거나, 같은 시각의 인스턴스끼리 비교합니다. 그다음 jennifer-problems, jennifer-app-summary, jennifer-errors로 범위를 좁힙니다.
- 먼저 jennifer-instances로 domain_id와, 일부만 필요하면 instance_ids를 확인하세요.
- interval=5m은 5분 버킷, interval=1h는 1시간 버킷입니다. 건수(service_count, *count)는 버킷 합계이고, max*는 최댓값, 비율·시간·자원은 버킷 평균입니다.
to(와 현재)까지 끝난 버킷만 반환합니다. 콘솔은 인스턴스가 데이터를 보내지 않은 버킷(예: 재시작한 파드의 새 ID가 생기기 전)을 0으로 저장하므로, 정확히 0이 이어지면 유휴보다 부재일 가능성이 큽니다.- error_count는 jennifer-errors가 유형별로 나누는 에러의 건수로, 에이전트 중지와 재시작도 포함합니다.
- 기간은 최대 31일이며, 서버 기준 하루마다 콘솔을 한 번 호출합니다.
지표 (이름, 단위):
- 트랜잭션: service_count (건수), service_rate (TPS), service_time (평균 응답 ms), service_err_count, service_slow_count, service_cpu, service_sql_time, service_externalcall_time, service_fetch_time, service_method_time, max_tps, active_service, max_active_service, bad_response_active_service.
- SQL과 외부 호출: sql_count, sql_time, externalcall_count, externalcall_time, fetch_count, fetch_time, average_db_pool_active_count, average_db_pool_idle_count, average_db_pool_configured_count, max_db_pool_active_count.
- 시스템과 런타임: sys_cpu (%), max_sys_cpu, proc_cpu (%), max_proc_cpu, sys_mem, sys_mem_rate (%), max_sys_mem_rate, proc_mem, heap_used (MB), heap_committed, heap_usage (%), nonheap_used, gc_time, gc_count, gc_time_usage, finalize_pending, thread_current, thread_daemon, thread_started, collection_count, file_count, socket_count, alive_agent.
- 사용자와 이벤트: active_user, concurrent_user, visit_hour, visit_day, user_req_interval, event_count, event_normal_count, event_warning_count, event_fatal_count, error_count, frontend_measure_count, average_frontend_time, average_frontend_network_time.
jennifer-metrics [profile=값] domain_id=값 [instance_ids=값] [metrics=값] [interval=값] [duration=값] [from=값] [to=값] [limit=값]
- profile=값
- 선택. JENNIFER 콘솔 접속 프로파일(유형 jennifer-apm-console) 이름입니다. 지정하지 않으면 권한이 있는 콘솔 프로파일을 모두 사용합니다. domain_id는 콘솔마다 다르므로 domain_id를 쓸 때는 프로파일이 하나여야 합니다. 권한이 있는 프로파일이 여럿이면 지정하세요.
- domain_id=값
- 필수. 예: 1000. jennifer-instances로 확인합니다.
- instance_ids=값
- 선택. 예: 75553,75554. jennifer-instances에서 얻은 인스턴스 ID(OID)를 쉼표로 구분합니다. 생략하면 기간 중 데이터를 보낸 모든 인스턴스를 조회합니다.
- metrics=값
- 선택. 예: service_time,service_rate,sys_cpu. 설명에 있는 지표 이름을 쉼표로 구분합니다. 기본값: service_rate,service_time,service_count,service_err_count,active_service,sys_cpu,proc_cpu,heap_usage,gc_time.
- interval=값
- 선택. 5m(기본값) 또는 1h. 버킷 크기로, 5분 평균 또는 1시간 집계입니다.
- duration=값
- 선택. 예: 10m(최근 10분). 현재 시각까지의 최근 기간으로 s(초), m(분), h(시), d(일) 단위입니다. 기간을 지정하지 않으면 최근 1시간입니다. 최대 31일입니다.
- from=값
- 선택. 기간의 시작, yyyyMMddHHmmss. 뒷자리를 쓰지 않으면 0으로 채웁니다. duration보다 우선합니다.
- to=값
- 선택. 기간의 끝, yyyyMMddHHmmss. 뒷자리를 쓰지 않으면 0으로 채웁니다. 생략하면 현재 시각입니다.
- limit=값
- 선택. 예: 20000. 최대 행 수로 기본값은 100000입니다. 한 행은 인스턴스 하나의 지표 하나의 버킷 하나이므로, 값을 키우기보다 metrics나 instance_ids를 줄이세요.
출력 필드
| 필드 | 타입 | 이름 | 설명 |
|---|---|---|---|
| _time | 날짜 | 시각 | 예: 2026-10-27 10:05:00. 버킷(5분 또는 1시간)의 시작 시각입니다. |
| profile | 문자열 | 접속 프로파일 | 예: jennifer-prod |
| domain_id | 32비트 정수 | 도메인 ID | 예: 1000 |
| instance_id | 64비트 정수 | 인스턴스 ID | 예: 75553 |
| instance_name | 문자열 | 인스턴스 이름 | 예: siem-mon-console-1. 시간이 지나면 고유하지 않으므로 instance_id로도 묶으세요. |
| metric | 문자열 | 지표 | 예: service_time |
| value | 실수 | 값 | 예: 132.5. 버킷의 지표 값으로, 단위는 설명을 참고하세요. |
사용 예
최근 6시간 인스턴스별 응답시간:
jennifer-metrics domain_id=1000 duration=6h metrics=service_time | timechart span=5m avg(value) by instance_name
최근 30분이 하루 기준선에서 벗어난 지표 (z-score):
jennifer-metrics domain_id=1000 duration=1d metrics=service_time,service_rate,service_err_count,sys_cpu,heap_usage,active_service | eval recent = if(_time >= dateadd(now(), "min", -30), value, null) | stats avg(value) as base_mean, stddev(value) as base_sd, avg(recent) as recent_avg by metric, instance_id, instance_name | eval z = if(base_sd > 0, round((recent_avg - base_mean) / base_sd, 2), 0) | search abs(z) >= 3 | eval abs_z = abs(z) | sort limit=20 -abs_z
인스턴스 자신의 기준선보다 크게 높은 버킷 (언제 시작됐는지):
jennifer-metrics domain_id=1000 duration=1d metrics=service_time | join metric, instance_id [ jennifer-metrics domain_id=1000 duration=1d metrics=service_time | stats avg(value) as base_mean, stddev(value) as base_sd by metric, instance_id ] | eval z = if(base_sd > 0, round((value - base_mean) / base_sd, 2), 0) | search z >= 3 | sort limit=50 -z | fields _time, instance_name, metric, value, base_mean, z
최근 1시간 인스턴스 비교 (튀는 인스턴스):
jennifer-metrics domain_id=1000 duration=1h metrics=service_time,sys_cpu | stats avg(value) as avg_value by metric, instance_id, instance_name | sort metric, -avg_value
일주일 동안의 1시간 단위 합계: