diff --git a/README.md b/README.md index a22a214..591fff6 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Automatically instrument your Ruby on Rails applications and write the metrics d Add the gem to your `Gemfile`: ```console -echo 'gem "influxdb-rails"' >>Gemfile +echo 'gem "influxdb-rails"' >> Gemfile bundle install ``` @@ -50,7 +50,7 @@ Reported ActiveSupport instrumentation hooks: - [start\_processing.action\_controller](https://guides.rubyonrails.org/active_support_instrumentation.html#start-processing-action-controller) - [process\_action.action\_controller](https://guides.rubyonrails.org/active_support_instrumentation.html#process-action-action-controller) -Reported values: +Reported fields: ```ruby controller: 48.467, @@ -83,7 +83,7 @@ Reported ActiveSupport instrumentation hooks: - [render\_partial.action\_view](https://guides.rubyonrails.org/active_support_instrumentation.html#render-partial-action-view) - [render\_collection.action\_view](https://guides.rubyonrails.org/active_support_instrumentation.html#render-collection-action-view) -Reported values: +Reported fields: ```ruby value: 48.467, @@ -109,7 +109,7 @@ Reported ActiveSupport instrumentation hooks: - [sql.active\_record](https://guides.rubyonrails.org/active_support_instrumentation.html#sql-active-record) - [instantiation.active\_record](https://guides.rubyonrails.org/active_support_instrumentation.html#instantiation-active-record) -Reported SQL values: +Reported fields: ```ruby sql: "SELECT \"posts\".* FROM \"posts\"", @@ -153,7 +153,7 @@ Reported ActiveSupport instrumentation hooks: - [enqueue.active\_job](https://guides.rubyonrails.org/active_support_instrumentation.html#enqueue-active-job) - [perform.active\_job](https://guides.rubyonrails.org/active_support_instrumentation.html#perform-active-job) -Reported values: +Reported fields: ```ruby value: 89.467 @@ -177,7 +177,7 @@ Reported ActiveSupport instrumentation hooks: - [deliver.action\_mailer](https://guides.rubyonrails.org/active_support_instrumentation.html#deliver-action-mailer) -Reported values: +Reported fields: ```ruby value: 1 @@ -194,12 +194,13 @@ Reported tags: ## Configuration -The only setting you actually need to configure is the name of the database -within the InfluxDB server instance (don't forget to create this database!). +The only settings you actually need to configure are the organization, bucket and access token. ```ruby InfluxDB::Rails.configure do |config| - config.client.database = "rails" + config.client.org = "org" + config.client.bucket = "bucket" + config.client.token = "token" end ``` @@ -234,7 +235,7 @@ class ApplicationController def set_influx_data InfluxDB::Rails.current.tags = { user: current_user.id } - InfluxDB::Rails.current.values = { redis_value: redis_value } + InfluxDB::Rails.current.fields = { redis_value: redis_value } end end ``` @@ -243,7 +244,7 @@ end If you want to add custom instrumentation, you can wrap any code into a block instrumentation ```ruby -InfluxDB::Rails.instrument "expensive_operation", tags: { }, values: { } do +InfluxDB::Rails.instrument "expensive_operation", tags: { }, fields: { } do expensive_operation end ``` @@ -258,7 +259,7 @@ Reported tags: name: "expensive_operation" ``` -Reported values: +Reported fields: ```ruby value: 100 # execution time of the block in ms ``` @@ -266,7 +267,7 @@ Reported values: You can also overwrite the `value` ```ruby -InfluxDB::Rails.instrument "user_count", values: { value: 1 } do +InfluxDB::Rails.instrument "user_count", fields: { value: 1 } do User.create(name: 'mickey', surname: 'mouse') end ``` @@ -274,7 +275,7 @@ end or call it even without a block ```ruby -InfluxDB::Rails.instrument "temperature", values: { value: 25 } +InfluxDB::Rails.instrument "temperature", fields: { value: 25 } ``` ### Custom client configuration @@ -285,15 +286,17 @@ to your InfluxDB server. You can access this client as well, and perform arbitrary operations on your data: ```ruby -InfluxDB::Rails.client.write_point "events", +InfluxDB::Rails.write_api.write( + name: "events", tags: { url: "/foo", user_id: current_user.id, location: InfluxDB::Rails.current.location }, - values: { value: 0 } + fields: { value: 0 } +) ``` If you do that, it might be useful to add the current context to these custom data points which can get accessed with `InfluxDB::Rails.current.location`. -See [influxdb-ruby](http://github.com/influxdata/influxdb-ruby) for a +See [influxdb-client](https://github.com/influxdata/influxdb-client-ruby) for a full list of configuration options and detailed usage. ### Disabling hooks diff --git a/lib/influxdb/rails/context.rb b/lib/influxdb/rails/context.rb index 3efd2de..1fa5e21 100644 --- a/lib/influxdb/rails/context.rb +++ b/lib/influxdb/rails/context.rb @@ -3,7 +3,7 @@ module Rails class Context def reset Thread.current[:_influxdb_rails_tags] = {} - Thread.current[:_influxdb_rails_values] = {} + Thread.current[:_influxdb_rails_fields] = {} end def tags @@ -14,12 +14,12 @@ def tags=(tags) Thread.current[:_influxdb_rails_tags] = self.tags.merge(tags) end - def values - Thread.current[:_influxdb_rails_values].to_h + def fields + Thread.current[:_influxdb_rails_fields].to_h end - def values=(values) - Thread.current[:_influxdb_rails_values] = self.values.merge(values) + def fields=(fields) + Thread.current[:_influxdb_rails_fields] = self.fields.merge(fields) end end end diff --git a/lib/influxdb/rails/metric.rb b/lib/influxdb/rails/metric.rb index 33507ff..1a7c83d 100644 --- a/lib/influxdb/rails/metric.rb +++ b/lib/influxdb/rails/metric.rb @@ -3,11 +3,11 @@ module InfluxDB module Rails class Metric - def initialize(configuration:, timestamp:, tags: {}, values: {}) + def initialize(configuration:, timestamp:, tags: {}, fields: {}) @configuration = configuration @timestamp = timestamp @tags = tags - @values = values + @fields = fields end def write @@ -16,11 +16,11 @@ def write private - attr_reader :configuration, :tags, :values, :timestamp + attr_reader :configuration, :tags, :fields, :timestamp def data { - fields: values.merge(InfluxDB::Rails.current.values), + fields: fields.merge(InfluxDB::Rails.current.fields), tags: Tags.new(tags: tags, config: configuration).to_h, name: configuration.measurement_name, time: timestamp.utc, diff --git a/lib/influxdb/rails/middleware/action_mailer_subscriber.rb b/lib/influxdb/rails/middleware/action_mailer_subscriber.rb index 8100c2e..d9271cb 100644 --- a/lib/influxdb/rails/middleware/action_mailer_subscriber.rb +++ b/lib/influxdb/rails/middleware/action_mailer_subscriber.rb @@ -6,7 +6,7 @@ module Middleware class ActionMailerSubscriber < Subscriber # :nodoc: private - def values + def fields { value: 1 } end diff --git a/lib/influxdb/rails/middleware/active_job_subscriber.rb b/lib/influxdb/rails/middleware/active_job_subscriber.rb index 5f92a03..0f75878 100644 --- a/lib/influxdb/rails/middleware/active_job_subscriber.rb +++ b/lib/influxdb/rails/middleware/active_job_subscriber.rb @@ -13,7 +13,7 @@ class ActiveJobSubscriber < Subscriber # :nodoc: }.freeze private_constant :JOB_STATE - def values + def fields { value: value, } diff --git a/lib/influxdb/rails/middleware/active_record_subscriber.rb b/lib/influxdb/rails/middleware/active_record_subscriber.rb index c404616..f3eed2d 100644 --- a/lib/influxdb/rails/middleware/active_record_subscriber.rb +++ b/lib/influxdb/rails/middleware/active_record_subscriber.rb @@ -7,7 +7,7 @@ module Middleware class ActiveRecordSubscriber < Subscriber # :nodoc: private - def values + def fields { value: duration, record_count: payload[:record_count], diff --git a/lib/influxdb/rails/middleware/block_instrumentation_subscriber.rb b/lib/influxdb/rails/middleware/block_instrumentation_subscriber.rb index 9569fe2..bcfbb91 100644 --- a/lib/influxdb/rails/middleware/block_instrumentation_subscriber.rb +++ b/lib/influxdb/rails/middleware/block_instrumentation_subscriber.rb @@ -6,10 +6,10 @@ module Middleware class BlockInstrumentationSubscriber < Subscriber private - def values + def fields { value: duration, - }.merge(payload[:values].to_h) + }.merge(payload[:fields].to_h) end def tags diff --git a/lib/influxdb/rails/middleware/render_subscriber.rb b/lib/influxdb/rails/middleware/render_subscriber.rb index 9db6a67..78679ac 100644 --- a/lib/influxdb/rails/middleware/render_subscriber.rb +++ b/lib/influxdb/rails/middleware/render_subscriber.rb @@ -6,7 +6,7 @@ module Middleware class RenderSubscriber < Subscriber # :nodoc: private - def values + def fields { value: duration, count: payload[:count], diff --git a/lib/influxdb/rails/middleware/request_subscriber.rb b/lib/influxdb/rails/middleware/request_subscriber.rb index f6558b5..612fa3d 100644 --- a/lib/influxdb/rails/middleware/request_subscriber.rb +++ b/lib/influxdb/rails/middleware/request_subscriber.rb @@ -23,7 +23,7 @@ def tags } end - def values + def fields { controller: duration, view: (payload[:view_runtime] || 0).ceil, diff --git a/lib/influxdb/rails/middleware/sql_subscriber.rb b/lib/influxdb/rails/middleware/sql_subscriber.rb index bfd970d..982ed21 100644 --- a/lib/influxdb/rails/middleware/sql_subscriber.rb +++ b/lib/influxdb/rails/middleware/sql_subscriber.rb @@ -7,7 +7,7 @@ module Middleware class SqlSubscriber < Subscriber # :nodoc: private - def values + def fields { value: duration, sql: InfluxDB::Rails::Sql::Normalizer.new(payload[:sql]).perform, diff --git a/lib/influxdb/rails/middleware/subscriber.rb b/lib/influxdb/rails/middleware/subscriber.rb index b2042e3..2273879 100644 --- a/lib/influxdb/rails/middleware/subscriber.rb +++ b/lib/influxdb/rails/middleware/subscriber.rb @@ -39,7 +39,7 @@ def write def metric InfluxDB::Rails::Metric.new( - values: values, + fields: fields, tags: tags, configuration: configuration, timestamp: finish @@ -50,7 +50,7 @@ def tags raise NotImplementedError, "must be implemented in subclass" end - def values + def fields raise NotImplementedError, "must be implemented in subclass" end diff --git a/lib/influxdb/rails/railtie.rb b/lib/influxdb/rails/railtie.rb index b6507e3..d425609 100644 --- a/lib/influxdb/rails/railtie.rb +++ b/lib/influxdb/rails/railtie.rb @@ -13,7 +13,7 @@ class Railtie < ::Rails::Railtie # :nodoc: ActiveSupport.on_load(:action_controller) do before_action do current = InfluxDB::Rails.current - current.values = { request_id: request.request_id } if request.respond_to?(:request_id) + current.fields = { request_id: request.request_id } if request.respond_to?(:request_id) end end diff --git a/spec/integration/influxdb_rails_sends_metrics_spec.rb b/spec/integration/influxdb_rails_sends_metrics_spec.rb index 5361842..b1a3c98 100644 --- a/spec/integration/influxdb_rails_sends_metrics_spec.rb +++ b/spec/integration/influxdb_rails_sends_metrics_spec.rb @@ -10,7 +10,7 @@ body: "rails,hook=block_instrumentation,location=raw,name=name,server=hostname value=1i 1514797200000000000" ) - InfluxDB::Rails.instrument "name", values: { value: 1 } + InfluxDB::Rails.instrument "name", fields: { value: 1 } assert_requested(request, times: 1) end diff --git a/spec/requests/action_controller_metrics_spec.rb b/spec/requests/action_controller_metrics_spec.rb index c412012..6fd037b 100644 --- a/spec/requests/action_controller_metrics_spec.rb +++ b/spec/requests/action_controller_metrics_spec.rb @@ -24,7 +24,7 @@ format: :html, http_method: "GET" ), - values: a_hash_including( + fields: a_hash_including( view: be_between(1, 500), db: be_between(1, 500), controller: be_between(1, 500) @@ -46,8 +46,11 @@ tags_middleware: :tags_middleware ), fields: a_hash_including( - additional_value: :value, - request_id: :request_id + additional_field: :value, + request_id: :request_id, + view: be_between(1, 500), + db: be_between(1, 500), + controller: be_between(1, 500) ) ) end diff --git a/spec/requests/action_mailer_deliver_metrics_spec.rb b/spec/requests/action_mailer_deliver_metrics_spec.rb index 6187d07..c8f25de 100644 --- a/spec/requests/action_mailer_deliver_metrics_spec.rb +++ b/spec/requests/action_mailer_deliver_metrics_spec.rb @@ -23,7 +23,7 @@ mailer: "MetricMailer" ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: 1 ) diff --git a/spec/requests/action_view_collection_metrics_spec.rb b/spec/requests/action_view_collection_metrics_spec.rb index 0510fa9..2f88b46 100644 --- a/spec/requests/action_view_collection_metrics_spec.rb +++ b/spec/requests/action_view_collection_metrics_spec.rb @@ -23,7 +23,7 @@ filename: include("spec/support/views/metrics/_item.html.erb") ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, count: 3, request_id: :request_id, value: be_between(1, 500) diff --git a/spec/requests/action_view_partial_metrics_spec.rb b/spec/requests/action_view_partial_metrics_spec.rb index 8d0b3bf..d388165 100644 --- a/spec/requests/action_view_partial_metrics_spec.rb +++ b/spec/requests/action_view_partial_metrics_spec.rb @@ -22,7 +22,7 @@ filename: include("spec/support/views/metrics/_item.html.erb") ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: be_between(1, 500) ) diff --git a/spec/requests/action_view_template_metrics_spec.rb b/spec/requests/action_view_template_metrics_spec.rb index 3040fc6..e657000 100644 --- a/spec/requests/action_view_template_metrics_spec.rb +++ b/spec/requests/action_view_template_metrics_spec.rb @@ -22,7 +22,7 @@ filename: include("spec/support/views/metrics/index.html.erb") ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: be_between(1, 500) ) diff --git a/spec/requests/active_job_enqueue_metrics_spec.rb b/spec/requests/active_job_enqueue_metrics_spec.rb index c76fc94..d52167d 100644 --- a/spec/requests/active_job_enqueue_metrics_spec.rb +++ b/spec/requests/active_job_enqueue_metrics_spec.rb @@ -25,7 +25,7 @@ state: "queued" ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: 1 ) diff --git a/spec/requests/active_record_instantiation_metrics_spec.rb b/spec/requests/active_record_instantiation_metrics_spec.rb index 16e079f..b043699 100644 --- a/spec/requests/active_record_instantiation_metrics_spec.rb +++ b/spec/requests/active_record_instantiation_metrics_spec.rb @@ -24,7 +24,7 @@ class_name: "Metric" ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: be_between(1, 500), record_count: 1 diff --git a/spec/requests/active_record_sql_metrics_spec.rb b/spec/requests/active_record_sql_metrics_spec.rb index 6e43c93..2ed0c4d 100644 --- a/spec/requests/active_record_sql_metrics_spec.rb +++ b/spec/requests/active_record_sql_metrics_spec.rb @@ -26,7 +26,7 @@ operation: "INSERT" ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: be_between(1, 500), sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)" @@ -47,7 +47,7 @@ operation: "INSERT" ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, value: be_between(1, 500), sql: "INSERT INTO \"metrics\" (\"name\", \"created_at\", \"updated_at\") VALUES (xxx)" diff --git a/spec/requests/block_inistrumentation_spec.rb b/spec/requests/block_inistrumentation_spec.rb index 7d260a8..bd05c0e 100644 --- a/spec/requests/block_inistrumentation_spec.rb +++ b/spec/requests/block_inistrumentation_spec.rb @@ -23,9 +23,9 @@ name: "name" ), fields: a_hash_including( - additional_value: :value, + additional_field: :value, request_id: :request_id, - block_value: :block_value, + block_field: :block_value, value: be_between(1, 500) ) ) diff --git a/spec/requests/context_spec.rb b/spec/requests/context_spec.rb index 4a1a297..d405186 100644 --- a/spec/requests/context_spec.rb +++ b/spec/requests/context_spec.rb @@ -12,7 +12,7 @@ ) expect(InfluxDB::Rails.current.tags).to be_empty - expect(InfluxDB::Rails.current.values).to be_empty + expect(InfluxDB::Rails.current.fields).to be_empty end it "resets the context after a request when exceptioni occurs" do @@ -22,6 +22,6 @@ expect_no_metric(hook: "process_action") expect(InfluxDB::Rails.current.tags).to be_empty - expect(InfluxDB::Rails.current.values).to be_empty + expect(InfluxDB::Rails.current.fields).to be_empty end end diff --git a/spec/support/rails6/app.rb b/spec/support/rails6/app.rb index f1b4cf2..0d0a377 100644 --- a/spec/support/rails6/app.rb +++ b/spec/support/rails6/app.rb @@ -56,12 +56,12 @@ class MetricsController < ApplicationController prepend_view_path File.join(__dir__, "..", "views") before_action do - InfluxDB::Rails.current.values = { additional_value: :value } + InfluxDB::Rails.current.fields = { additional_field: :value } InfluxDB::Rails.current.tags = { additional_tag: :value } end def index - InfluxDB::Rails.instrument "name", tags: { block_tag: :block_tag }, values: { block_value: :block_value } do + InfluxDB::Rails.instrument "name", tags: { block_tag: :block_tag }, fields: { block_field: :block_value } do 1 + 1 end MetricJob.perform_later diff --git a/spec/support/rails7/app.rb b/spec/support/rails7/app.rb index f1b4cf2..0d0a377 100644 --- a/spec/support/rails7/app.rb +++ b/spec/support/rails7/app.rb @@ -56,12 +56,12 @@ class MetricsController < ApplicationController prepend_view_path File.join(__dir__, "..", "views") before_action do - InfluxDB::Rails.current.values = { additional_value: :value } + InfluxDB::Rails.current.fields = { additional_field: :value } InfluxDB::Rails.current.tags = { additional_tag: :value } end def index - InfluxDB::Rails.instrument "name", tags: { block_tag: :block_tag }, values: { block_value: :block_value } do + InfluxDB::Rails.instrument "name", tags: { block_tag: :block_tag }, fields: { block_field: :block_value } do 1 + 1 end MetricJob.perform_later