Important
최신 에이전트 버전이 출시되면 즉시 업데이트하는 것이 좋습니다. 최신 버전으로 업그레이드할 수 없는 경우, 에이전트를 90일 이내 버전으로 업데이트하세요. 에이전트에게 최신 정보를 제공하는 방법 에 대해 자세히 알아보세요.
에이전트 릴리스 및 지원 날짜에 대한 정보는 뉴렐릭 루비 에이전트 EOL 정책을 참조하세요.
v10.5.0
기능: Dalli 5.0 지원 추가 및 메타 프로토콜 계측 수정
이제 에이전트는 메타 프로토콜을 전적으로 사용하기 위해
Dalli::Protocol::Binary을(를) 제거한 Dalli 5.0+를 지원합니다. Dalli 3.2.0+의 경우,pipelined_get계측은 이제Dalli::Protocol::Binary대신Dalli::Protocol::Base(메서드가 정의된 곳)를 올바르게 타겟으로 지정하여, 메타 프로토콜을 사용할 때get_multi호출이 계측되지 않던 문제를 해결합니다. Dalli 5.0+의 경우, 에이전트는 Dalli의 단일 서버get_multi최적화에 의해 호출되는Dalli::Protocol::Meta#read_multi_req을(를) 추가로 계측합니다. PR#3541기능: active_record_use_table_name 설정 옵션 추가
새로운 설정 옵션인
active_record_use_table_name은(는) 메트릭, 스팬 및 트랜잭션 트레이스 세그먼트의 이름을 지정할 때 Active Record 모델의 클래스 이름 대신 테이블 이름을 사용합니다. 이는 단일 테이블 상속을 사용하는 애플리케이션에서 카디널리티를 줄이는 데 특히 도움이 될 수 있습니다. 기존 동작을 유지하기 위해 옵션은 기본적으로false(으)로 설정됩니다. PR#3540기능: 에이전트 로그에서 라이선스 키 부분 삭제
이전에는, 에이전트가 에이전트 로그에서 뉴렐릭 라이선스 키를 완전히 삭제했습니다. 이제 처음 10자는 표시되고 나머지는
*(으)로 대체됩니다. 이는 키의 비밀 부분을 노출하지 않고도 리전 관련 문제를 해결하기에 충분한 정보를 보존합니다. PR#3547버그 수정: Semantic Logger 계측 비호환성 수정
rails_semantic_logger이전에는
rails_semantic_logger을(를) 사용하는 동안 예외가ActionDispatch::DebugExceptions에 도달하면ArgumentError이(가) 발생했습니다. 수정되었다. 이를 제보해 주신 @jdelStrother 님께 감사드립니다! PR#3548
Important
최신 에이전트 버전이 출시되면 즉시 업데이트하는 것이 좋습니다. 최신 버전으로 업그레이드할 수 없는 경우, 에이전트를 90일 이내 버전으로 업데이트하세요. 에이전트에게 최신 정보를 제공하는 방법 에 대해 자세히 알아보세요.
에이전트 릴리스 및 지원 날짜에 대한 정보는 뉴렐릭 루비 에이전트 EOL 정책을 참조하세요.
v10.4.0
기능: 구조화된 로깅을 위한 Rails.event 계측 추가
이제 에이전트는 Rails.event를 구조화된 로그 이벤트로 지원합니다. 활성화되면
Rails.event.notify을(를) 통해 게시된 이벤트는 캡처되어 로그 이벤트로 뉴렐릭에 전달됩니다. 이벤트 페이로드, 태그, 컨텍스트, 타임스탬프 및 소스 위치는 로그 속성으로 자동으로 캡처됩니다.이 계측은 다음 옵션으로 구성할 수 있습니다:
instrumentation.rails_event_logger- Rails.event 계측이 활성화되는지 여부를 제어합니다. 기본적으로application_logging.enabled값을 사용합니다.instrumentation.rails_event_logger.event_names- 캡처할 특정 이벤트 이름의 어레이입니다. 비어 있는 경우(기본값), 모든 Rails.event 공지가 캡처됩니다. 이를 사용하여 이름별로 이벤트를 필터링합니다. 예:['user.signup', 'payment.processed'].
기능: Rails Active Job Continuations 계측 추가
이제 에이전트가 Rails Active Job Continuations를 계측하여 장기 실행 작업 내의 개별 단계 실행에 대한 가시성을 제공합니다. 단계 이름은 세그먼트 메트릭(예:
Ruby/ActiveJob/default/MyJob/step/process_records)에 포함되며 커서 위치, 재개 상태, 중단 상태와 같은 단계별 속성이 캡처됩니다. 새로운 설정 옵션인disable_active_job_step_names을(를) 통해 사용자는 필요한 경우 메트릭 기수를 줄이기 위해 메트릭 이름에서 단계 이름을 제외할 수 있습니다(기본값은false입니다). PR#3493기능: sidekiq.separate_transactions 추가 설정 옵션
새로운 설정 옵션인
sidekiq.separate_transactions을(를) 사용하면 웹 트랜잭션 중에 실행되는 Sidekiq 작업을 별도의 자체 트랜잭션에서 실행할 수 있습니다. 활성화하면 Sidekiq 작업 실행 시간이 웹 트랜잭션 메트릭에 포함되는 것을 방지하여 더 정확한 성능 데이터를 제공합니다. 이 기능은 역호환성을 유지하기 위해 선택 사항(기본값: false)입니다. 이는 활성 웹 트랜잭션 중에 실행되는 작업에만 영향을 미치며, 독립적으로 시작되거나 다른 백그라운드 작업 내에 중첩된 작업은 영향을 받지 않습니다. Issue#3364 PR#3514버그 수정: ReDOS 공격에 취약했을 수 있는 정규식 업데이트
이전에는 에이전트에 다항 시간 복잡도(ReDOS) 공격의 가능한 타겟으로 식별된 몇 가지 정규식이 있었습니다. 우려 사항을 해결하기 위해 해당 정규식이 업데이트되었습니다. PR#3520
Bugfix: HTTPX 세그먼트 생성 중 충돌을 방지합니다.
이전에는
start_external_request_segment에서 오류가 발생하여nil을(를) 반환하면, 에이전트는 누락된 세그먼트에 헤더를 추가하려고 시도할 때NoMethodError을(를) 트리거했습니다. 계측이 이러한 경우를 원활하게 처리할 수 있도록 가드 검사를 추가했습니다.보고서를 작성해 주신 @thebravoman 님께 박수를 보냅니다! 이슈#3509 PR#3510
버그 수정: Transaction#finish를 멱등하게 만들기
이전에는 Transaction#finish 메서드가 여러 번 호출되면 동일한 작업에 대해 둘 이상의 트랜잭션이 생성될 수 있었습니다. 이제 뮤텍스가 Transaction#finish에 대한 호출을 보호하여 finish 작업이 한 번만 실행되도록 합니다. PR#3513
버그 수정: Datastores.wrap API의 Log 기능에 대한 사용 중단 경고 (1회)
이전에는 Datastores.wrap에 대한 모든 호출에서 이 경고가 로그에 기록되었습니다. 이제 첫 번째 호출에만 로그가 기록됩니다. 또한, 두 번째 및 세 번째 콜백 인수의 사용 중단 상태를 명시하도록 문서가 업데이트되었습니다. 이슈#3516 PR#3519
Important
최신 에이전트 버전이 출시되면 즉시 업데이트하는 것이 좋습니다. 최신 버전으로 업그레이드할 수 없는 경우, 에이전트를 90일 이내 버전으로 업데이트하세요. 에이전트에게 최신 정보를 제공하는 방법 에 대해 자세히 알아보세요.
에이전트 릴리스 및 지원 날짜에 대한 정보는 뉴렐릭 루비 에이전트 EOL 정책을 참조하세요.
v10.3.0
기능: SQL 주석을 통해 데이터베이스 쿼리 이름 지정 추가
이제 SQL 주석을 사용하여 데이터베이스 쿼리에 명시적인 이름을 지정할 수 있습니다. 쿼리에는 추적 및 식별을 개선하기 위해 안정적인 이름을 지정하는
/* NewRelicQueryName: CustomName */주석이 포함될 수 있습니다. 이는 성능 회귀 또는 인시던트 중에 특정 데이터베이스 쿼리를 추적하는 데 특히 유용합니다. PR#3480기능: 의미론적 로거 측정 추가, 로그
에이전트는 이제
semantic_loggergem 버전 4.6.0+에 대한 Semantic 로거 로그 포워딩 및 장식을 지원합니다. 이전에 Semantic 로거의 내장 뉴렐릭 어펜더를 사용하셨다면, 중복 로그 전송을 방지하기 위해 한 가지 방법을 선택하시는 것이 좋습니다. 뉴렐릭의 Semantic 로거 측정, 리소스는instrumentation.semantic_logger을disabled로 설정하여 비활성화할 수 있습니다. PR#3467@jdelStrother 님께서 귀중한 피드백을 제공해 주셔서 이 측정, 계측을 구체화하는 데 도움이 되었습니다.
기능: 'ignored_middleware_classes' 설정을 새로 추가합니다.
새로운 설정 옵션인
ignored_middleware_classes사용하면 사용자가 측정, 로그에서 특정 미들웨어를 제외할 수 있습니다(예: 랙::코어스). 기본적으로 비어 있는 다시입니다. 이슈 번호 1814 PR 번호 3481기능: 새로운
NewRelic::Agent.add_transaction_log_attributesAPI 추가새 API 인
NewRelic::Agent.add_transaction_log_attributes) 사용하면 사용자가 현재 프로세서에 대한 프로세서 범위의 관습 속성 등록 이벤트를 추가할 수 있습니다. 이러한 속성은 현재 트랜잭션 범위 내에서 생성된 로그에만 적용됩니다. PR#3472버그 수정: ActionCable 브로드캐스트 메트릭의 카디널리티를 줄이는 구성 옵션을 제공합니다.
기본적으로 ActionCable 브로드캐스트 메서드 호출에 대한 메트릭에는 브로드캐스팅 값이 포함됩니다. 이 값은 매우 높은 카디널리티를 가질 수 있습니다. 이제
:simplify_action_cable_broadcast_metrics설정 옵션을 사용하면 지표 이름에서 방송 값을 제거할 수 있습니다. 이것은 다음과 같은 형태를 갖는 것을 생성합니다:Ruby/ActionCable/broadcast. 이 설정 옵션을 활성화하면 브로드캐스팅 값이 span 속성으로 추가됩니다. PR#3463버그 수정: FIPS/FedRAMP 규정 준수를 위한 더 이상 필요 없는 'digest/md5' 요구 사항을 제거했습니다.
에이전트 버전 7.1.0에서는 FIPS 규정 준수를 위해 MD5 사용이 SHA1으로 대체되었습니다 (PR). 하지만 기존의 'digest/md5' 요구 사항은 제거되지 않았습니다. FIPS/FedRAMP 사용자들을 지원하기 위해 해당 요구 사항을 제거했습니다. 이 문제를 알려주신 @ashleyboehs 님께 감사드립니다! 이슈 번호 3469 PR 번호 3470
버그 수정: 종료 지연을 방지하기 위해
rails test동안 에이전트가 시작되지 않도록 수정했습니다.이전에는 에이전트가
rails test명령을 실행할 때 약 3초의 종료 지연이 발생했습니다.Rails::Command::TestCommand상수는 Rails 테스트 실행 중에 에이전트가 시작되는 것을 방지하기 위해 기본autostart.denylisted_constants목록에 추가되었습니다. 이 문제를 알려주신 @varyform 님께 감사드립니다. PR#3478버그 수정: Falcon 웹 서버 사용 시 "경과된 작업 시간을 계산할 수 없습니다"라는 경고 메시지를 수정했습니다.
이제 Falcon 에서 실행될 때 상태를 추적하기 위해
Thread.current.object_id대신Fiber.current.object_id사용하여 동일한 스레드를 공유하는 동시 requests 으로 인한 충돌을 방지합니다. 또한 Falcon을 사용할 때 발생하는 "NameError: uninitialized constantAsync::HTTP::VERSION" 오류를 수정합니다. 이 문제를 알려주신 @97jaz님 과 @gsar 님께 감사드립니다. PR#3483버그 수정: harvest.rb 파일의 오타로 인해 발생하던 NoMethodError 오류를 수정했습니다.
lib/new_relic/agent/agent_helpers/harvest.rb의 오타로 인해NoMethodError: undefined method 'agent' for NewRelic:Module이 발생했습니다. 이 문제를 제보해 주신 @oakbow 님께 감사드립니다. PR#3484버그 수정: 더 이상 사용되지 않는 ObjectSpace._id2ref 사용을 제거했습니다.
이제 해당 도구는 더 이상 사용되지 않는
ObjectSpace._id2ref방법 대신 대체 접근 방식을 사용하므로 루비 4.0 이상에서 실행 시 사용 중단 경고가 사라집니다. PR#3490버그 수정: Logging 측정, 리소스의 NoMethoError 수정
이전에 Logging gem 측정, 계측이 로컬 로그를 데코레이션하려고 시도할 때 문자열이 아닌 객체를 만나면
NoMethodError오류가 발생했습니다. 이 문제는 이제 해결되었습니다. PR#3501
Important
최신 에이전트 버전이 출시되면 즉시 업데이트하는 것이 좋습니다. 최신 버전으로 업그레이드할 수 없는 경우, 에이전트를 90일 이내 버전으로 업데이트하세요. 에이전트에게 최신 정보를 제공하는 방법 에 대해 자세히 알아보세요.
에이전트 릴리스 및 지원 날짜에 대한 정보는 뉴렐릭 루비 에이전트 EOL 정책을 참조하세요.
v10.2.0
기능: OpenTelemetry 추적 지원을 위한 하이브리드 에이전트 도입
이제 OpenTelemetry Tracing API를 뉴렐릭 루비 에이전트의 새로운 하이브리드 에이전트 기능을 사용하여 뉴렐릭 텔레메트리로 변환할 수 있습니다. 이를 통해
newrelic_rpmgem은 OpenTelemetry SDK와 유사하게 동작할 수 있으며, OpenTelemetry API 호출을 수락하고 이를 친숙한 속성과 이름을 가진 뉴럴릭 트랜잭션 및 세그먼트로 변환합니다.다음 설정 옵션은 하이브리드 에이전트 기능과 관련됩니다:
설정 이름 기본값 행동 OpenTelemetry.활성화됨 false뉴렐릭을 통해 전송되는 모든 OpenTelemetry 신호를 비활성화하는 전역 설정 옵션입니다. OpenTelemetry.트레이스.enabled trueOpenTelemetry Spans에서 칩셋 트레이스 세그먼트 및 타임슬라이스 생성을 활성화합니다. OpenTelemetry.트레이스.include ''OpenTelemetry 트레이서의 쉼표로 구분된 목록(문자열 형식, 예:) "AppTracer1,OpenTelemetry:: 측정, 리소스::Bunny::측정, 리소스")는 트레이스 신호가 뉴렐릭으로 전송 됩니다. OpenTelemetry.트레이스.exclude ''OpenTelemetry 트레이서의 쉼표로 구분된 목록(문자열 형식, 예:) "AppTracer1,OpenTelemetry:: 측정, 리소스::Bunny::측정, 리소스"), 트레이스 신호가 뉴렐릭으로 전송되지 않습니다. 측정, 리소스와 충돌하는 알려진 모든 트레이서, 리소스는 기본적으로 제외됩니다. : 설정 옵션 error_collector.backtrace_truncate_location 추가
새로운 설정 옵션
error_collector.backtrace_truncate_location추가되었으며, 이를 통해 사용자는 프레임 수가error_collector.max_backtrace_frames초과할 때 백트레이스에서 어디를 잘라낼지 지정할 수 있습니다. 옵션은'top'(시작 부분에서 프레임을 제거),'middle'(시작과 끝은 유지하면서 중간 부분에서 프레임을 제거), 또는'end'(끝 부분에서 프레임을 제거)입니다. 기본값은'middle'입니다. PR#3424: 로깅 gem 측정 기능 추가, 로그아웃
이제 에이전트는 Logging gem 에서 생성된 로그를 기록합니다. PR#3420
기능: 설정 옵션을 추가합니다.utilization.Detect_in_parallel
새로운 설정 옵션
utilization.detect_in_parallel이 추가되었으며, 이는이 cloud 공급업체 정보를 감지할 때 스레드를 사용하여 시작 속도를 높일지 여부를 제어합니다.false로 설정하면 공급업체 감지가 스레드를 생성하지 않고 순차적으로 실행됩니다. 기본값은true입니다. PR#3439
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.1.0
Feature: Add support for forking processes in Parallel gem instrumentation
Parallel gem instrumentation has been added to allow more consistent monitoring in processes forked using the Parallel gem. PR#3405
Feature: Add support for Grape v3.1.0
Grape's release of v3.1.0 introduced changes that were incompatible with the agent's instrumentation, causing issues when collecting transaction names. The agent has been updated to properly extract class names for transaction naming in the updated Grape API structure. PR#3413
Bugfix: Create health check files in forked processes
The agent now properly initializes health check loops after forking, ensuring each process generates its own health check file. This fix also has the effect of correctly including
entity.guidvalues in the health check files. PR#3409 Issue#3408Bugfix: Fix
sidekiq.ignore_retry_errorsThe configuration option
sidekiq.ignore_retry_errors: truewas continuing to report retry errors. The agent now correctly ignores retry errors and only reports when jobs permanently fail. PR#3399
Important
Major Version Update: This version of the Ruby agent is a SemVer MAJOR update and contains breaking changes. MAJOR versions may drop support for language runtimes that have reached End-of-Life according to the maintainer. Additionally, MAJOR versions may drop support for and remove certain instrumentation. For more details on these changes please see the migration guide here.
Important
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Ruby agent EOL policy for information about agent releases and support dates.
v10.0.0
Breaking Change: Remove support for Ruby 2.4 and 2.5
Support for Ruby versions 2.4 and 2.5 has been removed. The new minimum required Ruby version is now 2.6. PR#3314
Breaking Change: Removal of Cross Application Tracing (CAT)
Previously, Cross Application Tracing (CAT) was deprecated in favor of Distributed Tracing. CAT functionality has now been removed. The configuration option
cross_application_tracer.enabledhas been removed. Public API methodsNewRelic::Agent::External.process_request_metadata,NewRelic::Agent::External.get_response_metadata,NewRelic::Agent::Transaction::ExternalRequestSegment#process_response_metadata,NewRelic::Agent::Transaction::ExternalRequestSegment#get_request_metadata, andNewRelic::Agent::Transaction::ExternalRequestSegment#read_response_headershave also been removed. PR#3333Breaking Change: Rename ActiveJob metrics and segments
ActiveJob metrics have been updated to include the job's class name for more specific reporting. This is a breaking change and may require updating custom dashboards or alerts. PR#3370 PR#3320
- Old format:
Ruby/ActiveJob/<QueueName>/<Method> - New format:
Ruby/ActiveJob/<QueueName>/<ClassName>/<Method>
In addition, segments created for Active Job enqueuing actions now include the job class.
- Old format:
ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName> - New format:
ActiveJob/<QueueAdapter>/Queue/<Event>/Named/<QueueName>/<ClassName>
- Old format:
Breaking Change: Rename
bin/newreliccommand tobin/newrelic_rpmThe executable file for the agent's CLI has been renamed from
bin/newrelictobin/newrelic_rpm. This change resolves a name collision with the standalone New Relic CLI tool. PR#3323Breaking Change: Remove the
newrelic deploymentsCLI commandThe deprecated
newrelic deploymentsCLI command has been removed. To track changes and deployments in New Relic, please see our guide to Change Tracking for a list of available options. PR#3299Breaking Change: Remove the NewRelic::Agent::SqlSampler#notice_sql method
Users should call
NewRelic::Agent::Datastores.notice_sqlinstead. PR#3338Breaking Change: Remove unused arguments from various NewRelic::Agent::Datastores APIs
The following APIs from the
NewRelic::Agent::Datastoresclass have had method arguments removed:NewRelic::Agent::Datastores.notice_sql, previously had three positional arguments,query,scoped_metricandelapsed. Now, it only hasquery.NewRelic::Agent::Datastores.notice_statement, previously had two positional argumentsqueryandelapsed. Now it only hasquery.NewRelic::Agent::Datastores.wraprequires a proc. Previously the proc received three arguments: the result of the yield, the most specific scoped metric name, and the elapsed time of the call. Now, it only receives one: the result of the yield.
The values of the removed arguments are derived from the current segment at the time of the call. PR#3347
Breaking Change: Remove experimental feature Configurable Security Policies (CSP)
The experimental feature, Configurable Security Policies (CSP), is no longer supported and has been removed. PR#3292
Breaking Change: Remove support for Puma versions < 3.9.0
The minimum version of Puma now supported is 3.9.0 or higher. PR#3326
Breaking Change: Improve configuration validation and coercion
The internals used to coerce and validate the values provided for agent configuration are now more performant and more accurate.
- Warning messages will now be logged to the newrelic_agent.log file when nil is provided as a config value for a setting that does not support it.
- Integer values are permitted for Float configuration types
- Float values are permitted for Integer configuration types
- Fatal interruptions are prevented when a default value can be found to replace an invalid input value PR#3341
Breaking Change: Replace 'default' option with 'adaptive' for distributed tracing remote parent samplers
Previously, the default option for
distributed_tracing.sampler.remote_parent_sampledanddistributed_tracing.sampler.remote_parent_not_sampledwasdefault, which used the pre-existing adaptive sampler. Thedefaultoption has been renamed toadaptive. PR#3363Feature: Add
loggeras a dependencyThe
loggergem is now listed as a dependency of the agent to ensure continued logging functionality and support for Ruby 4.0.0 and newer versions. PR#3293Feature: Add Active Support notification allowlist configuration option
A new configuration option,
instrumentation.active_support_notifications.active_support_events, allows users to define an allowlist of Active Support notifications event names for the agent to subscribe to. By default, the agent subscribes to all Active Support: Caching and Active Support: Messages events. PR#3327Feature: Use Ruby's built-in Gzip compression
The agent now uses the built-in
Zlib.gzipmethod from the Ruby standard library for compression, replacing the previous custom implementation. PR#3332Feature: Add argument validation for the
NewRelic::Agent#record_custom_eventAPIThe
NewRelic::Agent#record_custom_eventAPI now raises anArgumentErrorwhen an invalidevent_typeis provided. A valid event type must consist only of alphanumeric characters, underscores (_), colons (:), or spaces (). PR#3319Feature: Add root sampling configuration options
You can now configure the sampling behavior for traces that originate within the current service using
distributed_tracing.sampler.root. PR#3330There are four modes available:
Mode Description adaptiveUses the existing adaptive sampler algorithm always_offMarks 0% of root traces as sampled always_onMarks 100% of root traces as sampled trace_id_ratio_basedSamples traces based on a ratio set in distributed_tracing.sampler.root.trace_id_ratio_based.ratio. The ratio must be float between 0.0 and 1.0Feature: Add Trace ID Ratio Based sampling options
The agent can now sample traces using the OpenTelemetry Trace ID Ratio Based sampler algorithm. PR#3330 This samples traces based on a probability between 0.0 and 1.0 based on the trace ID.
To use this option, you must first set your distributed tracing sampler configuration to
trace_id_ratio_basedand then set the correspondingdistributed_tracing.sampler.*.trace_id_ratio_based.ratiosampler to a Float between 0.0 and 1.0.For example:
distributed_tracing.sampler.remote_parent_sampled: 'trace_id_ratio_based'distributed_tracing.sampler.remote_parent_sampled.trace_id_ratio_based.ratio': 0.5This configuration would sample approximately 50% of your traces for all traces where the remote parent is sampled.
This option is available for:
distributed_tracing.sampler.rootdistributed_tracing.sampler.remote_parent_sampleddistributed_tracing.sampler.remote_parent_not_sampled
Feature: Add Entity GUID to Agent Control health check files
When the agent is started within an Agent Control environment, a health check file is created at the configured file location for every agent process. This file now includes the guid of the entity related to the agent when available. PR#3371
Bugfix: Resolve a
NoMethodErrorin GCP utilization detection.The GCP metadata discovery logic will now gracefully handle
nilor unexpected values, preventing service initialization crashes. PR#3388