influxdb-rails 1.0.1.beta2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rubocop.yml +18 -0
  3. data/.github/workflows/spec.yml +32 -0
  4. data/.rubocop.yml +36 -7
  5. data/CHANGELOG.md +22 -1
  6. data/README.md +43 -34
  7. data/gemfiles/Gemfile.rails-6.0.x +1 -2
  8. data/gemfiles/Gemfile.rails-6.1.x +9 -0
  9. data/influxdb-rails.gemspec +2 -2
  10. data/lib/influxdb/rails/middleware/active_job_subscriber.rb +11 -11
  11. data/lib/influxdb/rails/middleware/request_subscriber.rb +9 -1
  12. data/lib/influxdb/rails/railtie.rb +0 -1
  13. data/lib/influxdb/rails/sql/normalizer.rb +3 -3
  14. data/lib/influxdb/rails/tags.rb +2 -2
  15. data/lib/influxdb/rails/values.rb +1 -1
  16. data/lib/influxdb/rails/version.rb +1 -1
  17. data/lib/influxdb-rails.rb +1 -2
  18. data/lib/rails/generators/influxdb/templates/initializer.rb +4 -0
  19. data/sample-dashboard/Dockerfile +2 -2
  20. data/sample-dashboard/README.md +21 -28
  21. data/sample-dashboard/Rakefile +10 -5
  22. data/sample-dashboard/Ruby On Rails ActiveJob.json +600 -0
  23. data/sample-dashboard/{Ruby On Rails Performance (per Action).json → Ruby On Rails Performance per Action.json } +343 -589
  24. data/sample-dashboard/{Ruby On Rails Performance (per Request).json → Ruby On Rails Performance per Request.json } +361 -211
  25. data/sample-dashboard/Ruby On Rails Performance.json +1347 -1139
  26. data/sample-dashboard/Ruby On Rails Requests.json +834 -0
  27. data/sample-dashboard/Ruby On Rails Slowlog by Action.json +278 -0
  28. data/sample-dashboard/Ruby On Rails Slowlog by Request.json +277 -0
  29. data/sample-dashboard/Ruby On Rails Slowlog by SQL.json +328 -0
  30. data/sample-dashboard/docker-compose.yml +6 -1
  31. data/sample-dashboard/provisioning/activejob.json +600 -0
  32. data/sample-dashboard/provisioning/performance-action.json +334 -580
  33. data/sample-dashboard/provisioning/performance-request.json +355 -205
  34. data/sample-dashboard/provisioning/performance.json +1336 -1128
  35. data/sample-dashboard/provisioning/requests.json +834 -0
  36. data/sample-dashboard/provisioning/slowlog-action.json +278 -0
  37. data/sample-dashboard/provisioning/slowlog-requests.json +277 -0
  38. data/sample-dashboard/provisioning/slowlog-sql.json +328 -0
  39. data/spec/requests/action_controller_metrics_spec.rb +24 -10
  40. data/spec/requests/action_mailer_deliver_metrics_spec.rb +4 -11
  41. data/spec/requests/action_view_collection_metrics_spec.rb +7 -16
  42. data/spec/requests/action_view_partial_metrics_spec.rb +6 -15
  43. data/spec/requests/action_view_template_metrics_spec.rb +6 -15
  44. data/spec/requests/active_job_enqueue_metrics_spec.rb +6 -15
  45. data/spec/requests/active_job_perform_metrics_spec.rb +5 -11
  46. data/spec/requests/active_record_instantiation_metrics_spec.rb +7 -16
  47. data/spec/requests/active_record_sql_metrics_spec.rb +13 -29
  48. data/spec/requests/block_inistrumentation_spec.rb +8 -17
  49. data/spec/requests/context_spec.rb +1 -1
  50. data/spec/requests/logger_spec.rb +1 -1
  51. data/spec/spec_helper.rb +2 -1
  52. data/spec/support/rails5/app.rb +3 -4
  53. data/spec/support/rails6/app.rb +3 -4
  54. data/spec/unit/tags.rb +47 -0
  55. metadata +25 -14
  56. data/.travis.yml +0 -28
  57. data/spec/requests/active_job_perform_start_metrics_spec.rb +0 -68
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActionView partial metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -17,18 +17,11 @@ RSpec.describe "ActionView partial metrics", type: :request do
17
17
 
18
18
  expect_metric(
19
19
  tags: a_hash_including(
20
- location: "MetricsController#index",
21
- hook: "render_partial",
22
- additional_tag: :value,
23
- filename: include("spec/support/views/metrics/_item.html.erb"),
24
- server: Socket.gethostname,
25
- app_name: :app_name,
26
- tags_middleware: :tags_middleware
20
+ hook: "render_partial",
21
+ filename: include("spec/support/views/metrics/_item.html.erb")
27
22
  ),
28
23
  values: a_hash_including(
29
- additional_value: :value,
30
- request_id: :request_id,
31
- value: be_between(1, 30)
24
+ value: be_between(1, 500)
32
25
  )
33
26
  )
34
27
  end
@@ -40,8 +33,7 @@ RSpec.describe "ActionView partial metrics", type: :request do
40
33
 
41
34
  expect_metric(
42
35
  tags: a_hash_including(
43
- location: "MetricsController#index",
44
- hook: "render_partial"
36
+ hook: "render_partial"
45
37
  ),
46
38
  timestamp: 1_514_797_200
47
39
  )
@@ -54,8 +46,7 @@ RSpec.describe "ActionView partial metrics", type: :request do
54
46
 
55
47
  expect_no_metric(
56
48
  tags: a_hash_including(
57
- location: "MetricsController#index",
58
- hook: "render_partial"
49
+ hook: "render_partial"
59
50
  )
60
51
  )
61
52
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActionView template metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -17,18 +17,11 @@ RSpec.describe "ActionView template metrics", type: :request do
17
17
 
18
18
  expect_metric(
19
19
  tags: a_hash_including(
20
- location: "MetricsController#index",
21
- hook: "render_template",
22
- additional_tag: :value,
23
- filename: include("spec/support/views/metrics/index.html.erb"),
24
- server: Socket.gethostname,
25
- app_name: :app_name,
26
- tags_middleware: :tags_middleware
20
+ hook: "render_template",
21
+ filename: include("spec/support/views/metrics/index.html.erb")
27
22
  ),
28
23
  values: a_hash_including(
29
- additional_value: :value,
30
- request_id: :request_id,
31
- value: be_between(1, 30)
24
+ value: be_between(1, 500)
32
25
  )
33
26
  )
34
27
  end
@@ -40,8 +33,7 @@ RSpec.describe "ActionView template metrics", type: :request do
40
33
 
41
34
  expect_metric(
42
35
  tags: a_hash_including(
43
- location: "MetricsController#index",
44
- hook: "render_template"
36
+ hook: "render_template"
45
37
  ),
46
38
  timestamp: 1_514_797_200
47
39
  )
@@ -54,8 +46,7 @@ RSpec.describe "ActionView template metrics", type: :request do
54
46
 
55
47
  expect_no_metric(
56
48
  tags: a_hash_including(
57
- location: "MetricsController#index",
58
- hook: "render_template"
49
+ hook: "render_template"
59
50
  )
60
51
  )
61
52
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveJob enqueue metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -18,20 +18,13 @@ RSpec.describe "ActiveJob enqueue metrics", type: :request do
18
18
 
19
19
  expect_metric(
20
20
  tags: a_hash_including(
21
- location: "MetricsController#index",
22
- hook: "enqueue",
23
- job: "MetricJob",
24
- queue: "default",
25
- state: "queued",
26
- additional_tag: :value,
27
- server: Socket.gethostname,
28
- app_name: :app_name,
29
- tags_middleware: :tags_middleware
21
+ hook: "enqueue",
22
+ job: "MetricJob",
23
+ queue: "default",
24
+ state: "queued"
30
25
  ),
31
26
  values: a_hash_including(
32
- additional_value: :value,
33
- request_id: :request_id,
34
- value: 1
27
+ value: 1
35
28
  )
36
29
  )
37
30
  end
@@ -43,7 +36,6 @@ RSpec.describe "ActiveJob enqueue metrics", type: :request do
43
36
 
44
37
  expect_metric(
45
38
  tags: a_hash_including(
46
- location: "MetricsController#index",
47
39
  hook: "enqueue"
48
40
  ),
49
41
  timestamp: 1_514_797_200
@@ -57,7 +49,6 @@ RSpec.describe "ActiveJob enqueue metrics", type: :request do
57
49
 
58
50
  expect_no_metric(
59
51
  tags: a_hash_including(
60
- location: "MetricsController#index",
61
52
  hook: "enqueue"
62
53
  )
63
54
  )
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveJobs perform metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -20,14 +20,10 @@ RSpec.describe "ActiveJobs perform metrics", type: :request do
20
20
 
21
21
  expect_metric(
22
22
  tags: a_hash_including(
23
- location: "MetricsController#index",
24
- hook: "perform",
25
- state: "succeeded",
26
- job: "MetricJob",
27
- queue: "default",
28
- server: Socket.gethostname,
29
- app_name: :app_name,
30
- tags_middleware: :tags_middleware
23
+ hook: "perform",
24
+ state: "succeeded",
25
+ job: "MetricJob",
26
+ queue: "default"
31
27
  ),
32
28
  values: a_hash_including(
33
29
  value: be_between(0, 30)
@@ -44,7 +40,6 @@ RSpec.describe "ActiveJobs perform metrics", type: :request do
44
40
 
45
41
  expect_metric(
46
42
  tags: a_hash_including(
47
- location: "MetricsController#index",
48
43
  hook: "perform"
49
44
  ),
50
45
  timestamp: 1_514_797_200
@@ -60,7 +55,6 @@ RSpec.describe "ActiveJobs perform metrics", type: :request do
60
55
 
61
56
  expect_no_metric(
62
57
  tags: a_hash_including(
63
- location: "MetricsController#index",
64
58
  hook: "perform"
65
59
  )
66
60
  )
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveRecord instantiation metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -19,19 +19,12 @@ RSpec.describe "ActiveRecord instantiation metrics", type: :request do
19
19
 
20
20
  expect_metric(
21
21
  tags: a_hash_including(
22
- location: "MetricsController#show",
23
- hook: "instantiation",
24
- class_name: "Metric",
25
- additional_tag: :value,
26
- server: Socket.gethostname,
27
- app_name: :app_name,
28
- tags_middleware: :tags_middleware
22
+ hook: "instantiation",
23
+ class_name: "Metric"
29
24
  ),
30
25
  values: a_hash_including(
31
- additional_value: :value,
32
- request_id: :request_id,
33
- value: be_between(1, 30),
34
- record_count: 1
26
+ value: be_between(1, 500),
27
+ record_count: 1
35
28
  )
36
29
  )
37
30
  end
@@ -43,8 +36,7 @@ RSpec.describe "ActiveRecord instantiation metrics", type: :request do
43
36
 
44
37
  expect_metric(
45
38
  tags: a_hash_including(
46
- location: "MetricsController#show",
47
- hook: "instantiation"
39
+ hook: "instantiation"
48
40
  ),
49
41
  timestamp: 1_514_797_200
50
42
  )
@@ -57,8 +49,7 @@ RSpec.describe "ActiveRecord instantiation metrics", type: :request do
57
49
 
58
50
  expect_no_metric(
59
51
  tags: a_hash_including(
60
- location: "MetricsController#show",
61
- hook: "instantiation"
52
+ hook: "instantiation"
62
53
  )
63
54
  )
64
55
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "ActiveRecord SQL metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -19,21 +19,14 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
19
19
 
20
20
  expect_metric(
21
21
  tags: a_hash_including(
22
- location: "MetricsController#index",
23
- hook: "sql",
24
- name: "Metric Create",
25
- class_name: "Metric",
26
- operation: "INSERT",
27
- additional_tag: :value,
28
- server: Socket.gethostname,
29
- app_name: :app_name,
30
- tags_middleware: :tags_middleware
22
+ hook: "sql",
23
+ name: "Metric Create",
24
+ class_name: "Metric",
25
+ operation: "INSERT"
31
26
  ),
32
27
  values: a_hash_including(
33
- additional_value: :value,
34
- request_id: :request_id,
35
- value: be_between(1, 30),
36
- sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
28
+ value: be_between(1, 500),
29
+ sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
37
30
  )
38
31
  )
39
32
  end
@@ -45,21 +38,14 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
45
38
 
46
39
  expect_metric(
47
40
  tags: a_hash_including(
48
- location: "MetricsController#index",
49
- hook: "sql",
50
- name: "SQL",
51
- class_name: "SQL",
52
- operation: "INSERT",
53
- additional_tag: :value,
54
- server: Socket.gethostname,
55
- app_name: :app_name,
56
- tags_middleware: :tags_middleware
41
+ hook: "sql",
42
+ name: "SQL",
43
+ class_name: "SQL",
44
+ operation: "INSERT"
57
45
  ),
58
46
  values: a_hash_including(
59
- additional_value: :value,
60
- request_id: :request_id,
61
- value: be_between(1, 30),
62
- sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
47
+ value: be_between(1, 500),
48
+ sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)"
63
49
  )
64
50
  )
65
51
  end
@@ -71,7 +57,6 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
71
57
 
72
58
  expect_metric(
73
59
  tags: a_hash_including(
74
- location: "MetricsController#index",
75
60
  hook: "sql"
76
61
  ),
77
62
  timestamp: 1_514_797_200
@@ -85,7 +70,6 @@ RSpec.describe "ActiveRecord SQL metrics", type: :request do
85
70
 
86
71
  expect_no_metric(
87
72
  tags: a_hash_including(
88
- location: "MetricsController#index",
89
73
  hook: "sql"
90
74
  )
91
75
  )
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "BlockInstrumentation metrics", type: :request do
4
4
  let(:tags_middleware) do
@@ -17,20 +17,13 @@ RSpec.describe "BlockInstrumentation metrics", type: :request do
17
17
 
18
18
  expect_metric(
19
19
  tags: a_hash_including(
20
- location: "MetricsController#index",
21
- hook: "block_instrumentation",
22
- additional_tag: :value,
23
- server: Socket.gethostname,
24
- app_name: :app_name,
25
- tags_middleware: :tags_middleware,
26
- block_tag: :block_tag,
27
- name: "name"
20
+ hook: "block_instrumentation",
21
+ block_tag: :block_tag,
22
+ name: "name"
28
23
  ),
29
24
  values: a_hash_including(
30
- additional_value: :value,
31
- request_id: :request_id,
32
- block_value: :block_value,
33
- value: be_between(1, 30)
25
+ block_value: :block_value,
26
+ value: be_between(1, 500)
34
27
  )
35
28
  )
36
29
  end
@@ -42,8 +35,7 @@ RSpec.describe "BlockInstrumentation metrics", type: :request do
42
35
 
43
36
  expect_metric(
44
37
  tags: a_hash_including(
45
- location: "MetricsController#index",
46
- hook: "block_instrumentation"
38
+ hook: "block_instrumentation"
47
39
  ),
48
40
  timestamp: 1_514_797_200
49
41
  )
@@ -56,8 +48,7 @@ RSpec.describe "BlockInstrumentation metrics", type: :request do
56
48
 
57
49
  expect_no_metric(
58
50
  tags: a_hash_including(
59
- location: "MetricsController#index",
60
- hook: "block_instrumentation"
51
+ hook: "block_instrumentation"
61
52
  )
62
53
  )
63
54
  end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "Context", type: :request do
4
4
  it "resets the context after a request" do
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ require "#{File.dirname(__FILE__)}/../spec_helper"
2
2
 
3
3
  RSpec.describe "Logger", type: :request do
4
4
  it "logs exception" do
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require "active_support"
4
4
  require_relative "../lib/influxdb/rails/helpers/rspec_matchers"
5
- require File.expand_path(File.dirname(__FILE__) + "/support/broken_client")
5
+ require File.expand_path("#{File.dirname(__FILE__)}/support/broken_client")
6
6
 
7
7
  ENV["RAILS_ENV"] ||= "test"
8
8
 
@@ -34,6 +34,7 @@ RSpec.configure do |config|
34
34
  end
35
35
 
36
36
  config.include ActiveSupport::Testing::TimeHelpers
37
+ config.include ActiveSupport::Testing::Assertions
37
38
  config.include ActiveJob::TestHelper
38
39
 
39
40
  config.include InfluxDB::Rails::BrokenClient
@@ -20,9 +20,6 @@ app.routes.draw do
20
20
  resources :exceptions, only: :index
21
21
  end
22
22
 
23
- InfluxDB::Rails.configure do |config|
24
- end
25
-
26
23
  ENV["DATABASE_URL"] = "sqlite3::memory:"
27
24
  ActiveRecord::Schema.define do
28
25
  create_table :metrics, force: true do |t|
@@ -52,7 +49,9 @@ class MetricMailer < ActionMailer::Base
52
49
  end
53
50
 
54
51
  class Metric < ActiveRecord::Base; end
52
+
55
53
  class ApplicationController < ActionController::Base; end
54
+
56
55
  class MetricsController < ApplicationController
57
56
  prepend_view_path File.join(__dir__, "..", "views")
58
57
 
@@ -77,7 +76,7 @@ end
77
76
 
78
77
  class ExceptionsController < ApplicationController
79
78
  def index
80
- 1 / 0
79
+ raise ActiveRecord::RecordNotFound
81
80
  end
82
81
  end
83
82
 
@@ -20,9 +20,6 @@ app.routes.draw do
20
20
  resources :exceptions, only: :index
21
21
  end
22
22
 
23
- InfluxDB::Rails.configure do |config|
24
- end
25
-
26
23
  ENV["DATABASE_URL"] = "sqlite3::memory:"
27
24
  ActiveRecord::Schema.define do
28
25
  create_table :metrics, force: true do |t|
@@ -52,7 +49,9 @@ class MetricMailer < ActionMailer::Base
52
49
  end
53
50
 
54
51
  class Metric < ActiveRecord::Base; end
52
+
55
53
  class ApplicationController < ActionController::Base; end
54
+
56
55
  class MetricsController < ApplicationController
57
56
  prepend_view_path File.join(__dir__, "..", "views")
58
57
 
@@ -77,7 +76,7 @@ end
77
76
 
78
77
  class ExceptionsController < ApplicationController
79
78
  def index
80
- 1 / 0
79
+ raise ActiveRecord::RecordNotFound
81
80
  end
82
81
  end
83
82