• English日本語한국어
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하십시오.

문제 신고

Ruby 백그라운드 프로세스 모니터링

Ruby 에이전트는 몇 가지 일반적인 백그라운드 작업 프레임워크를 자동으로 계측합니다. 백그라운드 작업을 추적하도록 사용자 지정할 수도 있습니다. 백그라운드 작업의 데이터는 APM의 트랜잭션 페이지웹이 아닌 트랜잭션으로 나타납니다.

지원되는 프레임워크

다음 백그라운드 작업 프레임워크는 최신 버전의 Ruby 에이전트에서 기본적으로 지원됩니다.

중요

JRuby 사용자는 CPU 메트릭과 관련된 문제를 볼 수 있습니다.

이러한 프레임워크를 사용하는 경우 일반적으로 백그라운드 작업을 모니터링하는 데 추가 구성이 필요하지 않습니다.

사용자 지정 백그라운드 작업 모니터링

APM 트랜잭션 페이지 에 웹이 아닌 트랜잭션으로 나타나도록 사용자 정의 백그라운드 작업을 계측할 수 있습니다. 지원되지 않는 프레임워크를 사용하는 동안 웹이 아닌 트랜잭션 을 모니터링하려면 사용자 정의 계측을 추가해야 합니다.

예를 들어 백그라운드 작업은 SalesOrganization#find_new_leads 이라는 작업을 주기적으로 실행합니다.

  1. ControllerInstrumentation 모듈을 추가합니다.

  2. 메서드 정의 아래add_transaction_tracer 지시문 사용

  3. 에이전트에게 이 추적이 웹이 아닌 트랜잭션 임을 알리려면 :category => :task 을 추가합니다.

    require 'newrelic_rpm'
    class SalesOrganization
    include
    ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
    def find_new_leads
    ...
    end
    add_transaction_tracer :find_new_leads, :category => :task
    end

    문자열을 :category 에 전달할 수 있지만 문자열이 OtherTransaction/ 로 시작하는 경우에만 APM 트랜잭션 페이지에 값이 나타납니다.

사용자 정의 백그라운드 방법 모니터링

Ruby 에이전트 API를 사용하여 웹 이외의 트랜잭션 을 추적하는 특정 방법을 지정할 수 있습니다. 이것은 느리게 실행되는 작업에 대한 추적을 수집하고 캡처된 오류를 트랜잭션에 연결합니다.

클래스 메서드를 계측하려면 singleton 클래스를 사용합니다.

예를 들어 백그라운드 작업은 SalesOrganization#find_new_leads 이라는 작업을 주기적으로 실행합니다.

  1. 메서드 정의 아래ControllerInstrumentation 모듈을 추가합니다.

  2. add_transaction_tracer 지시문 사용

  3. 에이전트에게 이 추적이 웹이 아닌 트랜잭션 임을 알리려면 :category => :task 을 추가합니다.

    require 'newrelic_rpm'
    class SalesOrganization
    def self.find_new_leads
    ...
    end
    class << self
    include
    ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
    add_transaction_tracer :find_new_leads, :category => :task
    end
    end

    자세한 내용은 Ruby 사용자 지정 측정항목 을 참조하십시오.

단기 프로세스 모니터링

에이전트가 백엔드 서버에 연결하기 전에 프로세스가 실행되고 있지 않은지 확인하십시오. 이렇게 하려면 기본 비동기 동작이 아닌 Ruby 에이전트가 New Relic에 동기적으로 연결되도록 합니다.

먼저 Gemfile에서 newrelic_rpm gem 설치 끝에 require: false 을 추가합니다.

gem 'newrelic_rpm', require: false

그런 다음 manual_start 을 호출하고 :sync_startup => true 옵션을 전달합니다.

require 'new_relic/agent'
NewRelic::Agent.manual_start(:sync_startup => true)

참고: 대부분의 구성 옵션은 수동 시작으로 전달할 수 있습니다.

require 'new_relic/agent' 를 사용하려면 에이전트의 코드가 필요하며 수동으로 시작할 때까지 에이전트가 실행되지 않도록 합니다.

프로세스가 에이전트 수집 주기 보다 짧은 경우 대기 중인 모든 데이터가 전송되도록 ::NewRelic::Agent.shutdown 을 사용하여 에이전트를 수동으로 종료해야 합니다.

백그라운드 프로세스에 대해 newrelic.yml 구성

newrelic.yml 구성은 백그라운드 애플리케이션의 컨텍스트에 따라 다릅니다.

대체 애플리케이션 이름으로 보고

기존 New Relic 웹 응용 프로그램의 컨텍스트에서 실행되는 작업을 APM UI의 다른 응용 프로그램 이름 으로 표시할 수 있습니다.

  1. 작업자 코드에 newrelic_rpm 이(가) 필요 하기 전에 시작하세요.

  2. NEW_RELIC_APP_NAME 환경 변수를 백그라운드 작업자 프로세스를 시작할 때 백그라운드 작업에 사용할 애플리케이션 이름으로 설정합니다. 이는 newrelic.ymlapp_name 설정을 재정의합니다.

    bash
    $
    NEW_RELIC_APP_NAME="My Background Jobs"
    $
    ./bin/my_background_worker.rb

에이전트 시작 확인

에이전트가 블랙리스트에 있는 실행 파일 이름, 레이크 작업 이름 또는 상수를 감지하지 않는 한 대부분의 경우 Ruby 에이전트는 require 'newrelic_rpm' 하자마자 자동으로 시작됩니다. 이렇게 하면 일반적인 레이크 작업 및 대화형 콘솔 세션 중에 시작되지 않습니다.

자세한 내용은 에이전트 시작 제어 에 대한 설명서를 참조하십시오.

스크립트 모니터링

에이전트 시작 지침 은 데몬에서 백그라운드 작업을 실행할 때 적용됩니다. 스크립트가 단일 백그라운드 작업을 실행하고 종료하는 경우 스크립트가 완료되면 ::NewRelic::Agent.shutdown 를 사용하여 에이전트를 수동으로 종료합니다. 이렇게 하면 New Relic 수집기가 데이터를 수신할 수 있습니다. 예를 들어:

require 'newrelic_rpm'
class SalesOrganization
include
::NewRelic::Agent::Instrumentation::ControllerInstrumentation
def find_new_leads
...
end
add_transaction_tracer :find_new_leads, :category => :task
end
SalesOrganization.new.find_new_leads
::NewRelic::Agent.shutdown
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.