2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Copyright 2015 The Prometheus Authors
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Licensed under the Apache License, Version 2.0 (the "License");
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// you may not use this file except in compliance with the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You may obtain a copy of the License at
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// http://www.apache.org/licenses/LICENSE-2.0
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Unless required by applicable law or agreed to in writing, software
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// distributed under the License is distributed on an "AS IS" BASIS,
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// See the License for the specific language governing permissions and
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// limitations under the License.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-10-03 04:35:24 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//go:build (linux || openbsd) && !nointerrupts
  
						 
					
						
							
								
									
										
										
										
											2016-01-21 15:09:24 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// +build linux openbsd
  
						 
					
						
							
								
									
										
										
										
											2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// +build !nointerrupts
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  collector  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-12-31 08:19:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
									
										
										
										
											2024-11-10 02:58:03 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"log/slog" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-14 07:17:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/alecthomas/kingpin/v2" 
							 
						 
					
						
							
								
									
										
										
										
											2019-12-31 08:19:37 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"github.com/prometheus/client_golang/prometheus" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
									
										
										
										
											2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  interruptsCollector  struct  {  
						 
					
						
							
								
									
										
										
										
											2024-07-14 07:17:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									desc          typedDesc 
							 
						 
					
						
							
								
									
										
										
										
											2024-09-11 01:51:28 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									logger        * slog . Logger 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-14 07:17:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									nameFilter    deviceFilter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									includeZeros  bool 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  init ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-09-28 06:06:26 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									registerCollector ( "interrupts" ,  defaultDisabled ,  NewInterruptsCollector ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2024-07-14 07:17:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									interruptsInclude       =  kingpin . Flag ( "collector.interrupts.name-include" ,  "Regexp of interrupts name to include (mutually exclusive to --collector.interrupts.name-exclude)." ) . String ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									interruptsExclude       =  kingpin . Flag ( "collector.interrupts.name-exclude" ,  "Regexp of interrupts name to exclude (mutually exclusive to --collector.interrupts.name-include)." ) . String ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									interruptsIncludeZeros  =  kingpin . Flag ( "collector.interrupts.include-zeros" ,  "Include interrupts that have a zero value" ) . Default ( "true" ) . Bool ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-28 08:44:53 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// NewInterruptsCollector returns a new Collector exposing interrupts stats.
  
						 
					
						
							
								
									
										
										
										
											2024-09-11 01:51:28 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  NewInterruptsCollector ( logger  * slog . Logger )  ( Collector ,  error )  {  
						 
					
						
							
								
									
										
										
										
											2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									return  & interruptsCollector { 
							 
						 
					
						
							
								
									
										
										
										
											2016-12-28 06:21:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										desc :  typedDesc { prometheus . NewDesc ( 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-17 08:55:55 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											namespace + "_interrupts_total" , 
							 
						 
					
						
							
								
									
										
										
										
											2016-12-28 06:21:31 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											"Interrupt details." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											interruptLabelNames ,  nil , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										) ,  prometheus . CounterValue } , 
							 
						 
					
						
							
								
									
										
										
										
											2024-07-14 07:17:20 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										logger :        logger , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										nameFilter :    newDeviceFilter ( * interruptsExclude ,  * interruptsInclude ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										includeZeros :  * interruptsIncludeZeros , 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-01 22:55:46 -08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ,  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}