mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			132 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
// NS-ROOT-MIB::vsvrName."librenms" = STRING: "librenms"
 | 
						|
// NS-ROOT-MIB::vsvrIpAddress."librenms" = IpAddress: 195.78.84.141
 | 
						|
// NS-ROOT-MIB::vsvrPort."librenms" = INTEGER: 80
 | 
						|
// NS-ROOT-MIB::vsvrType."librenms" = INTEGER: http(0)
 | 
						|
// NS-ROOT-MIB::vsvrState."librenms" = INTEGER: up(7)
 | 
						|
// NS-ROOT-MIB::vsvrCurClntConnections."librenms" = Gauge32: 18
 | 
						|
// NS-ROOT-MIB::vsvrCurSrvrConnections."librenms" = Gauge32: 0
 | 
						|
// NS-ROOT-MIB::vsvrSurgeCount."librenms" = Counter32: 0
 | 
						|
// NS-ROOT-MIB::vsvrTotalRequests."librenms" = Counter64: 64532
 | 
						|
// NS-ROOT-MIB::vsvrTotalRequestBytes."librenms" = Counter64: 22223153
 | 
						|
// NS-ROOT-MIB::vsvrTotalResponses."librenms" = Counter64: 64496
 | 
						|
// NS-ROOT-MIB::vsvrTotalResponseBytes."librenms" = Counter64: 1048603453
 | 
						|
// NS-ROOT-MIB::vsvrTotalPktsRecvd."librenms" = Counter64: 629637
 | 
						|
// NS-ROOT-MIB::vsvrTotalPktsSent."librenms" = Counter64: 936237
 | 
						|
// NS-ROOT-MIB::vsvrTotalSynsRecvd."librenms" = Counter64: 43130
 | 
						|
// NS-ROOT-MIB::vsvrCurServicesDown."librenms" = Gauge32: 0
 | 
						|
// NS-ROOT-MIB::vsvrCurServicesUnKnown."librenms" = Gauge32: 0
 | 
						|
// NS-ROOT-MIB::vsvrCurServicesOutOfSvc."librenms" = Gauge32: 0
 | 
						|
// NS-ROOT-MIB::vsvrCurServicesTransToOutOfSvc."librenms" = Gauge32: 0
 | 
						|
// NS-ROOT-MIB::vsvrCurServicesUp."librenms" = Gauge32: 0
 | 
						|
// NS-ROOT-MIB::vsvrTotMiss."librenms" = Counter64: 0
 | 
						|
// NS-ROOT-MIB::vsvrRequestRate."librenms" = STRING: "0"
 | 
						|
// NS-ROOT-MIB::vsvrRxBytesRate."librenms" = STRING: "248"
 | 
						|
// NS-ROOT-MIB::vsvrTxBytesRate."librenms" = STRING: "188"
 | 
						|
// NS-ROOT-MIB::vsvrSynfloodRate."librenms" = STRING: "0"
 | 
						|
// NS-ROOT-MIB::vsvrIp6Address."librenms" = STRING: 0:0:0:0:0:0:0:0
 | 
						|
// NS-ROOT-MIB::vsvrTotHits."librenms" = Counter64: 64537
 | 
						|
// NS-ROOT-MIB::vsvrTotSpillOvers."librenms" = Counter32: 0
 | 
						|
// NS-ROOT-MIB::vsvrTotalClients."librenms" = Counter64: 43023
 | 
						|
// NS-ROOT-MIB::vsvrClientConnOpenRate."librenms" = STRING: "0"
 | 
						|
if ($device['os'] == 'netscaler') {
 | 
						|
    $oids_gauge = array(
 | 
						|
                   'vsvrCurClntConnections',
 | 
						|
                   'vsvrCurSrvrConnections',
 | 
						|
                  );
 | 
						|
 | 
						|
    $oids_counter = array(
 | 
						|
                     'vsvrSurgeCount',
 | 
						|
                     'vsvrTotalRequests',
 | 
						|
                     'vsvrTotalRequestBytes',
 | 
						|
                     'vsvrTotalResponses',
 | 
						|
                     'vsvrTotalResponseBytes',
 | 
						|
                     'vsvrTotalPktsRecvd',
 | 
						|
                     'vsvrTotalPktsSent',
 | 
						|
                     'vsvrTotalSynsRecvd',
 | 
						|
                     'vsvrTotMiss',
 | 
						|
                     'vsvrTotHits',
 | 
						|
                     'vsvrTotSpillOvers',
 | 
						|
                     'vsvrTotalClients',
 | 
						|
                    );
 | 
						|
 | 
						|
    $oids = array_merge($oids_gauge, $oids_counter);
 | 
						|
 | 
						|
    $rrd_def = array();
 | 
						|
    foreach ($oids_gauge as $oid) {
 | 
						|
        $oid_ds    = substr(str_replace('vsvr', '', $oid), 0, 19);
 | 
						|
        $rrd_def[] = "DS:$oid_ds:GAUGE:600:U:100000000000";
 | 
						|
    }
 | 
						|
    foreach ($oids_counter as $oid) {
 | 
						|
        $oid_ds    = substr(str_replace('vsvr', '', $oid), 0, 19);
 | 
						|
        $rrd_def[] = "DS:$oid_ds:COUNTER:600:U:100000000000";
 | 
						|
    }
 | 
						|
 | 
						|
    $vsvr_array = snmpwalk_cache_oid($device, 'vserverEntry', array(), 'NS-ROOT-MIB');
 | 
						|
 | 
						|
    $vsvr_db = dbFetchRows('SELECT * FROM `netscaler_vservers` WHERE `device_id` = ?', array($device['device_id']));
 | 
						|
    foreach ($vsvr_db as $vsvr) {
 | 
						|
        $vsvrs[$vsvr['vsvr_name']] = $vsvr;
 | 
						|
        print_r($vsvr);
 | 
						|
    }
 | 
						|
 | 
						|
    d_echo($vsvrs);
 | 
						|
 | 
						|
    foreach ($vsvr_array as $index => $vsvr) {
 | 
						|
        if (isset($vsvr['vsvrName'])) {
 | 
						|
            $vsvr_exist[$vsvr['vsvrName']] = 1;
 | 
						|
            $rrd_name  = 'netscaler-vsvr-'.$vsvr['vsvrName'];
 | 
						|
 | 
						|
            $fields = array();
 | 
						|
            foreach ($oids as $oid) {
 | 
						|
                if (is_numeric($vsvr[$oid])) {
 | 
						|
                    $fields[$oid] = $vsvr[$oid];
 | 
						|
                } else {
 | 
						|
                    $fields[$oid] = 'U';
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            $tags = array(
 | 
						|
                'vsvrName' => $vsvr['vsvrName'],
 | 
						|
                'rrd_name' => $rrd_name,
 | 
						|
                'rrd_def' => $rrd_def
 | 
						|
            );
 | 
						|
            data_update($device, 'netscaler-vsvr', $tags, $fields);
 | 
						|
 | 
						|
            echo str_pad($vsvr['vsvrName'], 25).' | '.str_pad($vsvr['vsvrType'], 5).' | '.str_pad($vsvr['vsvrState'], 6).' | '.str_pad($vsvr['vsvrIpAddress'], 16).' | '.str_pad($vsvr['vsvrPort'], 5);
 | 
						|
            echo ' | '.str_pad($vsvr['vsvrRequestRate'], 8).' | '.str_pad($vsvr['vsvrRxBytesRate'].'B/s', 8).' | '.str_pad($vsvr['vsvrTxBytesRate'].'B/s', 8);
 | 
						|
 | 
						|
            $db_update = array(
 | 
						|
                          'vsvr_ip'       => $vsvr['vsvrIpAddress'],
 | 
						|
                          'vsvr_port'     => $vsvr['vsvrPort'],
 | 
						|
                          'vsvr_state'    => $vsvr['vsvrState'],
 | 
						|
                          'vsvr_type'     => $vsvr['vsvrType'],
 | 
						|
                          'vsvr_req_rate' => $vsvr['RequestRate'],
 | 
						|
                          'vsvr_bps_in'   => $vsvr['vsvrRxBytesRate'],
 | 
						|
                          'vsvr_bps_out'  => $vsvr['vsvrTxBytesRate'],
 | 
						|
                         );
 | 
						|
 | 
						|
            if (!is_array($vsvrs[$vsvr['vsvrName']])) {
 | 
						|
                $db_insert = array_merge(array('device_id' => $device['device_id'], 'vsvr_name' => $vsvr['vsvrName']), $db_update);
 | 
						|
                $vsvr_id   = dbInsert($db_insert, 'netscaler_vservers');
 | 
						|
                echo ' +';
 | 
						|
            } else {
 | 
						|
                $updated = dbUpdate($db_update, 'netscaler_vservers', '`vsvr_id` = ?', array($vsvrs[$vsvr['vsvrName']]['vsvr_id']));
 | 
						|
                echo ' U';
 | 
						|
            }
 | 
						|
 | 
						|
            echo "\n";
 | 
						|
        }//end if
 | 
						|
    }//end foreach
 | 
						|
 | 
						|
    d_echo($vsvr_exist);
 | 
						|
 | 
						|
    foreach ($vsvrs as $db_name => $db_id) {
 | 
						|
        if (!$vsvr_exist[$db_name]) {
 | 
						|
            echo '-'.$db_name;
 | 
						|
            dbDelete('netscaler_vservers', '`vsvr_id` =  ?', array($db_id));
 | 
						|
        }
 | 
						|
    }
 | 
						|
}//end if
 |