Class: Prometheus::ApiClient::Client
- Inherits:
-
Object
- Object
- Prometheus::ApiClient::Client
- Defined in:
- lib/prometheus/api_client/client.rb
Overview
Client contains the implementation for a Prometheus compatible api_client.
Direct Known Subclasses
Defined Under Namespace
Classes: RequestError
Constant Summary collapse
- DEFAULT_ARGS =
Default paramters for creating default client
{ url: 'http://localhost:9090', path: '/api/v1/', credentials: {}, options: { open_timeout: 2, timeout: 5, }, }.freeze
Instance Method Summary collapse
-
#faraday_headers(credentials) ⇒ Object
Helper function to evalueate the low level headers option.
-
#faraday_options(options) ⇒ Object
Helper function to create the args for the low level client.
-
#faraday_proxy(options) ⇒ Object
Helper function to evalueate the low level proxy option.
-
#faraday_verify_ssl(options) ⇒ Object
Helper function to evalueate the low level ssl option.
-
#get(command, options) ⇒ Object
Issues a get request to the low level client.
-
#initialize(options = {}) ⇒ Client
constructor
Create a Prometheus API client:.
-
#label(label, options = {}) ⇒ Object
Returns a list of label values for a provided label name:.
-
#query(options) ⇒ Object
Evaluates an instant query at a single point in time:.
-
#query_range(options) ⇒ Object
Evaluates an expression query over a range of time:.
-
#run_command(command, options) ⇒ Object
Issues a get request to the low level client, and evalueate the response JSON.
-
#targets(options = {}) ⇒ Object
Returns an overview of the current state of the Prometheus target discovery:.
Constructor Details
#initialize(options = {}) ⇒ Client
Create a Prometheus API client:
A default client is created if options is omitted.
37 38 39 40 41 42 43 |
# File 'lib/prometheus/api_client/client.rb', line 37 def initialize( = {}) = DEFAULT_ARGS.merge() @client = Faraday.new( (), ) end |
Instance Method Details
#faraday_headers(credentials) ⇒ Object
Helper function to evalueate the low level headers option
126 127 128 129 130 131 132 |
# File 'lib/prometheus/api_client/client.rb', line 126 def faraday_headers(credentials) return unless credentials[:token] { Authorization: 'Bearer ' + credentials[:token].to_s, } end |
#faraday_options(options) ⇒ Object
Helper function to create the args for the low level client
135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/prometheus/api_client/client.rb', line 135 def () { url: [:url] + [:path], proxy: faraday_proxy([:options]), ssl: faraday_verify_ssl([:options]), headers: faraday_headers([:credentials]), request: { open_timeout: [:options][:open_timeout], timeout: [:options][:timeout], }, } end |
#faraday_proxy(options) ⇒ Object
Helper function to evalueate the low level proxy option
111 112 113 |
# File 'lib/prometheus/api_client/client.rb', line 111 def faraday_proxy() [:http_proxy_uri] if [:http_proxy_uri] end |
#faraday_verify_ssl(options) ⇒ Object
Helper function to evalueate the low level ssl option
116 117 118 119 120 121 122 123 |
# File 'lib/prometheus/api_client/client.rb', line 116 def faraday_verify_ssl() return unless [:verify_ssl] { verify: [:verify_ssl] != OpenSSL::SSL::VERIFY_NONE, cert_store: [:ssl_cert_store], } end |
#get(command, options) ⇒ Object
Issues a get request to the low level client.
96 97 98 |
# File 'lib/prometheus/api_client/client.rb', line 96 def get(command, ) @client.get(command, ) end |
#label(label, options = {}) ⇒ Object
Returns a list of label values for a provided label name:
No options used.
91 92 93 |
# File 'lib/prometheus/api_client/client.rb', line 91 def label(label, = {}) run_command("label/#{label}/values", ) end |
#query(options) ⇒ Object
Evaluates an instant query at a single point in time:
The current server time is used if the time parameter is omitted.
55 56 57 |
# File 'lib/prometheus/api_client/client.rb', line 55 def query() run_command('query', ) end |
#query_range(options) ⇒ Object
Evaluates an expression query over a range of time:
The current server time is used if the time parameter is omitted.
71 72 73 |
# File 'lib/prometheus/api_client/client.rb', line 71 def query_range() run_command('query_range', ) end |
#run_command(command, options) ⇒ Object
Issues a get request to the low level client, and evalueate the response JSON.
102 103 104 105 106 107 108 |
# File 'lib/prometheus/api_client/client.rb', line 102 def run_command(command, ) response = get(command, ) JSON.parse(response.body)['data'] rescue raise RequestError, 'Bad response from server' end |
#targets(options = {}) ⇒ Object
Returns an overview of the current state of the Prometheus target discovery:
No options used.
81 82 83 |
# File 'lib/prometheus/api_client/client.rb', line 81 def targets( = {}) run_command('targets', ) end |