39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| # rubocop:disable Rails/ApplicationController
 | |
| class MetricsController < ActionController::Base
 | |
|   include RequiresWhitelistedMonitoringClient
 | |
| 
 | |
|   protect_from_forgery with: :exception, prepend: true
 | |
| 
 | |
|   def index
 | |
|     response = if Gitlab::Metrics.prometheus_metrics_enabled?
 | |
|                  metrics_service.metrics_text
 | |
|                else
 | |
|                  help_page = help_page_url('administration/monitoring/prometheus/gitlab_metrics',
 | |
|                                            anchor: 'gitlab-prometheus-metrics'
 | |
|                                           )
 | |
|                  "# Metrics are disabled, see: #{help_page}\n"
 | |
|                end
 | |
| 
 | |
|     render plain: response, content_type: 'text/plain; version=0.0.4'
 | |
|   end
 | |
| 
 | |
|   def system
 | |
|     render json: system_metrics
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def metrics_service
 | |
|     @metrics_service ||= MetricsService.new
 | |
|   end
 | |
| 
 | |
|   def system_metrics
 | |
|     Gitlab::Metrics::System.summary.merge(
 | |
|       worker_id: ::Prometheus::PidProvider.worker_id
 | |
|     )
 | |
|   end
 | |
| end
 | |
| # rubocop:enable Rails/ApplicationController
 |