All Projects → yabeda-rb → yabeda-prometheus

yabeda-rb / yabeda-prometheus

Licence: MIT License
Adapter to expose metrics collected by Yabeda plugins to Prometheus

Programming Languages

ruby
36898 projects - #4 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to yabeda-prometheus

upf-epc
4G/5G Mobile Core User Plane
Stars: ✭ 97 (+25.97%)
Mutual labels:  prometheus
hastic
Hastic standalone
Stars: ✭ 37 (-51.95%)
Mutual labels:  prometheus
prometheus-httpd
Expose Prometheus metrics using inets httpd.
Stars: ✭ 21 (-72.73%)
Mutual labels:  prometheus
Kong-API-Manager
Kong API Manager with Prometheus And Graylog
Stars: ✭ 78 (+1.3%)
Mutual labels:  prometheus
KUR8
A visual overview of Kubernetes architecture and Prometheus metrics
Stars: ✭ 197 (+155.84%)
Mutual labels:  prometheus
Tplan
😃 T计划 是一个集成了任务队列、进程管理、爬虫部署、服务可视化监控、数据展示、在线编码、远程部署的通用系统。
Stars: ✭ 59 (-23.38%)
Mutual labels:  prometheus
magento2-prometheus-exporter
Simple Magento 2 Prometheus Exporter.
Stars: ✭ 40 (-48.05%)
Mutual labels:  prometheus
nvidia gpu exporter
Nvidia GPU exporter for prometheus using nvidia-smi binary
Stars: ✭ 85 (+10.39%)
Mutual labels:  prometheus
airflow-prometheus-exporter
Export Airflow metrics (from mysql) in prometheus format
Stars: ✭ 25 (-67.53%)
Mutual labels:  prometheus
postgres exporter
Postgres exporter
Stars: ✭ 14 (-81.82%)
Mutual labels:  prometheus
tilt-pitch
Simple replacement for the Tilt Hydrometer mobile apps and TiltPi with lots of features
Stars: ✭ 32 (-58.44%)
Mutual labels:  prometheus
dockerize-and-ansible
🐳 Build & Deploy the containerized Dev & Prod Env
Stars: ✭ 20 (-74.03%)
Mutual labels:  prometheus
remote-storage-wars
Prometheus remote storages playground
Stars: ✭ 22 (-71.43%)
Mutual labels:  prometheus
dockerX
Examples of amazing Docker/Docker-Compose/Docker Swarm technologies
Stars: ✭ 17 (-77.92%)
Mutual labels:  prometheus
aioprometheus
A Prometheus Python client library for asyncio-based applications
Stars: ✭ 114 (+48.05%)
Mutual labels:  prometheus
k3s-gitops
GitOps principles to define kubernetes cluster state via code
Stars: ✭ 103 (+33.77%)
Mutual labels:  prometheus
prometheus-pingdom-exporter
prometheus-pingdom-exporter exports Pingdom metrics to Prometheus
Stars: ✭ 46 (-40.26%)
Mutual labels:  prometheus
starboard-exporter
A standalone exporter for vulnerability reports and other CRs created by Starboard.
Stars: ✭ 22 (-71.43%)
Mutual labels:  prometheus
ginprom
📡 Prometheus metrics exporter for Gin.
Stars: ✭ 110 (+42.86%)
Mutual labels:  prometheus
opentsdb exporter
Prometheus exporter for OpenTSDB
Stars: ✭ 20 (-74.03%)
Mutual labels:  prometheus

Yabeda::Prometheus

Gem Version

Adapter for easy exporting your collected metrics from your application to the Prometheus!

Sponsored by Evil Martians

One more? Why not X?

Installation

Add this line to your application's Gemfile:

gem 'yabeda-prometheus'

And then execute:

$ bundle

Usage

  1. Exporting from running web servers:

    Place following in your config.ru before running your application:

    use Yabeda::Prometheus::Exporter

    Metrics will be available on /metrics path (configured by :path option).

    Also you can mount it in Rails application routes as standalone Rack application.

  2. Run web-server from long-running processes (delayed jobs, …):

    Yabeda::Prometheus::Exporter.start_metrics_server!

    WEBrick will be launched in separate thread and will serve metrics on /metrics path.

    ATTENTION: Starting from Ruby 3.0 WEBrick isn't included with Ruby by default. You should either add gem "webrick" into your Gemfile or launch Yabeda::Prometheus::Exporter.rack_app with application server of your choice.

    See yabeda-sidekiq for example.

    Listening address is configured via PROMETHEUS_EXPORTER_BIND env variable (default is 0.0.0.0).

    Port is configured by PROMETHEUS_EXPORTER_PORT or PORT variables (default is 9394).

  3. Use push gateway for short living things (rake tasks, cron jobs, …):

    Yabeda::Prometheus.push_gateway.add(Yabeda::Prometheus.registry)

    Address of push gateway is configured with PROMETHEUS_PUSH_GATEWAY env variable.

Multi-process server support

To use Unicorn or Puma in clustered mode, you'll want to set up underlying prometheus-client gem to use DirectFileStore, which aggregates metrics across the processes.

Prometheus::Client.config.data_store = Prometheus::Client::DataStores::DirectFileStore.new(dir: '/tmp/prometheus_direct_file_store')

See more information at prometheus-client README.

Aggregation settings

You can specify aggregation policy in gauges declaration:

group :some do
  gauge :tasks do
    comment "Number of test tasks"
    aggregation :max
  end
end

Debugging metrics

  • Time of already collected metrics rendering in response for Prometheus: yabeda_prometheus_render_duration.

These are only enabled in debug mode. See Yabeda debugging metrics on how to enable it (e.g. by specifying YABEDA_DEBUG=true in your environment variables).

Exporter logs

By default, exporter web server logs are disabled. For example, you can plug in a Rails logger:

Yabeda::Prometheus::Exporter.start_metrics_server! logger: Rails.application.logger

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/yabeda-rb/yabeda-prometheus.

Releasing

  1. Bump version number in lib/yabeda/prometheus/version.rb

    In case of pre-releases keep in mind rubygems/rubygems#3086 and check version with command like Gem::Version.new(Yabeda::Prometheus::VERSION).to_s

  2. Fill CHANGELOG.md with missing changes, add header with version and date.

  3. Make a commit:

    git add lib/yabeda/prometheus/version.rb CHANGELOG.md
    version=$(ruby -r ./lib/yabeda/prometheus/version.rb -e "puts Gem::Version.new(Yabeda::Prometheus::VERSION)")
    git commit --message="${version}: " --edit
  4. Create annotated tag:

    git tag v${version} --annotate --message="${version}: " --edit --sign
  5. Fill version name into subject line and (optionally) some description (list of changes will be taken from changelog and appended automatically)

  6. Push it:

    git push --follow-tags
  7. GitHub Actions will create a new release, build and push gem into RubyGems! You're done!

License

The gem is available as open source under the terms of the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].