| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-16 21:56:01 +00:00
										 |  |  | $ipmi_rows = dbFetchRows("SELECT * FROM sensors WHERE device_id = ? AND poller_type='ipmi'", array($device['device_id'])); | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  | if ($ipmi['host'] = get_dev_attrib($device, 'ipmi_hostname')) { | 
					
						
							|  |  |  |     $ipmi['user']     = get_dev_attrib($device, 'ipmi_username'); | 
					
						
							|  |  |  |     $ipmi['password'] = get_dev_attrib($device, 'ipmi_password'); | 
					
						
							|  |  |  |     $ipmi['type']     = get_dev_attrib($device, 'ipmi_type'); | 
					
						
							|  |  |  |     echo 'Fetching IPMI sensor data...'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if ($config['own_hostname'] != $device['hostname'] || $ipmi['host'] != 'localhost') { | 
					
						
							|  |  |  |         $remote = ' -H '.$ipmi['host'].' -U '.$ipmi['user'].' -P '.$ipmi['password']; | 
					
						
							| 
									
										
										
										
											2011-04-27 16:05:41 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     $results = external_exec($config['ipmitool'].' -I '.$ipmi['type'].' -c '.$remote.' sdr 2>/dev/null'); | 
					
						
							|  |  |  |     echo " done.\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     foreach (explode("\n", $results) as $row) { | 
					
						
							|  |  |  |         list($desc,$value,$type,$status) = explode(',', $row); | 
					
						
							|  |  |  |         $ipmi_sensor[$desc][$config['ipmi_unit'][$type]]['value'] = $value; | 
					
						
							|  |  |  |         $ipmi_sensor[$desc][$config['ipmi_unit'][$type]]['unit']  = $type; | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     foreach ($ipmi_rows as $ipmisensors) { | 
					
						
							|  |  |  |         echo 'Updating IPMI sensor '.$ipmisensors['sensor_descr'].'... '; | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         $sensor = $ipmi_sensor[$ipmisensors['sensor_descr']][$ipmisensors['sensor_class']]['value']; | 
					
						
							|  |  |  |         $unit   = $ipmi_sensor[$ipmisensors['sensor_descr']][$ipmisensors['sensor_class']]['unit']; | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         $rrd_file = get_sensor_rrd($device, $ipmisensors); | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         if (is_file($old_rrd_file)) { | 
					
						
							|  |  |  |             rename($old_rrd_file, $rrd_file); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-05-16 21:56:01 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         if (!is_file($rrd_file)) { | 
					
						
							|  |  |  |             rrdtool_create( | 
					
						
							|  |  |  |                 $rrd_file, | 
					
						
							| 
									
										
										
										
											2015-09-28 08:24:57 +00:00
										 |  |  |                 '--step 300  | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |                 DS:sensor:GAUGE:600:-20000:20000 '.$config['rrd_rra'] | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         echo $sensor." $unit\n"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 16:26:55 +00:00
										 |  |  |         $fields = array( | 
					
						
							|  |  |  |             'sensor' => $sensor, | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         rrdtool_update($rrd_file, $fields); | 
					
						
							| 
									
										
										
										
											2010-12-15 17:54:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 20:58:02 +00:00
										 |  |  |         $tags = array('sensor_class' => $sensor['sensor_class'], 'sensor_type' => $sensor['sensor_type'], 'sensor_descr' => $sensor['sensor_descr'], 'sensor_index' => $sensor['sensor_index']); | 
					
						
							|  |  |  |         influx_update($device,'ipmi',$tags,$fields); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |         // FIXME warnings in event & mail not done here yet!
 | 
					
						
							| 
									
										
										
										
											2015-12-09 22:24:29 +00:00
										 |  |  |         dbUpdate(array('sensor_current' => $sensor, 'lastupdate' => array('NOW()')), 'sensors', 'poller_type = ? AND sensor_class = ? AND sensor_id = ?', array('ipmi', $ipmisensors['sensor_class'], $ipmisensors['sensor_id'])); | 
					
						
							| 
									
										
										
										
											2015-07-13 20:10:26 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     unset($ipmi_sensor); | 
					
						
							|  |  |  | } |