Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/APPEALS-50882 - Open Telemetry configuration and implementation #22396

Merged
merged 44 commits into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
68d9570
feature/appeals-45972 (#21950)
mikefinneran Jul 29, 2024
2c78307
Merge branch 'master' into feature/APPEALS-50882
raymond-hughes Aug 2, 2024
2429097
Update bundler to 2.4.22
raymond-hughes Aug 2, 2024
eba592c
Updating OTEL to use all and remove new relic gem
raymond-hughes Aug 22, 2024
ce135eb
Remove calls to new relic
raymond-hughes Aug 22, 2024
956b1f7
removed id attrs in metrics service calls that were causing dimension…
Aug 22, 2024
d1bdead
Update config for otel
raymond-hughes Aug 22, 2024
407009d
Reorder gems to fix linting issues
raymond-hughes Aug 22, 2024
8ca7d41
Updating config and refactoring verbose gems to add all
raymond-hughes Aug 23, 2024
7086f89
Reinstall gems
raymond-hughes Aug 23, 2024
7da5c9b
Adding all instruments
raymond-hughes Aug 23, 2024
ed7f99b
Update config to only include basic instruments
raymond-hughes Aug 23, 2024
45ea7f3
Update Gemfile.lock
raymond-hughes Aug 23, 2024
8dae0ca
Adding rake to gemfile
raymond-hughes Aug 23, 2024
9c24ee0
Adding instruments
raymond-hughes Aug 24, 2024
7fbe8c4
Merge branch 'master' into feature/APPEALS-50882
raymond-hughes Aug 24, 2024
0875c7b
Comment out PG and ActiveSupport
raymond-hughes Aug 26, 2024
0f56e9b
Suppress AWS logs
raymond-hughes Aug 26, 2024
97cecb7
Remove redis and turn on actionview
raymond-hughes Aug 26, 2024
39031d9
Turn actionview off
raymond-hughes Aug 26, 2024
f165d45
Add Redis instrumentation back
raymond-hughes Aug 26, 2024
efa14f2
Turn ActionPack back on
raymond-hughes Aug 26, 2024
9a582f4
Disable Redis
raymond-hughes Aug 26, 2024
3ffb2dc
Remove mentions of Datadog
alex-guanipatin Aug 27, 2024
e2cf2e0
Merge branch 'master' into danidrew/APPEALS-49677
drew-hadley Aug 27, 2024
2115400
Removed extra mentions of Datadog
alex-guanipatin Aug 29, 2024
f0989a6
Merge pull request #22623 from department-of-veterans-affairs/Alex/AP…
raymond-hughes Aug 29, 2024
b4b7753
removed newrelic references and yml file
Aug 29, 2024
a0e92e2
Test updating workflow
raymond-hughes Aug 29, 2024
c227889
Revert workflow change
raymond-hughes Aug 29, 2024
ea78a3b
Adding simplecov back
raymond-hughes Aug 29, 2024
2911c86
Fixing linting error
raymond-hughes Aug 29, 2024
fe7504d
Merge pull request #22575 from department-of-veterans-affairs/danidre…
raymond-hughes Aug 29, 2024
4f9a443
Merge branch 'feature/APPEALS-50882' into drew/APPEALS-55812
raymond-hughes Aug 29, 2024
10b2971
Merge pull request #22656 from department-of-veterans-affairs/drew/AP…
raymond-hughes Aug 29, 2024
efff3a7
Removing by: attribute after removing keyword in metric service
raymond-hughes Aug 30, 2024
d9f80b7
Adding simplecov lcov gem and updating workflow
raymond-hughes Aug 30, 2024
56fc8dd
Update workflow
raymond-hughes Aug 30, 2024
25df424
Updating simplecov
raymond-hughes Aug 30, 2024
609f3ac
Revert simple cov
raymond-hughes Aug 30, 2024
06f1852
Adding featureenvy skip for reek
raymond-hughes Aug 30, 2024
9041398
Merge branch 'master' into feature/APPEALS-50882
raymond-hughes Sep 5, 2024
4e12263
Update service name. (#22762)
NoelleAd Sep 9, 2024
bd9a214
Merge branch 'master' into feature/APPEALS-50882
raymond-hughes Sep 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 23 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ gem "connect_mpi", git: "https://github.com/department-of-veterans-affairs/conne
gem "connect_vbms", git: "https://github.com/department-of-veterans-affairs/connect_vbms.git", ref: "9807d9c9f0f3e3494a60b6693dc4f455c1e3e922"
gem "console_tree_renderer", git: "https://github.com/department-of-veterans-affairs/console-tree-renderer.git", tag: "v0.1.1"
gem "countries"
gem "ddtrace"
gem "dogstatsd-ruby"
gem "dry-schema", "~> 1.4"
gem "fast_jsonapi"
gem "fuzzy_match"
Expand All @@ -36,8 +34,28 @@ gem "moment_timezone-rails"
# Rails 6 has native support for multiple dbs, so prefer that over multiverse after upgrade.
# https://github.com/ankane/multiverse#upgrading-to-rails-6
gem "multiverse"
gem "newrelic_rpm"
gem "nokogiri", ">= 1.11.0.rc4"

gem "opentelemetry-exporter-otlp", require: false
gem "opentelemetry-sdk", require: false

gem "opentelemetry-instrumentation-action_pack", require: false
gem "opentelemetry-instrumentation-action_view", require: false
gem "opentelemetry-instrumentation-active_job", require: false
gem "opentelemetry-instrumentation-active_model_serializers", require: false
gem "opentelemetry-instrumentation-active_record", require: false
gem "opentelemetry-instrumentation-aws_sdk", require: false
gem "opentelemetry-instrumentation-concurrent_ruby", require: false
gem "opentelemetry-instrumentation-faraday", require: false
gem "opentelemetry-instrumentation-http", require: false
gem "opentelemetry-instrumentation-http_client", require: false
gem "opentelemetry-instrumentation-net_http", require: false
gem "opentelemetry-instrumentation-pg", require: false
gem "opentelemetry-instrumentation-rack", require: false
gem "opentelemetry-instrumentation-rails", require: false
gem "opentelemetry-instrumentation-rake", require: false
gem "opentelemetry-instrumentation-redis", require: false

gem "paper_trail", "~> 12.0"
# Used to speed up reporting
gem "parallel"
Expand All @@ -62,7 +80,7 @@ gem "rainbow"
# React
gem "react_on_rails", "11.3.0"
gem "redis-mutex"
gem "redis-namespace"
gem "redis-namespace", "~> 1.11.0"
gem "redis-rails", "~> 5.0.2"
gem "request_store"
gem "roo", "~> 2.7"
Expand Down Expand Up @@ -122,7 +140,7 @@ group :test, :development, :demo do
gem "rubocop-performance"
gem "rubocop-rails"
gem "scss_lint", require: false
gem "simplecov", git: "https://github.com/colszowka/simplecov.git", require: false
# gem "simplecov", git: "https://github.com/colszowka/simplecov.git", require: false
raymond-hughes marked this conversation as resolved.
Show resolved Hide resolved
gem "single_cov"
gem "sniffybara", git: "https://github.com/department-of-veterans-affairs/sniffybara.git"
gem "sql_tracker"
Expand Down
134 changes: 111 additions & 23 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
GIT
remote: https://github.com/colszowka/simplecov.git
revision: 783c9d7e9995f3ea9baf9fbb517c1d0ceb12acdb
specs:
simplecov (0.15.1)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)

GIT
remote: https://github.com/department-of-veterans-affairs/caseflow-commons
revision: 716b58caf2116da5fca21c3b3aeea6c9712f3b9d
Expand Down Expand Up @@ -1529,8 +1520,6 @@ GEM
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
date (3.3.3)
ddtrace (0.34.1)
msgpack
debase (0.2.4.1)
debase-ruby_core_source (>= 0.10.2)
debase-ruby_core_source (0.10.14)
Expand All @@ -1543,8 +1532,6 @@ GEM
rake (> 10, < 13)
thor (~> 0.19)
diff-lcs (1.3)
docile (1.1.5)
dogstatsd-ruby (4.4.0)
dotenv (2.7.5)
dotenv-rails (2.7.5)
dotenv (= 2.7.5)
Expand Down Expand Up @@ -1615,6 +1602,9 @@ GEM
rchardet (~> 1.8)
globalid (1.1.0)
activesupport (>= 5.0)
google-protobuf (3.25.4)
googleapis-common-protos-types (1.15.0)
google-protobuf (>= 3.18, < 5.a)
govdelivery-tms (2.8.4)
activesupport
faraday
Expand Down Expand Up @@ -1658,7 +1648,6 @@ GEM
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
json (2.3.0)
json-schema (4.3.0)
addressable (>= 2.8)
json_schemer (0.2.16)
Expand Down Expand Up @@ -1737,7 +1726,6 @@ GEM
timeout
net-smtp (0.3.3)
net-protocol
newrelic_rpm (6.5.0.357)
nio4r (2.5.9)
no_proxy_fix (0.1.2)
nokogiri (1.15.5)
Expand All @@ -1751,6 +1739,92 @@ GEM
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
open4 (1.3.4)
opentelemetry-api (1.1.0)
opentelemetry-common (0.19.7)
opentelemetry-api (~> 1.0)
opentelemetry-exporter-otlp (0.24.2)
google-protobuf (~> 3.19)
googleapis-common-protos-types (~> 1.3)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.19.6)
opentelemetry-sdk (~> 1.2)
opentelemetry-semantic_conventions
opentelemetry-instrumentation-action_pack (0.5.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-rack (~> 0.21)
opentelemetry-instrumentation-action_view (0.4.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-active_support (~> 0.1)
opentelemetry-instrumentation-base (~> 0.20)
opentelemetry-instrumentation-active_job (0.4.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-active_model_serializers (0.19.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-active_record (0.5.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
ruby2_keywords
opentelemetry-instrumentation-active_support (0.3.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-aws_sdk (0.3.2)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-base (0.21.1)
opentelemetry-api (~> 1.0)
opentelemetry-registry (~> 0.1)
opentelemetry-instrumentation-concurrent_ruby (0.20.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-faraday (0.22.0)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-http (0.21.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-http_client (0.21.0)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-net_http (0.21.1)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-pg (0.23.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-rack (0.22.1)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-rails (0.25.0)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-action_pack (~> 0.5.0)
opentelemetry-instrumentation-action_view (~> 0.4.0)
opentelemetry-instrumentation-active_job (~> 0.4.0)
opentelemetry-instrumentation-active_record (~> 0.5.0)
opentelemetry-instrumentation-active_support (~> 0.3.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-rake (0.1.1)
opentelemetry-api (~> 1.0)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-instrumentation-redis (0.24.1)
opentelemetry-api (~> 1.0)
opentelemetry-common (~> 0.19.3)
opentelemetry-instrumentation-base (~> 0.21.0)
opentelemetry-registry (0.2.0)
opentelemetry-api (~> 1.1)
opentelemetry-sdk (1.2.1)
opentelemetry-api (~> 1.1)
opentelemetry-common (~> 0.19.3)
opentelemetry-registry (~> 0.2)
opentelemetry-semantic_conventions
opentelemetry-semantic_conventions (1.10.0)
opentelemetry-api (~> 1.0)
paper_trail (12.3.0)
activerecord (>= 5.2)
request_store (~> 1.1)
Expand Down Expand Up @@ -1840,8 +1914,8 @@ GEM
redis-namespace (~> 1.0)
redis-mutex (4.0.2)
redis-classy (~> 2.0)
redis-namespace (1.6.0)
redis (>= 3.0.4)
redis-namespace (1.11.0)
redis (>= 4)
redis-rack (2.0.4)
rack (>= 1.5, < 3)
redis-store (>= 1.2, < 2)
Expand Down Expand Up @@ -1918,6 +1992,7 @@ GEM
ruby-plsql (0.8.0)
ruby-prof (1.4.1)
ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5)
ruby_dep (1.5.0)
ruby_parser (3.20.3)
sexp_processor (~> 4.16)
Expand Down Expand Up @@ -1962,7 +2037,6 @@ GEM
thor
shoulda-matchers (5.3.0)
activesupport (>= 5.2.0)
simplecov-html (0.10.2)
single_cov (1.3.2)
sixarm_ruby_unaccent (1.2.0)
socksify (1.7.1)
Expand Down Expand Up @@ -2070,10 +2144,8 @@ DEPENDENCIES
countries
danger (~> 6.2.2)
database_cleaner-active_record (= 2.0.0)
ddtrace
debase
derailed_benchmarks
dogstatsd-ruby
dotenv-rails
dry-schema (~> 1.4)
factory_bot_rails (~> 5.2)
Expand All @@ -2094,8 +2166,25 @@ DEPENDENCIES
meta_request
moment_timezone-rails
multiverse
newrelic_rpm
nokogiri (>= 1.11.0.rc4)
opentelemetry-exporter-otlp
opentelemetry-instrumentation-action_pack
opentelemetry-instrumentation-action_view
opentelemetry-instrumentation-active_job
opentelemetry-instrumentation-active_model_serializers
opentelemetry-instrumentation-active_record
opentelemetry-instrumentation-aws_sdk
opentelemetry-instrumentation-concurrent_ruby
opentelemetry-instrumentation-faraday
opentelemetry-instrumentation-http
opentelemetry-instrumentation-http_client
opentelemetry-instrumentation-net_http
opentelemetry-instrumentation-pg
opentelemetry-instrumentation-rack
opentelemetry-instrumentation-rails
opentelemetry-instrumentation-rake
opentelemetry-instrumentation-redis
opentelemetry-sdk
paper_trail (~> 12.0)
parallel
paranoia (~> 2.2)
Expand All @@ -2114,7 +2203,7 @@ DEPENDENCIES
rb-readline
react_on_rails (= 11.3.0)
redis-mutex
redis-namespace
redis-namespace (~> 1.11.0)
redis-rails (~> 5.0.2)
request_store
roo (~> 2.7)
Expand All @@ -2138,7 +2227,6 @@ DEPENDENCIES
sentry-raven
shoryuken (= 3.1.11)
shoulda-matchers
simplecov!
single_cov
sniffybara!
solargraph
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/api/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
class Api::ApplicationController < ActionController::Base
protect_from_forgery with: :null_session

include TrackRequestId

force_ssl if: :ssl_enabled?
before_action :strict_transport_security

Expand Down
2 changes: 0 additions & 2 deletions app/controllers/application_base_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ class ApplicationBaseController < ActionController::Base
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception

include TrackRequestId

force_ssl if: :ssl_enabled?
before_action :check_out_of_service
before_action :strict_transport_security
Expand Down
13 changes: 0 additions & 13 deletions app/controllers/concerns/track_request_id.rb

This file was deleted.

2 changes: 0 additions & 2 deletions app/controllers/dependencies_checks_controller.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
# frozen_string_literal: true

class DependenciesChecksController < ApplicationBaseController
newrelic_ignore_apdex

skip_before_action :check_out_of_service

def show
Expand Down
2 changes: 0 additions & 2 deletions app/controllers/health_checks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

# rubocop:disable Rails/ApplicationController
class HealthChecksController < ActionController::Base
include TrackRequestId
include CollectCustomMetrics

protect_from_forgery with: :exception
newrelic_ignore_apdex

def show
body = {
Expand Down
5 changes: 0 additions & 5 deletions app/services/metrics_service.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
# frozen_string_literal: true

require "benchmark"
require "datadog/statsd"
require "statsd-instrument"

# see https://dropwizard.github.io/metrics/3.1.0/getting-started/ for abstractions on metric types
class MetricsService
@statsd = Datadog::Statsd.new

# :reek:LongParameterList
def self.increment_counter(metric_group:, metric_name:, app_name:, attrs: {}, by: 1)
tags = get_tags(app_name, attrs)
stat_name = get_stat_name(metric_group, metric_name)
@statsd.increment(stat_name, tags: tags, by: by)

# Dynatrace statD implementation
StatsD.increment(stat_name, tags: tags)
Expand All @@ -34,7 +31,6 @@ def self.record_runtime(metric_group:, app_name:, start_time: Time.zone.now)
def self.emit_gauge(metric_group:, metric_name:, metric_value:, app_name:, attrs: {})
tags = get_tags(app_name, attrs)
stat_name = get_stat_name(metric_group, metric_name)
@statsd.gauge(stat_name, metric_value, tags: tags)

# Dynatrace statD implementation
StatsD.gauge(stat_name, metric_value, tags: tags)
Expand All @@ -45,7 +41,6 @@ def self.emit_gauge(metric_group:, metric_name:, metric_value:, app_name:, attrs
def self.histogram(metric_group:, metric_name:, metric_value:, app_name:, attrs: {})
tags = get_tags(app_name, attrs)
stat_name = get_stat_name(metric_group, metric_name)
@statsd.histogram(stat_name, metric_value, tags: tags)

# Dynatrace statD implementation
StatsD.histogram(stat_name, metric_value, tags: tags)
Expand Down
14 changes: 0 additions & 14 deletions config/initializers/datadog.rb

This file was deleted.

Loading
Loading