mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	DO NOT DELETE THIS TEXT #### Please note > Please read this information carefully. You can run `./scripts/pre-commit.php` to check your code before submitting. - [ ] Have you followed our [code guidelines?](http://docs.librenms.org/Developing/Code-Guidelines/) #### Testers If you would like to test this pull request then please run: `./scripts/github-apply <pr_id>`, i.e `./scripts/github-apply 5926` After you are done testing, you can remove the changes with `./scripts/github-remove`. If there are schema changes, you can ask on discord how to revert.
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use LibreNMS\RRD\RrdDefinition;
 | 
						|
 | 
						|
$name = 'nvidia';
 | 
						|
$app_id = $app['app_id'];
 | 
						|
 | 
						|
$options      = '-Oqv';
 | 
						|
$oid          = '.1.3.6.1.4.1.8072.1.3.2.3.1.2.6.110.118.105.100.105.97';
 | 
						|
$gpus = snmp_walk($device, $oid, $options);
 | 
						|
 | 
						|
$gpuArray = explode("\n", $gpus);
 | 
						|
 | 
						|
$rrd_def = RrdDefinition::make()
 | 
						|
    ->addDataset('pwr', 'GAUGE', 0)
 | 
						|
    ->addDataset('temp', 'GAUGE', 0)
 | 
						|
    ->addDataset('sm', 'GAUGE', 0)
 | 
						|
    ->addDataset('mem', 'GAUGE', 0)
 | 
						|
    ->addDataset('enc', 'GAUGE', 0)
 | 
						|
    ->addDataset('dec', 'GAUGE', 0)
 | 
						|
    ->addDataset('mclk', 'GAUGE', 0)
 | 
						|
    ->addDataset('pclk', 'GAUGE', 0)
 | 
						|
    ->addDataset('pviol', 'GAUGE', 0)
 | 
						|
    ->addDataset('tviol', 'GAUGE', 0)
 | 
						|
    ->addDataset('fb', 'GAUGE', 0)
 | 
						|
    ->addDataset('bar1', 'GAUGE', 0)
 | 
						|
    ->addDataset('sbecc', 'GAUGE', 0)
 | 
						|
    ->addDataset('dbecc', 'GAUGE', 0)
 | 
						|
    ->addDataset('pci', 'GAUGE', 0)
 | 
						|
    ->addDataset('rxpci', 'GAUGE', 0)
 | 
						|
    ->addDataset('txpci', 'GAUGE', 0);
 | 
						|
 | 
						|
$sm_total = 0;
 | 
						|
$metrics = array();
 | 
						|
foreach ($gpuArray as $index => $gpu) {
 | 
						|
    $stats = explode(",", $gpu);
 | 
						|
 | 
						|
    if (count($stats) == 19) {
 | 
						|
        list($gpu, $pwr, $temp, $memtemp, $sm, $mem, $enc, $dec, $mclk, $pclk, $pviol, $tviol,
 | 
						|
        $fb, $bar1, $sbecc, $dbecc, $pci, $rxpci, $txpci)=$stats;
 | 
						|
    } else {
 | 
						|
        list($gpu, $pwr, $temp, $sm, $mem, $enc, $dec, $mclk, $pclk, $pviol, $tviol,
 | 
						|
        $fb, $bar1, $sbecc, $dbecc, $pci, $rxpci, $txpci)=$stats;
 | 
						|
    }
 | 
						|
 | 
						|
    $sm_total += $sm;
 | 
						|
 | 
						|
    $rrd_name = array('app', $name, $app_id, $index);
 | 
						|
 | 
						|
    $fields = array(
 | 
						|
        'pwr' => $pwr,
 | 
						|
        'temp' => $temp,
 | 
						|
        'sm' => $sm,
 | 
						|
        'mem' => $mem,
 | 
						|
        'enc' => $enc,
 | 
						|
        'dec' => $dec,
 | 
						|
        'mclk' => $mclk,
 | 
						|
        'pclk' => $pclk,
 | 
						|
        'pviol' => $pviol,
 | 
						|
        'tviol' => $tviol,
 | 
						|
        'fb' => $fb,
 | 
						|
        'bar1' => $bar1,
 | 
						|
        'sbecc' => $sbecc,
 | 
						|
        'dbecc' => $dbecc,
 | 
						|
        'pci' => $pci,
 | 
						|
        'rxpci' => $rxpci,
 | 
						|
        'txpci' => $txpci
 | 
						|
    );
 | 
						|
    $metrics[$index] = $fields;
 | 
						|
 | 
						|
    $tags = array('name' => $name, 'app_id' => $app_id, 'rrd_def' => $rrd_def, 'rrd_name' => $rrd_name);
 | 
						|
    data_update($device, 'app', $tags, $fields);
 | 
						|
}
 | 
						|
$sm_average = ($sm_total ? ($sm_total / count($gpuArray)) : 0);
 | 
						|
 | 
						|
update_application($app, $gpus, $metrics, $sm_average);
 |