From 0bba9347605434aa1701ac66503f567d6b4e9a0f Mon Sep 17 00:00:00 2001 From: Tanna McClure Date: Mon, 1 Jul 2024 13:04:51 -0500 Subject: [PATCH 1/6] add new attributes to bunny instrumentation --- .../agent/instrumentation/bunny/instrumentation.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb b/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb index 7467ef3aef..4866e1ae1e 100644 --- a/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +++ b/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb @@ -48,6 +48,11 @@ def publish_with_tracing(payload, opts = {}) correlation_id: opts[:correlation_id], exchange_type: type ) + if segment + segment.add_agent_attribute('server.address', channel&.connection&.hostname) + segment.add_agent_attribute('messaging.destination.name', destination) + segment.add_agent_attribute('messaging.rabbitmq.destination.routing_key', opts[:routing_key]) + end rescue => e NewRelic::Agent.logger.error('Error starting message broker segment in Bunny::Exchange#publish', e) yield @@ -94,6 +99,14 @@ def pop_with_tracing queue_name: name, start_time: t0 ) + if segment + segment.add_agent_attribute('server.address', channel&.connection&.hostname) + segment.add_agent_attribute('server.port', channel&.connection&.port) + segment.add_agent_attribute('messaging.destination.name', name) + segment.add_agent_attribute('messaging.destination_publish.name', exch_name) + segment.add_agent_attribute('message.queueName', name) + segment.add_agent_attribute('messaging.rabbitmq.destination.routing_key', delivery_info&.routing_key) + end rescue => e NewRelic::Agent.logger.error('Error starting message broker segment in Bunny::Queue#pop', e) else From dc565ebc056127fcb238569335da09c447213d00 Mon Sep 17 00:00:00 2001 From: Tanna McClure Date: Tue, 2 Jul 2024 15:47:59 -0500 Subject: [PATCH 2/6] add tests for attributes --- .../instrumentation/bunny/instrumentation.rb | 5 ++- test/multiverse/suites/bunny/bunny_test.rb | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb b/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb index 4866e1ae1e..84a826f7d3 100644 --- a/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +++ b/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb @@ -50,7 +50,8 @@ def publish_with_tracing(payload, opts = {}) ) if segment segment.add_agent_attribute('server.address', channel&.connection&.hostname) - segment.add_agent_attribute('messaging.destination.name', destination) + segment.add_agent_attribute('server.port', channel&.connection&.port) + segment.add_agent_attribute('messaging.destination.name', destination) # for produce, this is exchange name segment.add_agent_attribute('messaging.rabbitmq.destination.routing_key', opts[:routing_key]) end rescue => e @@ -102,7 +103,7 @@ def pop_with_tracing if segment segment.add_agent_attribute('server.address', channel&.connection&.hostname) segment.add_agent_attribute('server.port', channel&.connection&.port) - segment.add_agent_attribute('messaging.destination.name', name) + segment.add_agent_attribute('messaging.destination.name', name) # for consume, this is queue name segment.add_agent_attribute('messaging.destination_publish.name', exch_name) segment.add_agent_attribute('message.queueName', name) segment.add_agent_attribute('messaging.rabbitmq.destination.routing_key', delivery_info&.routing_key) diff --git a/test/multiverse/suites/bunny/bunny_test.rb b/test/multiverse/suites/bunny/bunny_test.rb index 86f5bb77d4..89532f680b 100644 --- a/test/multiverse/suites/bunny/bunny_test.rb +++ b/test/multiverse/suites/bunny/bunny_test.rb @@ -15,6 +15,9 @@ class BunnyTest < Minitest::Test end def teardown + harvest_span_events! + mocha_teardown + NewRelic::Agent.instance.stats_engine.clear_stats @conn.close end @@ -333,6 +336,44 @@ def test_pop_returning_no_message_doesnt_error end end + def test_pop_adds_attributes_to_span + with_queue do |queue| + queue.publish('test_msg', routing_key: queue.name) + in_transaction('test_txn') do |txn| + txn.stubs(:sampled?).returns(true) + + queue.pop + end + sleep 0.5 + spans = harvest_span_events! + + assert_equal 'rabbitmq', spans[1][0][2]['server.address'] + assert_equal 5672, spans[1][0][2]['server.port'] + assert_equal 'Default', spans[1][0][2]['messaging.destination_publish.name'] + assert_equal queue.name, spans[1][0][2]['messaging.destination.name'] + assert_equal queue.name, spans[1][0][2]['messaging.rabbitmq.destination.routing_key'] + assert_equal queue.name, spans[1][0][2]['message.queueName'] + end + end + + def test_waluigi_publish_adds_attributes_to_span + NewRelic::Agent.stubs(:logger).returns(NewRelic::Agent::MemoryLogger.new) + + with_queue do |queue| + in_transaction('test_txn') do |txn| + txn.stubs(:sampled?).returns(true) + queue.publish('test_msg', routing_key: queue.name) + end + sleep 0.5 + spans = harvest_span_events! + + assert_equal 'rabbitmq', spans[1][0][2]['server.address'] + assert_equal 5672, spans[1][0][2]['server.port'] + assert_equal 'Default', spans[1][0][2]['messaging.destination.name'] + assert_equal queue.name, spans[1][0][2]['messaging.rabbitmq.destination.routing_key'] + end + end + def test_pop_returning_a_good_message_send_to_an_exchange_we_havent_accessed_doesnt_error NewRelic::Agent.stubs(:logger).returns(NewRelic::Agent::MemoryLogger.new) From 77f1af7a02d66216281be4b7d7b274371527e43b Mon Sep 17 00:00:00 2001 From: Tanna McClure Date: Tue, 2 Jul 2024 15:49:44 -0500 Subject: [PATCH 3/6] rename test --- test/multiverse/suites/bunny/bunny_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/multiverse/suites/bunny/bunny_test.rb b/test/multiverse/suites/bunny/bunny_test.rb index 89532f680b..20783394f5 100644 --- a/test/multiverse/suites/bunny/bunny_test.rb +++ b/test/multiverse/suites/bunny/bunny_test.rb @@ -356,7 +356,7 @@ def test_pop_adds_attributes_to_span end end - def test_waluigi_publish_adds_attributes_to_span + def test_publish_adds_attributes_to_span NewRelic::Agent.stubs(:logger).returns(NewRelic::Agent::MemoryLogger.new) with_queue do |queue| From 373aeaaa7e07f754989d0461469359300f34fd33 Mon Sep 17 00:00:00 2001 From: Tanna McClure Date: Tue, 2 Jul 2024 15:50:41 -0500 Subject: [PATCH 4/6] remove unneeded logger stubbing --- test/multiverse/suites/bunny/bunny_test.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/multiverse/suites/bunny/bunny_test.rb b/test/multiverse/suites/bunny/bunny_test.rb index 20783394f5..a02157095c 100644 --- a/test/multiverse/suites/bunny/bunny_test.rb +++ b/test/multiverse/suites/bunny/bunny_test.rb @@ -357,8 +357,6 @@ def test_pop_adds_attributes_to_span end def test_publish_adds_attributes_to_span - NewRelic::Agent.stubs(:logger).returns(NewRelic::Agent::MemoryLogger.new) - with_queue do |queue| in_transaction('test_txn') do |txn| txn.stubs(:sampled?).returns(true) From 7d779876af509c4c59436a5e49057d175964aac7 Mon Sep 17 00:00:00 2001 From: Tanna McClure Date: Wed, 3 Jul 2024 12:41:55 -0500 Subject: [PATCH 5/6] fix for bunny tests in CI --- test/multiverse/suites/bunny/bunny_test.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/multiverse/suites/bunny/bunny_test.rb b/test/multiverse/suites/bunny/bunny_test.rb index a02157095c..70b419da47 100644 --- a/test/multiverse/suites/bunny/bunny_test.rb +++ b/test/multiverse/suites/bunny/bunny_test.rb @@ -347,7 +347,7 @@ def test_pop_adds_attributes_to_span sleep 0.5 spans = harvest_span_events! - assert_equal 'rabbitmq', spans[1][0][2]['server.address'] + assert_equal @conn.hostname, spans[1][0][2]['server.address'] assert_equal 5672, spans[1][0][2]['server.port'] assert_equal 'Default', spans[1][0][2]['messaging.destination_publish.name'] assert_equal queue.name, spans[1][0][2]['messaging.destination.name'] @@ -365,7 +365,7 @@ def test_publish_adds_attributes_to_span sleep 0.5 spans = harvest_span_events! - assert_equal 'rabbitmq', spans[1][0][2]['server.address'] + assert_equal @conn.hostname, spans[1][0][2]['server.address'] assert_equal 5672, spans[1][0][2]['server.port'] assert_equal 'Default', spans[1][0][2]['messaging.destination.name'] assert_equal queue.name, spans[1][0][2]['messaging.rabbitmq.destination.routing_key'] From 1827a7aea31a5e53455459dd6b66141f8d254b7e Mon Sep 17 00:00:00 2001 From: Tanna McClure Date: Wed, 3 Jul 2024 14:19:43 -0500 Subject: [PATCH 6/6] remove sleeps --- test/multiverse/suites/bunny/bunny_test.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/multiverse/suites/bunny/bunny_test.rb b/test/multiverse/suites/bunny/bunny_test.rb index 70b419da47..52cb4fbbc9 100644 --- a/test/multiverse/suites/bunny/bunny_test.rb +++ b/test/multiverse/suites/bunny/bunny_test.rb @@ -344,7 +344,6 @@ def test_pop_adds_attributes_to_span queue.pop end - sleep 0.5 spans = harvest_span_events! assert_equal @conn.hostname, spans[1][0][2]['server.address'] @@ -362,7 +361,6 @@ def test_publish_adds_attributes_to_span txn.stubs(:sampled?).returns(true) queue.publish('test_msg', routing_key: queue.name) end - sleep 0.5 spans = harvest_span_events! assert_equal @conn.hostname, spans[1][0][2]['server.address']