Class: Hawkular::Metrics::Client::Metrics
- Inherits:
-
Object
- Object
- Hawkular::Metrics::Client::Metrics
- Defined in:
- lib/hawkular/metrics/metric_api.rb
Overview
Base class for accessing metric definition and data of all types (counters, gauges, availabilities).
Direct Known Subclasses
Instance Method Summary collapse
-
#create(definition) ⇒ Object
Create new metric definition.
- #encode_params(params) ⇒ Object
-
#get(id) ⇒ MetricDefinition
Get metric definition by id.
-
#get_data(id, starts: nil, ends: nil, bucketDuration: nil, buckets: nil, percentiles: nil, limit: nil, order: nil) ⇒ Array[Hash]
Retrieve metric datapoints.
-
#get_data_by_tags(tags, starts: nil, ends: nil, bucketDuration: nil, buckets: nil) ⇒ Array[Hash]
Retrieve metric datapoints by tags.
-
#initialize(client, metric_type, resource) ⇒ Metrics
constructor
A new instance of Metrics.
-
#push_data(id, data) ⇒ Object
Push metric data.
-
#query(tags = nil) ⇒ Array[MetricDefinition]
Query metric definitions by tags.
-
#raw_data(ids, starts: nil, ends: nil, limit: nil, order: nil) ⇒ Array[Hash]
Retrieve raw data for multiple metrics.
-
#update_tags(metric_definition) ⇒ Object
update tags for given metric definition.
Constructor Details
#initialize(client, metric_type, resource) ⇒ Metrics
Returns a new instance of Metrics
110 111 112 113 114 115 |
# File 'lib/hawkular/metrics/metric_api.rb', line 110 def initialize(client, metric_type, resource) @client = client @type = metric_type @resource = resource @legacy_api = client.legacy_api end |
Instance Method Details
#create(definition) ⇒ Object
Create new metric definition
123 124 125 126 127 128 |
# File 'lib/hawkular/metrics/metric_api.rb', line 123 def create(definition) if definition.is_a?(Hawkular::Metrics::MetricDefinition) definition = definition.hash end @client.http_post('/' + @resource, definition) end |
#encode_params(params) ⇒ Object
223 224 225 |
# File 'lib/hawkular/metrics/metric_api.rb', line 223 def encode_params(params) URI.encode_www_form(params.select { |_k, v| !v.nil? }) end |
#get(id) ⇒ MetricDefinition
Get metric definition by id
143 144 145 146 |
# File 'lib/hawkular/metrics/metric_api.rb', line 143 def get(id) the_id = ERB::Util.url_encode id Hawkular::Metrics::MetricDefinition.new(@client.http_get("/#{@resource}/#{the_id}")) end |
#get_data(id, starts: nil, ends: nil, bucketDuration: nil, buckets: nil, percentiles: nil, limit: nil, order: nil) ⇒ Array[Hash]
Retrieve metric datapoints
187 188 189 190 191 192 |
# File 'lib/hawkular/metrics/metric_api.rb', line 187 def get_data(id, starts: nil, ends: nil, bucketDuration: nil, buckets: nil, percentiles: nil, limit: nil, order: nil) params = { start: starts, end: ends, bucketDuration: bucketDuration, buckets: buckets, percentiles: percentiles, limit: limit, order: order } get_data_helper(id, params) end |
#get_data_by_tags(tags, starts: nil, ends: nil, bucketDuration: nil, buckets: nil) ⇒ Array[Hash]
Retrieve metric datapoints by tags
214 215 216 217 218 219 220 221 |
# File 'lib/hawkular/metrics/metric_api.rb', line 214 def (, starts: nil, ends: nil, bucketDuration: nil, buckets:nil) params = { tags: @client.(), start: starts, end: ends, bucketDuration: bucketDuration, buckets: buckets } path = "/#{@resource}/" @legacy_api ? path << 'data/?' : path << 'stats/?' resp = @client.http_get(path + encode_params(params)) resp.is_a?(Array) ? resp : [] # API returns no content (empty Hash) instead of empty array end |
#push_data(id, data) ⇒ Object
Push metric data
168 169 170 171 172 173 174 |
# File 'lib/hawkular/metrics/metric_api.rb', line 168 def push_data(id, data) data = [data] unless data.is_a?(Array) uri = "/#{@resource}/#{ERB::Util.url_encode(id)}/" @legacy_api ? uri << 'data' : uri << 'raw' @client. data @client.http_post(uri, data) end |
#query(tags = nil) ⇒ Array[MetricDefinition]
Query metric definitions by tags
133 134 135 136 137 138 |
# File 'lib/hawkular/metrics/metric_api.rb', line 133 def query( = nil) = .nil? ? '' : "&tags=#{@client.()}" @client.http_get("/metrics/?type=#{@type}#{}").map do |g| Hawkular::Metrics::MetricDefinition.new(g) end end |
#raw_data(ids, starts: nil, ends: nil, limit: nil, order: nil) ⇒ Array[Hash]
Retrieve raw data for multiple metrics.
201 202 203 204 |
# File 'lib/hawkular/metrics/metric_api.rb', line 201 def raw_data(ids, starts: nil, ends: nil, limit: nil, order: nil) params = { ids: ids, start: starts, end: ends, limit: limit, order: order } @client.http_post("/#{@resource}/raw/query", params) end |
#update_tags(metric_definition) ⇒ Object
update tags for given metric definition
150 151 152 153 |
# File 'lib/hawkular/metrics/metric_api.rb', line 150 def (metric_definition) metric_definition_id = ERB::Util.url_encode metric_definition.id @client.http_put("/#{@resource}/#{metric_definition_id}/tags", metric_definition.hash[:tags]) end |