chore: support for APMs (#2874)

Add the support for Newrelic and Datadog.
ref: https://www.chatwoot.com/docs/self-hosted/monitoring/apm-and-error-monitoring

fixes: #2861
This commit is contained in:
Sojan Jose 2021-08-25 01:04:29 +05:30 committed by GitHub
parent 21e8a41206
commit a9ca76d9df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 80 additions and 5 deletions

View file

@ -85,8 +85,6 @@ AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY= AWS_SECRET_ACCESS_KEY=
AWS_REGION= AWS_REGION=
# Sentry
SENTRY_DSN=
# Log settings # Log settings
# Disable if you want to write logs to a file # Disable if you want to write logs to a file
@ -139,6 +137,25 @@ ANDROID_SHA256_CERT_FINGERPRINT=AC:73:8E:DE:EB:56:EA:CC:10:87:02:A7:65:37:7B:38:
USE_INBOX_AVATAR_FOR_BOT=true USE_INBOX_AVATAR_FOR_BOT=true
### APM and Error Monitoring configurations
## Sentry
# SENTRY_DSN=
## Scout
## https://scoutapm.com/docs/ruby/configuration
# SCOUT_KEY=YOURKEY
# SCOUT_NAME=YOURAPPNAME (Production)
# SCOUT_MONITOR=true
## NewRelic
# https://docs.newrelic.com/docs/agents/ruby-agent/configuration/ruby-agent-configuration/
# NEW_RELIC_LICENSE_KEY=
## Datadog
## https://github.com/DataDog/dd-trace-rb/blob/master/docs/GettingStarted.md#environment-variables
# DD_TRACE_AGENT_URL=
## IP look up configuration ## IP look up configuration
## ref https://github.com/alexreisner/geocoder/blob/master/README_API_GUIDE.md ## ref https://github.com/alexreisner/geocoder/blob/master/README_API_GUIDE.md

View file

@ -93,7 +93,10 @@ gem 'google-cloud-dialogflow'
##--- gems for debugging and error reporting ---## ##--- gems for debugging and error reporting ---##
# static analysis # static analysis
gem 'brakeman' gem 'brakeman'
##-- apm and error monitoring ---#
gem 'ddtrace' gem 'ddtrace'
gem 'newrelic_rpm'
gem 'scout_apm' gem 'scout_apm'
gem 'sentry-rails' gem 'sentry-rails'
gem 'sentry-ruby' gem 'sentry-ruby'

View file

@ -362,6 +362,7 @@ GEM
net-http-persistent (4.0.1) net-http-persistent (4.0.1)
connection_pool (~> 2.2) connection_pool (~> 2.2)
netrc (0.11.0) netrc (0.11.0)
newrelic_rpm (7.2.0)
nio4r (2.5.8) nio4r (2.5.8)
nokogiri (1.11.7-arm64-darwin) nokogiri (1.11.7-arm64-darwin)
racc (~> 1.4) racc (~> 1.4)
@ -682,6 +683,7 @@ DEPENDENCIES
listen listen
maxminddb maxminddb
mock_redis mock_redis
newrelic_rpm
pg pg
procore-sift procore-sift
pry-rails pry-rails

View file

@ -0,0 +1,6 @@
if ENV['DD_TRACE_AGENT_URL']
Datadog.configure do |c|
# This will activate auto-instrumentation for Rails
c.use :rails
end
end

View file

@ -1,4 +1,6 @@
Sentry.init do |config| if ENV['SENTRY_DSN']
config.dsn = ENV['SENTRY_DSN'] Sentry.init do |config|
config.enabled_environments = %w[staging production] config.dsn = ENV['SENTRY_DSN']
config.enabled_environments = %w[staging production]
end
end end

45
config/newrelic.yml Normal file
View file

@ -0,0 +1,45 @@
#
# This file configures the New Relic Agent. New Relic monitors Ruby, Java,
# .NET, PHP, Python, Node, and Go applications with deep visibility and low
# overhead. For more information, visit www.newrelic.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: <%= ENV['NEW_RELIC_LICENSE_KEY'] %>
# 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: <%= ENV.fetch('NEW_RELIC_APP_NAME', 'Chatwoot') %>
distributed_tracing:
enabled: true
# To disable the agent regardless of other settings, uncomment the following:
agent_enabled: <%= ENV['NEW_RELIC_LICENSE_KEY'].present? && ENV.fetch('NEW_RELIC_AGENT_ENABLED', true) %>
# Logging level for log/newrelic_agent.log
log_level: <%= ENV.fetch('NEW_RELIC_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: <%= ENV.fetch('NEW_RELIC_APP_NAME', 'Chatwoot') %> (Development)
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: <%= ENV.fetch('NEW_RELIC_APP_NAME', 'Chatwoot') %> (Staging)
production:
<<: *default_settings