{"id":18103165,"url":"https://github.com/prometheus/prometheus_api_client_ruby","last_synced_at":"2025-11-07T05:05:25.442Z","repository":{"id":23558000,"uuid":"98107238","full_name":"prometheus/prometheus_api_client_ruby","owner":"prometheus","description":"A Ruby library for reading metrics stored on a Prometheus server","archived":false,"fork":false,"pushed_at":"2024-11-21T17:21:12.000Z","size":85,"stargazers_count":37,"open_issues_count":0,"forks_count":23,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-12-10T00:42:08.889Z","etag":null,"topics":["authentication-proxy","prometheus-api","prometheus-client","prometheus-client-library","prometheus-ruby-client","ruby","ruby-client"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prometheus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-23T15:28:20.000Z","updated_at":"2024-11-21T17:21:33.000Z","dependencies_parsed_at":"2024-06-15T17:01:57.577Z","dependency_job_id":"da268a01-3988-4d59-9510-3d6b7e6382a7","html_url":"https://github.com/prometheus/prometheus_api_client_ruby","commit_stats":null,"previous_names":["yaacov/prometheus_api_client_ruby"],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prometheus%2Fprometheus_api_client_ruby","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prometheus%2Fprometheus_api_client_ruby/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prometheus%2Fprometheus_api_client_ruby/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prometheus%2Fprometheus_api_client_ruby/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prometheus","download_url":"https://codeload.github.com/prometheus/prometheus_api_client_ruby/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230400616,"owners_count":18219831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication-proxy","prometheus-api","prometheus-client","prometheus-client-library","prometheus-ruby-client","ruby","ruby-client"],"created_at":"2024-10-31T22:10:43.913Z","updated_at":"2025-11-07T05:05:25.398Z","avatar_url":"https://github.com/prometheus.png","language":"Ruby","readme":"# Prometheus API Ruby Client\n\n[![Gem Version][1]](http://badge.fury.io/rb/prometheus-api-client)\n[![Build Status][3]](https://codeclimate.com/github/prometheus/prometheus_api_client_ruby)\n[![Coverage Status][4]](https://coveralls.io/github/prometheus/prometheus_api_client_ruby?branch=master)\n\nA Ruby library for reading metrics stored on a Prometheus server.\n\n## Install\n\n```\ngem install prometheus-api-client\n```\n\n## Usage\n\n### Overview\n\n```ruby\nrequire 'prometheus/api_client'\n\n# return a client for host http://localhost:9090/api/v1/\nprometheus = Prometheus::ApiClient.client\n```\n\n#### Changing server hostname\n\n```ruby\n# return a client for host http://example.com:9090/api/v1/\nprometheus = Prometheus::ApiClient.client(url: 'http://example.com:9090')\n```\n\n#### Authentication proxy\n\nIf an authentication proxy ( e.g. oauth2 ) is used in a layer above the\nprometheus REST server, this client can use ssl and authentication headears.\n\n```ruby\n# return a client for host https://example.com/api/v1/ using a Bearer token \"TopSecret\"\nprometheus = Prometheus::ApiClient.client(url:         'https://example.com:443',\n                                          credentials: { token: 'TopSecret' })\n```\n\n#### Low level calls\n\n###### query\n\n```ruby\n\n# send a low level get request to server\nprometheus.get(\n  'query_range',\n  query: 'sum(container_cpu_usage_seconds_total' \\\n         '{container_name=\"prometheus-hgv4s\",job=\"kubernetes-nodes\"})',\n  start: '2015-07-01T20:10:30.781Z',\n  end:   '2015-07-02T20:10:30.781Z',\n  step:  '120s',\n)\n```\n```\n# response from server is a low level response struct including\n# fields like: method, body and request_headers\n# usually users will not need to use this low level calls\n   ...\n   method=:get,\n   body=\"{\\\"status\\\":\\\"success\\\",\n   ...\n```\n#### High level calls\n\n###### query\n\n```ruby\n\n# send a query request to server\nprometheus.query(\n  query: 'sum(container_cpu_usage_seconds_total' \\\n         '{container_name=\"prometheus-hgv4s\",job=\"kubernetes-nodes\"})',\n  time:  '2015-07-01T20:10:30.781Z',\n)\n```\n```\n# response from server:\n{\"resultType\"=\u003e\"vector\", \"result\"=\u003e[{\"metric\"=\u003e{}, \"value\"=\u003e[1502350741.161, \"6606.310387038\"]}]}\n```\n###### query_range\n\n```ruby\n# send a query_range request to server\nprometheus.query_range(\n  query: 'sum(container_cpu_usage_seconds_total' \\\n         '{container_name=\"prometheus-hgv4s\",job=\"kubernetes-nodes\"})',\n  start: '2015-07-01T20:10:30.781Z',\n  end:   '2015-07-02T20:10:30.781Z',\n  step:  '120s',\n)\n```\n```\n# response from server:\n{\"resultType\"=\u003e\"matrix\",\n \"result\"=\u003e\n  [{\"metric\"=\u003e\n     {\"__name__\"=\u003e\"container_cpu_usage_seconds_total\",\n      \"beta_kubernetes_io_arch\"=\u003e\"amd64\",\n      \"beta_kubernetes_io_os\"=\u003e\"linux\",\n      \"cpu\"=\u003e\"cpu00\",\n      \"id\"=\u003e\"/\",\n      \"instance\"=\u003e\"example.com\",\n      \"job\"=\u003e\"kubernetes-cadvisor\",\n      \"kubernetes_io_hostname\"=\u003e\"example.com\",\n      \"region\"=\u003e\"infra\",\n      \"zone\"=\u003e\"default\"},\n    \"values\"=\u003e[[1502086230.781, \"51264.830099022\"],\n               [1502086470.781, \"51277.367732154\"]]},\n   {\"metric\"=\u003e\n     {\"__name__\"=\u003e\"container_cpu_usage_seconds_total\",\n      \"beta_kubernetes_io_arch\"=\u003e\"amd64\",\n      \"beta_kubernetes_io_os\"=\u003e\"linux\",\n      \"cpu\"=\u003e\"cpu01\",\n      \"id\"=\u003e\"/\",\n      \"instance\"=\u003e\"example.com\",\n      \"job\"=\u003e\"kubernetes-cadvisor\",\n      \"kubernetes_io_hostname\"=\u003e\"example.com\",\n      \"region\"=\u003e\"infra\",\n      \"zone\"=\u003e\"default\"},\n    \"values\"=\u003e[[1502086230.781, \"53879.644934689\"],\n               [1502086470.781, \"53892.665282065\"]]}]}\n```\n\n###### label\n\n```ruby\n# send a label request to server\nprometheus.label('__name__')\n```\n```\n# response from server:\n[\"APIServiceRegistrationController_adds\",\n \"APIServiceRegistrationController_depth\",\n ...\n\n```\n\n###### targets\n\n```ruby\n# send a targets request to server\nprometheus.targets()\n```\n```\n# response from server:\n{\"activeTargets\"=\u003e\n  [{\"discoveredLabels\"=\u003e\n     {\"__address__\"=\u003e\"10.35.19.248:8443\",\n      \"__meta_kubernetes_endpoint_port_name\"=\u003e\"https\",\n      \"__meta_kubernetes_endpoint_port_protocol\"=\u003e\"TCP\",\n      \"__meta_kubernetes_endpoint_ready\"=\u003e\"true\",\n      \"__meta_kubernetes_endpoints_name\"=\u003e\"kubernetes\",\n      \"__meta_kubernetes_namespace\"=\u003e\"default\",\n      \"__meta_kubernetes_service_label_component\"=\u003e\"apiserver\",\n      \"__meta_kubernetes_service_label_provider\"=\u003e\"kubernetes\",\n      \"__meta_kubernetes_service_name\"=\u003e\"kubernetes\",\n      \"__metrics_path__\"=\u003e\"/metrics\",\n      \"__scheme__\"=\u003e\"https\",\n      \"job\"=\u003e\"kubernetes-apiservers\"},\n    \"labels\"=\u003e{\"instance\"=\u003e\"10.35.19.248:8443\", \"job\"=\u003e\"kubernetes-apiservers\"},\n    \"scrapeUrl\"=\u003e\"https://10.35.19.248:8443/metrics\",\n    \"lastError\"=\u003e\"\",\n    \"lastScrape\"=\u003e\"2017-08-10T07:35:40.919376413Z\",\n    \"health\"=\u003e\"up\"},\n    ...\n\n```\n\n## Tests\n\nInstall necessary development gems with `bundle install` and run tests with\nrspec:\n\n```bash\nrake\n```\n\n[1]: https://badge.fury.io/rb/prometheus-api-client.svg\n[2]: https://secure.travis-ci.org/yaacov/prometheus_api_client_ruby.svg\n[3]: https://codeclimate.com/github/yaacov/prometheus_api_client_ruby.svg\n[4]: https://coveralls.io/repos/github/yaacov/prometheus_api_client_ruby/badge.svg\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprometheus%2Fprometheus_api_client_ruby","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprometheus%2Fprometheus_api_client_ruby","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprometheus%2Fprometheus_api_client_ruby/lists"}