# Add to routes.rb: get '/metrics', to: 'metrics#index'
class MetricsController < ApplicationController
    def index
      metrics = Prometheus::Client.registry.metrics.map do |metric|
        metric_values = metric.values
        metric_values.map do |labels, value|
          label_str = labels.map { |k, v| "#{k}=\"#{v}\"" }.join(',')
          "#{metric.name}{#{label_str}} #{value}\n"
        end.join("\n")
      end.join("\n")

      render plain: metrics
    end
  end

  
# # Sample config for Prometheus.

# global:
#   scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
#   evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
#   # scrape_timeout is set to the global default (10s).

#   # Attach these labels to any time series or alerts when communicating with
#   # external systems (federation, remote storage, Alertmanager).
#   external_labels:
#       monitor: 'example'

# # Alertmanager configuration
# alerting:
#   alertmanagers:
#   - static_configs:
#     - targets: ['localhost:9093']

# # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
# rule_files:
#   # - "first_rules.yml"
#   # - "second_rules.yml"

# # A scrape configuration containing exactly one endpoint to scrape:
# # Here it's Prometheus itself.
# scrape_configs:
#   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
#   - job_name: 'mapp_rails'

#     # Override the global default and scrape targets from this job every 5 seconds.
#     scrape_interval: 5s
#     scrape_timeout: 5s

#     # metrics_path defaults to '/metrics'
#     # scheme defaults to 'http'.

#     static_configs:
#       - targets: ['localhost:3000']
#   - job_name: node
#     # If prometheus-node-exporter is installed, grab stats about the local
#     # machine by default.
#     static_configs:
#       - targets: ['localhost:9100']
