dawarich/app/services/prometheus_metrics.rb
2025-07-26 12:14:08 +02:00

34 lines
904 B
Ruby

# frozen_string_literal: true
require 'net/http'
require 'uri'
class PrometheusMetrics
class << self
def fetch_data
return { success: false, error: 'Prometheus exporter not enabled' } unless prometheus_enabled?
host = ENV.fetch('PROMETHEUS_EXPORTER_HOST', 'localhost')
port = ENV.fetch('PROMETHEUS_EXPORTER_PORT', 9394)
begin
response = Net::HTTP.get_response(URI("http://#{host}:#{port}/metrics"))
if response.code == '200'
{ success: true, data: response.body }
else
{ success: false, error: "Prometheus server returned #{response.code}" }
end
rescue => e
Rails.logger.error "Failed to fetch Prometheus metrics: #{e.message}"
{ success: false, error: e.message }
end
end
private
def prometheus_enabled?
DawarichSettings.prometheus_exporter_enabled?
end
end
end