We use 2 separate Redis instances using Redis Enterprise Cloud.
Redis host1 and Redis host2.
When distributed tracing is enabled then to identify slow Redis operations coming from different Redis hosts we can do:
Open APM & Services -> (choose your app) -> Transactions -> (select something from Top 20 transactions, for example select a background sidekiq worker) -> on the Transaction traces table select one of slow transactions -> select the Database queries tab -> In the Database instance column you can see host name (i.e. Redis host1 or host2).
This is expected. We see that Redis operation is against host1 or host2 for background sidekiq workers.
But if you selected API endpoint instead of background sidekiq worker then Redis host name is not visible. It's just showing web.1 for Heroku dyno name. Not sure why it's showing correctly Redis host name only for background sidekiq workers.
Expected Behavior
Show Redis host1 or host2 for API endpoint transactions. Similarly like for background workers.
# config/newrelic.yml
#
# This file configures the New Relic Agent. New Relic monitors Ruby, Java,
# .NET, PHP, Python and Node applications with deep visibility and low
# overhead. For more information, visit www.newrelic.com.
#
# Generated September 19, 2015
#
# This configuration file is custom generated for app41316600@heroku.com
#
# For full documentation of agent configuration options, please refer to
# https://docs.newrelic.com/docs/agents/ruby-agent/installation-configuration/ruby-agent-configuration
common: &default_settings
# Required license key associated with your New Relic account.
# license_key: example
# key is in config/initializers/newrelic.rb
# Your application name. Renaming here affects where data displays in New
# Relic. For more details, see https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/renaming-applications
app_name: App name API
# To disable the agent regardless of other settings, uncomment the following:
# agent_enabled: false
# Logging level for log/newrelic_agent.log
log_level: info
# Environment-specific settings are in this section.
# RAILS_ENV or RACK_ENV (as appropriate) is used to determine the environment.
# If your application has other named environments, configure them here.
development:
<<: *default_settings
app_name: App Name API (Development)
# NOTE: There is substantial overhead when running in developer mode.
# Do not use for production or load testing.
developer_mode: true
test:
<<: *default_settings
# It doesn't make sense to report to New Relic from automated test runs.
monitor_mode: false
staging:
<<: *default_settings
app_name: App Name API (Staging)
monitor_mode: true
production:
<<: *default_settings
app_name: App Name API (Production)
monitor_mode: true
Thanks, @ArturT. We'll investigate (after RubyConf 2023 at least) and see what can be done in either the agent code or back-end UI for improving this experience. We'll give updates here as they become available.
Description
We use 2 separate Redis instances using Redis Enterprise Cloud. Redis host1 and Redis host2.
When distributed tracing is enabled then to identify slow Redis operations coming from different Redis hosts we can do:
Open APM & Services -> (choose your app) -> Transactions -> (select something from Top 20 transactions, for example select a background sidekiq worker) -> on the Transaction traces table select one of slow transactions -> select the Database queries tab -> In the Database instance column you can see host name (i.e. Redis host1 or host2).
This is expected. We see that Redis operation is against host1 or host2 for background sidekiq workers.
But if you selected API endpoint instead of background sidekiq worker then Redis host name is not visible. It's just showing web.1 for Heroku dyno name. Not sure why it's showing correctly Redis host name only for background sidekiq workers.
Expected Behavior
Show Redis host1 or host2 for API endpoint transactions. Similarly like for background workers.
Your Environment
Additional context
Issue extracted from: