class Influxer::Metrics
Base class for InfluxDB querying and writing
Constants
- TIME_FACTOR
Attributes
database[R]
precision[R]
retention_policy[R]
series[R]
tag_names[RW]
timestamp[RW]
Public Class Methods
all()
click to toggle source
rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize
# File lib/influxer/metrics/metrics.rb, line 107 def all if current_scope current_scope.clone else default_scoped end end
attributes(*attrs)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 45 def attributes(*attrs) attrs.each do |name| define_method("#{name}=") do |val| @attributes[name] = val end define_method(name.to_s) do @attributes[name] end end end
inherited(subclass)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 67 def inherited(subclass) subclass.set_series subclass.tag_names = tag_names.nil? ? [] : tag_names.dup end
new(attributes = {})
click to toggle source
Calls superclass method
Influxer::ActiveModel3::Model::new
# File lib/influxer/metrics/metrics.rb, line 151 def initialize(attributes = {}) @attributes = {} @persisted = false super end
quote(name)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 141 def quote(name) '"' + name.to_s.gsub(/\"/) { '\"' } + '"' end
quoted_series(val = @series, instance = nil, write: false)
click to toggle source
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize rubocop:disable Metrics/CyclomaticComplexity
# File lib/influxer/metrics/metrics.rb, line 118 def quoted_series(val = @series, instance = nil, write: false) case val when Regexp val.inspect when Proc quoted_series(val.call(instance), write: write) when Array if val.length > 1 "merge(#{val.map { |s| quoted_series(s, write: write) }.join(",")})" else quoted_series(val.first, write: write) end else # Only add retention policy when selecting points # and not writing if !write && retention_policy.present? [quote(@retention_policy), quote(val)].join(".") else quote(val) end end end
set_database(database)
click to toggle source
Use custom database for this metrics
# File lib/influxer/metrics/metrics.rb, line 78 def set_database(database) @database = database end
set_precision(precision)
click to toggle source
Use custom precision for this metrics
# File lib/influxer/metrics/metrics.rb, line 83 def set_precision(precision) @precision = precision end
set_retention_policy(policy_name)
click to toggle source
Use custom retention policy
# File lib/influxer/metrics/metrics.rb, line 73 def set_retention_policy(policy_name) @retention_policy = policy_name end
set_series(*args)
click to toggle source
rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize
# File lib/influxer/metrics/metrics.rb, line 89 def set_series(*args) if args.empty? matches = to_s.match(/^(.*)Metrics$/) @series = if matches.nil? superclass.respond_to?(:series) ? superclass.series : to_s.underscore else matches[1].split("::").join("_").underscore end elsif args.first.is_a?(Proc) @series = args.first else @series = args end end
tag?(name)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 63 def tag?(name) tag_names.include?(name.to_s) end
Public Instance Methods
client()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 195 def client Influxer.client end
dup()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 199 def dup self.class.new(@attributes) end
persisted?()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 187 def persisted? @persisted end
series(**options)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 191 def series(**options) self.class.quoted_series(self.class.series, self, **options) end
tag_names()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 213 def tag_names self.class.tag_names end
values()
click to toggle source
Returns hash with metrics values
# File lib/influxer/metrics/metrics.rb, line 204 def values @attributes.reject { |k, _| tag_names.include?(k.to_s) } end
write()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 157 def write raise MetricsError if persisted? return false if invalid? run_callbacks :write do write_point end self end
write!()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 168 def write! raise MetricsInvalid if invalid? write end
write_point()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 174 def write_point data = { values: values, tags: tags, timestamp: parsed_timestamp } write_with_config( unquote(series(write: true)), data ) @persisted = true end
Private Instance Methods
parsed_timestamp()
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 226 def parsed_timestamp quote_timestamp_for_write @timestamp, client end
unquote(name)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 230 def unquote(name) name.gsub(/(\A['"]|['"]\z)/, "") end
write_with_config(series, data)
click to toggle source
# File lib/influxer/metrics/metrics.rb, line 219 def write_with_config(series, data) client.write_point(series, data, self.class.precision, self.class.retention_policy, self.class.database) end