discourse / prometheus_exporter

A framework for collecting and aggregating prometheus metrics
MIT License
525 stars 153 forks source link

Version 2.0.1 fails to start with NameError on PeriodicStats #222

Closed spiderpug closed 2 years ago

spiderpug commented 2 years ago

This morning we updated to prometheus_exporter 2.0.1 but after doing so, the service no longer starts properly.

To Reproduce

Stacktrace:

bundler: failed to load command: prometheus_exporter (/home/deploy/releases/20220224115715Z/vendor/bundle/ruby/2.6.0/bin/prometheus_exporter)
/home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/lib/prometheus_exporter/instrumentation/unicorn.rb:11:in `<module:Instrumentation>': uninitialized constant PrometheusExporter::Instrumentation::PeriodicStats (NameError)
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/lib/prometheus_exporter/instrumentation/unicorn.rb:9:in `<top (required)>'
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/lib/prometheus_exporter/server/runner.rb:4:in `require_relative'
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/lib/prometheus_exporter/server/runner.rb:4:in `<top (required)>'
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/lib/prometheus_exporter/server.rb:15:in `require_relative'
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/lib/prometheus_exporter/server.rb:15:in `<top (required)>'
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/bin/prometheus_exporter:9:in `require_relative'
        from /home/deploy/shared/vendor/bundle/ruby/2.6.0/gems/prometheus_exporter-2.0.1/bin/prometheus_exporter:9:in `<top (required)>'
        from /home/deploy/releases/20220224115715Z/vendor/bundle/ruby/2.6.0/bin/prometheus_exporter:23:in `load'
        from /home/deploy/releases/20220224115715Z/vendor/bundle/ruby/2.6.0/bin/prometheus_exporter:23:in `<top (required)>'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/cli/exec.rb:63:in `load'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/cli/exec.rb:63:in `kernel_load'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/cli/exec.rb:28:in `run'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/cli.rb:474:in `exec'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/cli.rb:30:in `dispatch'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/cli.rb:24:in `start'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/exe/bundle:49:in `block in <top (required)>'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/lib/bundler/friendly_errors.rb:128:in `with_friendly_errors'
        from /home/deploy/.gem/ruby/2.6.0/gems/bundler-2.2.21/exe/bundle:37:in `<top (required)>'
        from /usr/local/bin/bundle:23:in `load'
        from /usr/local/bin/bundle:23:in `<main>'
SamSaffron commented 2 years ago

I am on the fence about this @spiderpug / @CvX

All the code samples say:

require 'prometheus_exporter/instrumentation'

Nothing is recommending

require 'prometheus_exporter/instrumentation/unicorn'

https://github.com/discourse/prometheus_exporter/blob/e0d664b80c4b11cc9035e46bed293d3236d3044b/lib/prometheus_exporter/instrumentation.rb#L4-L4

SamSaffron commented 2 years ago

Similarly this is not relative requiring Base

https://github.com/discourse/prometheus_exporter/blob/e0d664b80c4b11cc9035e46bed293d3236d3044b/lib/prometheus_exporter/metric/gauge.rb#L1-L4

n-rodriguez commented 2 years ago

@SamSaffron it comes from here :

https://github.com/discourse/prometheus_exporter/blob/e0d664b80c4b11cc9035e46bed293d3236d3044b/lib/prometheus_exporter/server/runner.rb#L4

I removed this line and it works

SamSaffron commented 2 years ago

I see @n-rodriguez fixed this per #225 , new release is coming out shortly.