| 
									
										
										
										
											2012-01-18 08:12:37 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-07 04:29:40 -04:00
										 |  |  | // NS-ROOT-MIB::vsvrFullName."librenms" = STRING: "librenms"
 | 
					
						
							| 
									
										
										
										
											2016-09-08 14:12:23 +01:00
										 |  |  | // 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"
 | 
					
						
							| 
									
										
										
										
											2017-02-23 22:45:50 +00:00
										 |  |  | use LibreNMS\RRD\RrdDefinition; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  | 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); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-23 22:45:50 +00:00
										 |  |  |     $rrd_def = new RrdDefinition(); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     foreach ($oids_gauge as $oid) { | 
					
						
							| 
									
										
										
										
											2017-02-23 22:45:50 +00:00
										 |  |  |         $oid_ds    = str_replace('vsvr', '', $oid); | 
					
						
							|  |  |  |         $rrd_def->addDataset($oid_ds, 'GAUGE', null, 100000000000); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     } | 
					
						
							|  |  |  |     foreach ($oids_counter as $oid) { | 
					
						
							| 
									
										
										
										
											2017-02-23 22:45:50 +00:00
										 |  |  |         $oid_ds    = str_replace('vsvr', '', $oid); | 
					
						
							|  |  |  |         $rrd_def->addDataset($oid_ds, 'COUNTER', null, 100000000000); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2012-01-18 08:12:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     $vsvr_array = snmpwalk_cache_oid($device, 'vserverEntry', array(), 'NS-ROOT-MIB'); | 
					
						
							| 
									
										
										
										
											2012-01-18 08:12:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     $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); | 
					
						
							| 
									
										
										
										
											2012-02-08 22:03:53 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-20 15:02:40 +02:00
										 |  |  |     d_echo($vsvrs); | 
					
						
							| 
									
										
										
										
											2012-01-18 08:12:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     foreach ($vsvr_array as $index => $vsvr) { | 
					
						
							| 
									
										
										
										
											2017-09-07 04:29:40 -04:00
										 |  |  |         if (isset($vsvr['vsvrFullName'])) { | 
					
						
							|  |  |  |             $vsvr_exist[$vsvr['vsvrFullName']] = 1; | 
					
						
							|  |  |  |             $rrd_name  = 'netscaler-vsvr-'.$vsvr['vsvrFullName']; | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 16:26:55 +00:00
										 |  |  |             $fields = array(); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |             foreach ($oids as $oid) { | 
					
						
							| 
									
										
										
										
											2020-03-20 02:16:29 +01:00
										 |  |  |                 $oid_ds = str_replace('vsvr', '', $oid); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |                 if (is_numeric($vsvr[$oid])) { | 
					
						
							| 
									
										
										
										
											2020-03-20 02:16:29 +01:00
										 |  |  |                     $fields[$oid_ds] = $vsvr[$oid]; | 
					
						
							| 
									
										
										
										
											2016-08-28 12:32:58 -05:00
										 |  |  |                 } else { | 
					
						
							| 
									
										
										
										
											2020-03-20 02:16:29 +01:00
										 |  |  |                     $fields[$oid_ds] = 'U'; | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-07 01:33:43 -05:00
										 |  |  |             $tags = array( | 
					
						
							| 
									
										
										
										
											2017-09-07 04:29:40 -04:00
										 |  |  |                 'vsvrFullName' => $vsvr['vsvrFullName'], | 
					
						
							| 
									
										
										
										
											2016-07-07 01:33:43 -05:00
										 |  |  |                 'rrd_name' => $rrd_name, | 
					
						
							|  |  |  |                 'rrd_def' => $rrd_def | 
					
						
							|  |  |  |             ); | 
					
						
							| 
									
										
										
										
											2016-08-28 12:32:58 -05:00
										 |  |  |             data_update($device, 'netscaler-vsvr', $tags, $fields); | 
					
						
							| 
									
										
										
										
											2016-07-07 01:33:43 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-07 04:29:40 -04:00
										 |  |  |             echo str_pad($vsvr['vsvrFullName'], 25).' | '.str_pad($vsvr['vsvrType'], 5).' | '.str_pad($vsvr['vsvrState'], 6).' | '.str_pad($vsvr['vsvrIpAddress'], 16).' | '.str_pad($vsvr['vsvrPort'], 5); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |             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'], | 
					
						
							|  |  |  |                          ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-07 04:29:40 -04:00
										 |  |  |             if (!is_array($vsvrs[$vsvr['vsvrFullName']])) { | 
					
						
							|  |  |  |                 $db_insert = array_merge(array('device_id' => $device['device_id'], 'vsvr_name' => $vsvr['vsvrFullName']), $db_update); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |                 $vsvr_id   = dbInsert($db_insert, 'netscaler_vservers'); | 
					
						
							|  |  |  |                 echo ' +'; | 
					
						
							| 
									
										
										
										
											2016-08-28 12:32:58 -05:00
										 |  |  |             } else { | 
					
						
							| 
									
										
										
										
											2017-09-07 04:29:40 -04:00
										 |  |  |                 $updated = dbUpdate($db_update, 'netscaler_vservers', '`vsvr_id` = ?', array($vsvrs[$vsvr['vsvrFullName']]['vsvr_id'])); | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |                 echo ' U'; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-18 16:26:55 +00:00
										 |  |  |             echo "\n"; | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |         }//end if
 | 
					
						
							|  |  |  |     }//end foreach
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-20 15:02:40 +02:00
										 |  |  |     d_echo($vsvr_exist); | 
					
						
							| 
									
										
										
										
											2012-04-05 16:37:46 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-10 13:36:21 +02:00
										 |  |  |     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
 |