mirror of
				https://github.com/ClusterCockpit/cc-metric-collector.git
				synced 2025-10-31 00:55:06 +01:00 
			
		
		
		
	Add documentaion for IPMI receiver
This commit is contained in:
		| @@ -19,16 +19,16 @@ import ( | |||||||
| type IPMIReceiverClientConfig struct { | type IPMIReceiverClientConfig struct { | ||||||
|  |  | ||||||
| 	// Hostname the IPMI service belongs to | 	// Hostname the IPMI service belongs to | ||||||
| 	Protocol         string | 	Protocol         string            // Protocol / tool to use for IPMI sensor reading | ||||||
| 	DriverType       string | 	DriverType       string            // Out of band IPMI driver | ||||||
| 	Fanout           int | 	Fanout           int               // Maximum number of simultaneous IPMI connections | ||||||
| 	NumHosts         int | 	NumHosts         int               // Number of remote IPMI devices with the same configuration | ||||||
| 	IPMIHosts        string | 	IPMIHosts        string            // List of remote IPMI devices to communicate with | ||||||
| 	IPMI2HostMapping map[string]string | 	IPMI2HostMapping map[string]string // Mapping between IPMI device name and host name | ||||||
| 	Username         string | 	Username         string            // User name to authenticate with | ||||||
| 	Password         string | 	Password         string            // Password to use for authentication | ||||||
| 	CLIOptions       []string | 	CLIOptions       []string          // Additional command line options for ipmi-sensors | ||||||
| 	isExcluded       map[string]bool | 	isExcluded       map[string]bool   // is metric excluded | ||||||
| } | } | ||||||
|  |  | ||||||
| type IPMIReceiver struct { | type IPMIReceiver struct { | ||||||
| @@ -178,7 +178,6 @@ func (r *IPMIReceiver) doReadMetric() { | |||||||
| 				if err == nil { | 				if err == nil { | ||||||
| 					r.sink <- y | 					r.sink <- y | ||||||
| 				} | 				} | ||||||
|  |  | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| 			// Wait for command end | 			// Wait for command end | ||||||
| @@ -249,29 +248,30 @@ func NewIPMIReceiver(name string, config json.RawMessage) (Receiver, error) { | |||||||
| 	configJSON := struct { | 	configJSON := struct { | ||||||
| 		Type string `json:"type"` | 		Type string `json:"type"` | ||||||
|  |  | ||||||
| 		// Maximum number of simultaneous IPMI connections (default: 64) |  | ||||||
| 		Fanout int `json:"fanout,omitempty"` |  | ||||||
| 		// Out of band IPMI driver (default: LAN_2_0) |  | ||||||
| 		DriverType string `json:"driver_type,omitempty"` |  | ||||||
|  |  | ||||||
| 		// How often the IPMI sensor metrics should be read and send to the sink (default: 30 s) | 		// How often the IPMI sensor metrics should be read and send to the sink (default: 30 s) | ||||||
| 		IntervalString string `json:"interval,omitempty"` | 		IntervalString string `json:"interval,omitempty"` | ||||||
|  |  | ||||||
|  | 		// Maximum number of simultaneous IPMI connections (default: 64) | ||||||
|  | 		Fanout int `json:"fanout,omitempty"` | ||||||
|  |  | ||||||
|  | 		// Out of band IPMI driver (default: LAN_2_0) | ||||||
|  | 		DriverType string `json:"driver_type,omitempty"` | ||||||
|  |  | ||||||
| 		// Default client username, password and endpoint | 		// Default client username, password and endpoint | ||||||
| 		Username *string `json:"username"` // User name to authenticate with | 		Username *string `json:"username"` // User name to authenticate with | ||||||
| 		Password *string `json:"password"` // Password to use for authentication | 		Password *string `json:"password"` // Password to use for authentication | ||||||
| 		Endpoint *string `json:"endpoint"` // URL of the IPMI service | 		Endpoint *string `json:"endpoint"` // URL of the IPMI device | ||||||
|  |  | ||||||
| 		// Globally excluded metrics | 		// Globally excluded metrics | ||||||
| 		ExcludeMetrics []string `json:"exclude_metrics,omitempty"` | 		ExcludeMetrics []string `json:"exclude_metrics,omitempty"` | ||||||
|  |  | ||||||
| 		ClientConfigs []struct { | 		ClientConfigs []struct { | ||||||
| 			Endpoint   *string  `json:"endpoint"`              // URL of the IPMI service |  | ||||||
| 			Fanout     int      `json:"fanout,omitempty"`      // Maximum number of simultaneous IPMI connections (default: 64) | 			Fanout     int      `json:"fanout,omitempty"`      // Maximum number of simultaneous IPMI connections (default: 64) | ||||||
| 			DriverType string   `json:"driver_type,omitempty"` // Out of band IPMI driver (default: LAN_2_0) | 			DriverType string   `json:"driver_type,omitempty"` // Out of band IPMI driver (default: LAN_2_0) | ||||||
| 			HostList   []string `json:"host_list"`             // List of hosts with the same client configuration | 			HostList   []string `json:"host_list"`             // List of hosts with the same client configuration | ||||||
| 			Username   *string  `json:"username"`              // User name to authenticate with | 			Username   *string  `json:"username"`              // User name to authenticate with | ||||||
| 			Password   *string  `json:"password"`              // Password to use for authentication | 			Password   *string  `json:"password"`              // Password to use for authentication | ||||||
|  | 			Endpoint   *string  `json:"endpoint"`              // URL of the IPMI service | ||||||
|  |  | ||||||
| 			// Per client excluded metrics | 			// Per client excluded metrics | ||||||
| 			ExcludeMetrics []string `json:"exclude_metrics,omitempty"` | 			ExcludeMetrics []string `json:"exclude_metrics,omitempty"` | ||||||
|   | |||||||
							
								
								
									
										48
									
								
								receivers/ipmiReceiver.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								receivers/ipmiReceiver.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | ## IPMI Receiver | ||||||
|  |  | ||||||
|  | The IPMI Receiver uses `ipmi-sensors` from the [FreeIPMI](https://www.gnu.org/software/freeipmi/) project to read IPMI sensor readings and sensor data repository (SDR) information. The available metrics depend on the sensors provided by the hardware vendor but typically contain temperature, fan speed, voltage and power metrics. | ||||||
|  |  | ||||||
|  | ### Configuration structure | ||||||
|  |  | ||||||
|  | ```json | ||||||
|  | { | ||||||
|  |     "<IPMI receiver name>": { | ||||||
|  |         "type": "ipmi", | ||||||
|  |         "interval": "30s", | ||||||
|  |         "fanout": 256, | ||||||
|  |         "username": "<Username>", | ||||||
|  |         "password": "<Password>", | ||||||
|  |         "endpoint": "ipmi-sensors://%h-p", | ||||||
|  |         "exclude_metrics": [ "fan_speed", "voltage" ], | ||||||
|  |         "client_config": [ | ||||||
|  |             { | ||||||
|  |                 "host_list": ["n1", "n2", "n3", "n4" ] | ||||||
|  |             }, | ||||||
|  |             { | ||||||
|  |                 "host_list": [ "n5", "n6" ], | ||||||
|  |                 "driver_type": "LAN", | ||||||
|  |                 "cli_options": [ "--workaround-flags=..." ], | ||||||
|  |                 "password": "<Password 2>" | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Global settings: | ||||||
|  |  | ||||||
|  | - `interval`: How often the IPMI sensor metrics should be read and send to the sink (default: 30 s) | ||||||
|  |  | ||||||
|  | Global and per IPMI device settings (per IPMI device settings overwrite the global settings): | ||||||
|  |  | ||||||
|  | - `exclude_metrics`: list of excluded metrics e.g. fan_speed, power, temperature, utilization, voltage | ||||||
|  | - `fanout`: Maximum number of simultaneous IPMI connections (default: 64) | ||||||
|  | - `driver_type`: Out of band IPMI driver (default: LAN_2_0) | ||||||
|  | - `username`: User name to authenticate with | ||||||
|  | - `password`: Password to use for authentication | ||||||
|  | - `endpoint`: URL of the IPMI device (placeholder `%h` gets replaced by the hostname) | ||||||
|  |  | ||||||
|  | Per IPMI device settings: | ||||||
|  |  | ||||||
|  | - `host_list`: List of hosts with the same client configuration | ||||||
|  | - `cli_options`: Additional command line options for ipmi-sensors | ||||||
		Reference in New Issue
	
	Block a user