Class: Librato::Metrics::Client
- Inherits:
-
Object
- Object
- Librato::Metrics::Client
- Extended by:
- Forwardable
- Defined in:
- lib/librato/metrics/client.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#email ⇒ Object
Returns the value of attribute email.
Instance Method Summary collapse
-
#agent_identifier(*args) ⇒ Object
Provide agent identifier for the developer program.
- #annotator ⇒ Object
-
#api_endpoint ⇒ String
API endpoint to use for queries and direct persistence.
-
#api_endpoint=(endpoint) ⇒ Object
Set API endpoint for use with queries and direct persistence.
-
#authenticate(email, api_key) ⇒ Object
Authenticate for direct persistence.
-
#connection ⇒ Object
Current connection object.
- #custom_user_agent ⇒ Object
-
#custom_user_agent=(agent) ⇒ Object
Overrride user agent for this client’s connections.
-
#delete(*metric_names) ⇒ Object
Completely delete metrics with the given names.
-
#faraday_adapter ⇒ Object
Return current adapter this client will use.
-
#faraday_adapter=(adapter) ⇒ Object
Set faraday adapter this client will use.
-
#fetch(metric, options = {}) ⇒ Object
Query metric data.
-
#flush_authentication ⇒ Object
Purge current credentials and connection.
-
#list(options = {}) ⇒ Object
List currently existing metrics.
-
#new_queue(options = {}) ⇒ Queue
Create a new queue which uses this client.
-
#persistence ⇒ Symbol
Persistence type to use when saving metrics.
-
#persistence=(persist_method) ⇒ Object
Set persistence type to use when saving metrics.
-
#persister ⇒ Object
Current persister object.
-
#submit(args) ⇒ Object
Submit all queued metrics.
-
#update(metric, options = {}) ⇒ Object
Update metric with the given name.
Instance Attribute Details
#api_key ⇒ Object
Returns the value of attribute api_key.
9 10 11 |
# File 'lib/librato/metrics/client.rb', line 9 def api_key @api_key end |
#email ⇒ Object
Returns the value of attribute email.
9 10 11 |
# File 'lib/librato/metrics/client.rb', line 9 def email @email end |
Instance Method Details
#agent_identifier(*args) ⇒ Object
Provide agent identifier for the developer program. See: support.metrics.librato.com/knowledgebase/articles/53548-developer-program
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/librato/metrics/client.rb', line 22 def agent_identifier(*args) if args.length == 1 @agent_identifier = args.first elsif args.length == 3 @agent_identifier = "#{args[0]}/#{args[1]} (dev_id:#{args[2]})" elsif ![0,1,3].include?(args.length) raise ArgumentError, 'invalid arguments, see method documentation' end @agent_identifier ||= '' end |
#annotator ⇒ Object
33 34 35 |
# File 'lib/librato/metrics/client.rb', line 33 def annotator @annotator ||= Annotator.new(:client => self) end |
#api_endpoint ⇒ String
API endpoint to use for queries and direct persistence.
41 42 43 |
# File 'lib/librato/metrics/client.rb', line 41 def api_endpoint @api_endpoint ||= 'https://metrics-api.librato.com' end |
#api_endpoint=(endpoint) ⇒ Object
Set API endpoint for use with queries and direct persistence. Generally you should not need to set this as it will default to the current Librato Metrics endpoint.
50 51 52 |
# File 'lib/librato/metrics/client.rb', line 50 def api_endpoint=(endpoint) @api_endpoint = endpoint end |
#authenticate(email, api_key) ⇒ Object
Authenticate for direct persistence
58 59 60 61 |
# File 'lib/librato/metrics/client.rb', line 58 def authenticate(email, api_key) flush_authentication self.email, self.api_key = email, api_key end |
#connection ⇒ Object
Current connection object
65 66 67 68 69 70 |
# File 'lib/librato/metrics/client.rb', line 65 def connection # prevent successful creation if no credentials set raise CredentialsMissing unless (self.email and self.api_key) @connection ||= Connection.new(:client => self, :api_endpoint => api_endpoint, :adapter => faraday_adapter) end |
#custom_user_agent ⇒ Object
81 82 83 |
# File 'lib/librato/metrics/client.rb', line 81 def custom_user_agent @user_agent end |
#custom_user_agent=(agent) ⇒ Object
Overrride user agent for this client’s connections. If you are trying to specify an agent identifier for developer program, see #agent_identifier.
76 77 78 79 |
# File 'lib/librato/metrics/client.rb', line 76 def custom_user_agent=(agent) @user_agent = agent @connection = nil end |
#delete(*metric_names) ⇒ Object
Completely delete metrics with the given names. Be careful with this, this is instant and permanent.
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/librato/metrics/client.rb', line 93 def delete(*metric_names) raise(NoMetricsProvided, 'Metric name missing.') if metric_names.empty? metric_names.map!{|i| i.to_s} params = {:names => metric_names } connection.delete do |request| request.url connection.build_url("metrics") request.body = SmartJSON.write(params) end # expects 204, middleware will raise exception # otherwise. true end |
#faraday_adapter ⇒ Object
Return current adapter this client will use. Defaults to Metrics.faraday_adapter if set, otherwise Faraday.default_adapter
109 110 111 |
# File 'lib/librato/metrics/client.rb', line 109 def faraday_adapter @faraday_adapter ||= default_faraday_adapter end |
#faraday_adapter=(adapter) ⇒ Object
Set faraday adapter this client will use
114 115 116 |
# File 'lib/librato/metrics/client.rb', line 114 def faraday_adapter=(adapter) @faraday_adapter = adapter end |
#fetch(metric, options = {}) ⇒ Object
Query metric data
A full list of query parameters can be found in the API documentation: http://dev.librato.com/v1/get/gauges/:name
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/librato/metrics/client.rb', line 147 def fetch(metric, ={}) query = .dup if query[:start_time].respond_to?(:year) query[:start_time] = query[:start_time].to_i end if query[:end_time].respond_to?(:year) query[:end_time] = query[:end_time].to_i end unless query.empty? query[:resolution] ||= 1 end # expects 200 url = connection.build_url("metrics/#{metric}", query) response = connection.get(url) parsed = SmartJSON.read(response.body) # TODO: pagination support query.empty? ? parsed : parsed["measurements"] end |
#flush_authentication ⇒ Object
Purge current credentials and connection.
168 169 170 171 172 |
# File 'lib/librato/metrics/client.rb', line 168 def flush_authentication self.email = nil self.api_key = nil @connection = nil end |
#list(options = {}) ⇒ Object
List currently existing metrics
183 184 185 186 187 188 189 |
# File 'lib/librato/metrics/client.rb', line 183 def list(={}) query = {} query[:name] = [:name] if [:name] offset = 0 path = "metrics" Collection.paginated_metrics(connection, path, query) end |
#new_queue(options = {}) ⇒ Queue
Create a new queue which uses this client.
194 195 196 197 |
# File 'lib/librato/metrics/client.rb', line 194 def new_queue(={}) [:client] = self Queue.new() end |
#persistence ⇒ Symbol
Persistence type to use when saving metrics. Default is :direct.
203 204 205 |
# File 'lib/librato/metrics/client.rb', line 203 def persistence @persistence ||= :direct end |
#persistence=(persist_method) ⇒ Object
Set persistence type to use when saving metrics.
210 211 212 |
# File 'lib/librato/metrics/client.rb', line 210 def persistence=(persist_method) @persistence = persist_method end |
#persister ⇒ Object
Current persister object.
215 216 217 |
# File 'lib/librato/metrics/client.rb', line 215 def persister @queue ? @queue.persister : nil end |
#submit(args) ⇒ Object
Submit all queued metrics.
221 222 223 224 225 226 227 |
# File 'lib/librato/metrics/client.rb', line 221 def submit(args) @queue ||= Queue.new(:client => self, :skip_measurement_times => true, :clear_failures => true) @queue.add args @queue.submit end |
#update(metric, options = {}) ⇒ Object
Update metric with the given name.
237 238 239 240 241 242 |
# File 'lib/librato/metrics/client.rb', line 237 def update(metric, = {}) connection.put do |request| request.url connection.build_url("metrics/#{metric}") request.body = SmartJSON.write() end end |