뉴렐릭 Ruby 에이전트는 Puma 마스터 프로세스에서 Puma의 클러스터 전체 서버 통계를 샘플링하고 이를 Ruby/Puma/* 타임슬라이스 메트릭으로 보고할 수 있습니다.
이 계측은 기본적으로 비활성화되어 있습니다.
최소 요구 사항들
요구 사항 | 세부 |
|---|---|
Ruby 에이전트 버전 | 10.7.0 이상 |
Puma 버전 | 6.6.0 이상 |
Puma 모드 | 단일 모드 또는
이(가) 활성화된 클러스터 모드. |
계측 활성화
Puma 계측을 활성화하려면 newrelic.yml에서 disable_puma_instrumentation 을(를) false (으)로 설정합니다:
disable_puma_instrumentation: false에이전트는 Puma 마스터 프로세스에서 통계를 샘플링하므로, 에이전트가 마스터에 로드된 경우에만 메트릭을 수집합니다:
단일 모드 (워커 없음): 메트릭이 항상 수집됩니다.
클러스터 모드 (하나 이상의 워커): 애플리케이션이 사전 로드되어 에이전트가 워커가 아닌 마스터에 로드될 때만 메트릭이 수집됩니다.
preload_app!을(를)puma.rb에 추가합니다:workers 2preload_app!중요
Puma v6.x 에서는
preload_app!을(를) 명시적으로 설정해야 합니다. Puma v6.x 은(는) 구성 블록에서preload_app기본값을 적용하지 않으므로,workers이(가) 설정되었지만 명시적인preload_app!이(가) 없는 클러스터링된 앱은 워커에 에이전트를 로드하며 Puma 메트릭이 수집되지 않습니다. 이러한 경우 에이전트는 경고를 로그에 기록합니다.
샘플 속도 조정
기본적으로 에이전트는 60초마다 Puma 통계를 샘플링합니다. newrelic.yml의 puma.sample_rate 구성으로 이를 변경합니다:
puma.sample_rate: 30캡처 항목
모든 메트릭은 Ruby/Puma/ 네임스페이스 아래에 기록됩니다. 워커별 값은 클러스터 전체에서 합산됩니다.
미터법 | 설명 |
|---|---|
| 사용 가능한 스레드를 기다리는 requests 수. |
| 현재 스레드 풀에 생성된 워커 스레드 수. |
| 여유 요청 용량: 유휴 스레드와 아직 생성되지 않았지만 최대
까지 허용되는 스레드를 더한 값입니다. |
| 구성된 최대 스레드 수. |
| 워커가 시작된 이후 처리된 누적 requests 수. |
| Puma 워커 수. 클러스터 모드에서만 보고됩니다. |
쿼리 예시
Metric 유형을 사용하여 NRQL 로 이러한 메트릭을 쿼리합니다. YOUR_APP_NAME 을 애플리케이션 이름으로 교체합니다.
모든 Puma 메트릭을 한 번에 보려면:
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName LIKE 'Ruby/Puma/%'FACET metricTimesliceName TIMESERIES LIMIT MAX SINCE 1 hour ago단일 메트릭을 보려면 이름으로 필터링하세요:
FROM Metric SELECT average(newrelic.timeslice.value)WHERE appName = 'YOUR_APP_NAME' AND metricTimesliceName = 'Ruby/Puma/requests_count'TIMESERIES LIMIT MAX SINCE 1 hour ago작동 원리
활성화되면 에이전트는 이러한 메트릭을 전달하기 위해 Puma 마스터 프로세스에서 보고 스레드를 시작합니다. 이는 Puma 워커의 연결과 함께 마스터에서 추가 에이전트 연결을 실행합니다.
계측은 NewRelic::Agent.record_metric을(를) 통해 정수 게이지 및 카운터만 기록합니다. 어떠한 요청, 쿼리 또는 사용자 데이터도 캡처하지 않습니다.