Jump to content
Local
onihack

Мониторинг OLT по snmp

Recommended Posts

Вначале попробуйте сбросить\прошить\перерегать. С другими, такой же модели, проблем нет?

Share this post


Link to post
Share on other sites

Подскажите пожалуйста, каким MiBом можно вытянуть вот этот параметр:

 

pon#sh ru

!

epon onu description My_ONU

ifDescr. показывает EPON0/3:1, но не My_ONU. Может кто-то поделится подобным опытом?

 

Голова BDCom P3310C build 33463

Edited by killgara

Share this post


Link to post
Share on other sites

Было бы хорошо, если было бы так просто.

IF-MIB::ifAlias.144 = STRING:

пустая строка.

ifName выдвёт данные аналогиные ifDescr, все что легко не подходит.

Share this post


Link to post
Share on other sites
## snmpwalk -v2c -cxxx 192.168.2.26 ifAlias

IF-MIB::ifAlias.1 = STRING:

IF-MIB::ifAlias.2 = STRING:

IF-MIB::ifAlias.3 = STRING:

IF-MIB::ifAlias.4 = STRING:

IF-MIB::ifAlias.5 = STRING: UPLINK_2.38_port_2

IF-MIB::ifAlias.6 = STRING:

IF-MIB::ifAlias.7 = STRING:

IF-MIB::ifAlias.8 = STRING:

IF-MIB::ifAlias.9 = STRING:

IF-MIB::ifAlias.10 = STRING:

IF-MIB::ifAlias.11 = STRING:

IF-MIB::ifAlias.12 = STRING: ***_BANK_***

IF-MIB::ifAlias.13 = STRING: ***_KIROVA_***

IF-MIB::ifAlias.14 = STRING: ***_Market_13_***

IF-MIB::ifAlias.15 = STRING: ***_VOKZAL_***

......

 

 

проверил на прошивках

BDCOM P3310B Software, Version 10.1.0B Build 29333

BDCOM P3310B Software, Version 10.1.0B Build 39287

Share this post


Link to post
Share on other sites

snmpwalk -v2c -cxxx xxx.xxx.xxx ifAlias

 

IF-MIB::ifAlias.17 = STRING:
IF-MIB::ifAlias.18 = STRING:
IF-MIB::ifAlias.19 = STRING:
IF-MIB::ifAlias.20 = STRING:
IF-MIB::ifAlias.21 = STRING:
IF-MIB::ifAlias.22 = STRING:
IF-MIB::ifAlias.23 = STRING:
IF-MIB::ifAlias.24 = STRING:
IF-MIB::ifAlias.25 = STRING:
IF-MIB::ifAlias.26 = STRING:
IF-MIB::ifAlias.27 = STRING:

sh running-config

!

!

!

interface EPON0/2:28
  epon onu description ХХХХХХХХ

 

 

Где подвох?
 

 

Share this post


Link to post
Share on other sites

У меня так

 
interface EPON0/1:10
 description хххххххх
 

Ваши данные ищите здесь

1.3.6.1.4.1.3320.101.11.1.1.3.8.х.х.х.х.х.х

где х.х.х.х.х.х - мак ону в десятичном формате (FF=255)

Edited by vlin

Share this post


Link to post
Share on other sites

Не могу найти. Кто-то реализовывал перезагрузку онушки по snmp?

 

есть таблица 1.3.6.1.4.1.3320.101.25 bdEponOnuReset но как пользоваться х.з.

 

 

И что-то внятное с состоянием медных портов у кого-то получилось?

Share this post


Link to post
Share on other sites

Как всегда отвечаю сам ))
 

snmpset -v1 -c xxx x.x.x.x .1.3.6.1.4.1.3320.101.10.1.1.29.13 i 0

"onuReset" .1.3.6.1.4.1.3320.101.10.1.1.29.13.llid_onu

присваиваем Integer 0 онушка бутается.
 

Aug 8 20:42:26 %EPON-ONUDEREG: ONU fcfa.f7c5.a3f6 is deregistered on EPON0/1:3.
Aug 8 20:42:28 %EPON-ONUREG: ONU fcfa.f7c5.a3f6 is registered on EPON0/1:3.
Aug 8 20:42:28 %EPON-ONUAUTHEN: ONU fcfa.f7c5.a3f6 is authenticated on EPON0/1:3.
Aug 8 20:42:29 %OLT: Interface EPON0/1:3's OAM Operational Status: Operational
Aug 8 20:42:32 ONU register on interface EPON0/1:3 for the first time!
Aug 8 20:42:32 %OLT: Interface EPON0/1:3's CTC OAM extension negotiated successfully!

C медью ситуация следующая:

 

XPON - показывает туфту

Alistar - показывает туфту через раз

BDCOM - работает идеально.

Share this post


Link to post
Share on other sites

"Ізвратнувся" в The Dude  :D:

 

 

post-37800-0-16530200-1507035498_thumb.png

post-37800-0-59768900-1507035498_thumb.png

post-37800-0-94517400-1507035498_thumb.png

post-37800-0-80767800-1507053938_thumb.png

post-37800-0-28695900-1507055161_thumb.png

Edited by CoUL

Share this post


Link to post
Share on other sites

Класно ! Как настроил ?

Так, як і все півроку вишукував oid, потім створив потрібні функції і проби...

Share this post


Link to post
Share on other sites

Ще пиляю... Можна зробити майже все, але потрібна порада по часу опитування OLT, портів, ONU. Порадьте хтось через які інтервали зробити опитування, що б було мінімальне навантаження на OLT...

Дуже вже слабі в цих залізяках CPU.

Share this post


Link to post
Share on other sites

В понконтроле советуют брать 3 минуты на 1 олт.

А чем собсно понконтрол не угодил?

Share this post


Link to post
Share on other sites

Понконтрол заточен в основном под BDCOM,в dude можно мониторить шо душа пожелает.

Share this post


Link to post
Share on other sites

В понконтроле советуют брать 3 минуты на 1 олт.

А чем собсно понконтрол не угодил?

Я мав на увазі інтервали опитування. Наприклад порти кожні 10 хв., ОНУ кожні 20 хв., і так далі...

Share this post


Link to post
Share on other sites

 

 

Понконтрол заточен в основном под BDCOM,в dude можно мониторить шо душа пожелает

Открываете ПХП и точите под нужные ОИДы. Проблем нет. 

Share this post


Link to post
Share on other sites

Доброго времени суток.

 

Код опроса OLT-a примерно 20 с.:

<?php
$time1= date("Y-m-d H:i:s");

 echo "</br>";
$ip='';
$ro='';
$equipment_id='';
  echo "</br>SysInfo</br>";
$session = new SNMP(SNMP::VERSION_2C, $ip, $ro);
//$session->valueretrieval = SNMP_VALUE_PLAIN;
  $sys = $session->walk("1.3.6.1.2.1.1", TRUE);
  var_export($sys);
 echo "</br>";


$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);

$ifSpeed = $session->walk(".1.3.6.1.2.1.2.2.1.5", TRUE);

$ifAdminStatus = $session->walk(".1.3.6.1.2.1.2.2.1.7", TRUE);

$ifOperStatus = $session->walk(".1.3.6.1.2.1.2.2.1.8", TRUE);

$ifInErrors = $session->walk(".1.3.6.1.2.1.2.2.1.14", TRUE);

$ifOutErrors = $session->walk(".1.3.6.1.2.1.2.2.1.20", TRUE);

$ONUMAC = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.3", TRUE);

$ONURxLevel = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.5", TRUE);

$ONUTemp = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.2", TRUE);

$ONUDist = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.27", TRUE);

$ONUVendor = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.1", TRUE);

$ONUModel = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.2", TRUE);

/*$session =  new SNMP(SNMP::VERSION_1, $ip, $ro);
$session->oid_increasing_check = FALSE;
$session->oid_output_format = SNMP_OID_OUTPUT_NUMERIC;
$UserMAC = $session->walk("1.3.6.1.4.1.3320.152.1.1.3", TRUE);*/



	foreach ($ifDescr as $key => $value) {
	$iface[$key]['IfId']=$key;	
	$value=explode(' ', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['IfDescr']=$value;
	}
	foreach ($ifSpeed as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfSpeed']=$value;
	}
	foreach ($ifAdminStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfAdminStatus']=$value;
	}
	foreach ($ifOperStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOperStatus']=$value;
	}
	foreach ($ifInErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfInErrors']=$value;
	}
	foreach ($ifOutErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOutErrors']=$value;
	}
	foreach ($ONUMAC as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace (" ", ":", $value);
	$iface[$key]['ONUMAC']=$value;
	}
	foreach ($ONURxLevel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONURxLevel']=$value;
	}
	foreach ($ONUTemp as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = $value/256;
	$value = round($value, 2);
	$iface[$key]['ONUTemp']=$value;
	}
	foreach ($ONUDist as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONUDist']=$value;
	}
	foreach ($ONUVendor as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUVendor']=$value;
	}
	foreach ($ONUModel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUModel']=$value;
	}

foreach ($iface as $key){
	echo '</br>';
	$date=date("Y-m-d H:i:s");
	$IfId=$equipment_id.'_'.$key['IfId'];
	$IfDescr=$key['IfDescr'];
	$IfSpeed=$key['IfSpeed']; 
	$IfAdminStatus=$key['IfAdminStatus']; 
	$IfOperStatus=$key['IfOperStatus']; 
	$IfInErrors=$key['IfInErrors']; 
	$IfOutErrors=$key['IfOutErrors'];
	if(isset( $key['ONUMAC'])){
	$ONUMAC=$key['ONUMAC'];}else{$ONUMAC=NULL;}
	if(isset( $key['ONURxLevel'])){
	$ONURxLevel=$key['ONURxLevel']/10;}else{$ONURxLevel=NULL;}
	if(isset( $key['ONUTemp'])){
	$ONUTemp=$key['ONUTemp'];}else{$ONUTemp=NULL;}
	if(isset( $key['ONUDist'])){
	$ONUDist=$key['ONUDist'];}else{$ONUDist=NULL;}
	if(isset( $key['ONUVendor'])){
	$ONUVendor=$key['ONUVendor'];}else{$ONUVendor=NULL;}
	if(isset( $key['ONUModel'])){
	$ONUModel=$key['ONUModel'];}else{$ONUModel=NULL;}
	$ONUVendorModel=$ONUVendor.'/'.$ONUModel;
 	echo 'IfId: '.$IfId.'</br>';  
	echo 'IfDescr: '.$IfDescr.'</br>';
	echo 'IfSpeed: '.$IfSpeed.'</br>'; 
	echo 'IfAdminStatus: '.$IfAdminStatus.'</br>'; 
	echo 'IfOperStatus: '.$IfOperStatus.'</br>'; 
	echo 'IfInErrors: '.$IfInErrors.'</br>'; 
	echo 'IfOutErrors: '.$IfOutErrors.'</br>'; 
	$epon=stripos($IfDescr, 'pon');
	$eponslash=stripos($IfDescr, '/');
	$eponcolon=stripos($IfDescr, ':');
	if($epon !== false and $eponslash!== false and $eponcolon !== false){
	echo 'ONU MAC: '.$ONUMAC.'</br>'; 
	echo 'ONURxLevel: '.$ONURxLevel.'</br>'; 
	echo 'ONUTemp: '.$ONUTemp.'</br>'; 
	echo 'ONUDist: '.$ONUDist.'</br>'; 
	echo 'ONUVendor: '.$ONUVendor.'</br>'; 
	echo 'ONUModel: '.$ONUModel.'</br>'; }
	echo '________________________________</br>';

}


  $session->close();

  $time2= date("Y-m-d H:i:s");
   echo 'Start: '.$time1.' End:'.$time2.'</br>';
   ?>

Share this post


Link to post
Share on other sites

 

 

од опроса OLT-a примерно 20 с.:

Круто, но насколько я вижу в базу он ниче не собирает....

Share this post


Link to post
Share on other sites

Код опроса OLT-a примерно 20 с.:

 

Я тут нервуюся, що в мене довго опитує:

post-18229-0-68431500-1508140452_thumb.jpg

<?php header('Content-type: text/html; charset=utf-8')?>
<?php
session_start();
include_once("db_connect.php");
include_once 'session.php';
include_once("var.php");
?>
<html>
<head>
	<title>PON</title>
	<style>
	.zebraRow {
		background-color: #c0c0c0;
	}
	tr{
		text-align: center;
	}
	</style>
</head>
<body>
<?php
//echo $uri;
//print_r($_GET);
$ip_olt=$_GET['ip'];

function _submit() {
      window.open('','new_win','width=400,height=600,location=no,toolbar=no,menubar=no,status=no,scrollbars=yes,resizable=yes');
  }
  function content_user() {
      window.open('','new_win','width=400,height=600,location=no,toolbar=no,menubar=no,status=no,scrollbars=yes,resizable=yes');
  }
$time1= date("Y-m-d H:i:s");
$uptime=snmp2_get($ip_olt, $ro, "iso.3.6.1.2.1.1.9.1.4.1");


$uptime=str_replace("IF-MIB::ifDescr.", "", $uptime);


$Array_descr = snmp2_real_walk($ip_olt, $ro, "ifDescr");
$old_olt="";
$n="";
$m="";
$m_calc="";
echo "BDCOM - ".$ip_olt. "<br>UpTime - ".$uptime."<br>";
echo "<a href='onu_view.php?&olt=$ip_olt' target='_blank'>На карте</a>";
if(count($Array_descr)>0) {
	
			foreach($Array_descr as $key => $type) {
	
							$key = str_replace("IF-MIB::ifDescr.", "", $key);
							$type = trim(str_replace("STRING: ", "", $type));
							//echo $type . "--".$key."<br>";
							$olt = strtok($type, ":");
							//echo $olt;
//print_r($id_onu);
								if(preg_match("#:#", $type)){
									//print_r($type . "--".$key."\n");
									$active="";
									$opt_level_up = snmp2_get($ip_olt, $ro, "enterprises.3320.101.10.5.1.5.$key");
									//$opt_level_up = snmp2_get($ip_olt, $ro, "1.3.6.1.4.1.3320.9.183.1.1.5.$key");
										//echo $opt_level_up;
									if ($opt_level_up) {
										$opt_level_up = trim(str_replace("INTEGER: ", "", $opt_level_up)/10);
										$mac_onu = snmp2_get($ip_olt, $ro, "enterprises.3320.101.10.4.1.1.$key");
										$mac_onu = str_replace(" ", ":", strtolower(trim(str_replace("Hex-STRING: ", "", $mac_onu))));

										$active = snmp2_get($ip_olt, $ro, "1.3.6.1.4.1.3320.101.10.1.1.26.$key");
										$active = str_replace(" ", ":", strtolower(trim(str_replace("INTEGER: ", "", $active))));

										//$descr = snmp2_get($ip_olt, $ro, "mib-2.31.1.1.1.18.$key");
										//$descr = str_replace(" ", ":", strtolower(trim(str_replace("STRING: ", "_", $descr))));

										$Array_ports="";
										$Array_ports_="";
										$Array_ports__="";
										$Array_ports = snmprealwalk($ip_olt, $ro, "SNMPv2-SMI::enterprises.3320.101.12.1.1.8.$key");
						
											foreach($Array_ports as $key_ => $state) {
												$port = str_replace("SNMPv2-SMI::enterprises.3320.101.12.1.1.8.$key.", "", $key_);
												$Array_state=explode(":", $state);
												$state = trim($Array_state[1]);

												/*if($state == 1 ){ $state="up"; }
												if($state == 2 ){ $state="down"; }
												$Array_ports__[]= $port." : ".$state;*/
											}
										//$Array_olt[$olt][$mac_onu]['ports'] = $Array_ports__[0];
										$Array_olt[$olt][$mac_onu]['key_onu'] = $key;
										$Array_olt[$olt][$mac_onu]['type'] = $type;
										$Array_olt[$olt][$mac_onu]['level_up'] = $opt_level_up;
										$Array_olt[$olt][$mac_onu]['active'] = $active;
										//$Array_olt[$olt][$mac_onu]['descr'] = $descr;
										}
										else {
											$mac_onu = snmp2_get($ip_olt, $ro, "enterprises.3320.101.10.4.1.1.$key");
											$mac_onu = str_replace(" ", ":", strtolower(trim(str_replace("Hex-STRING: ", "", $mac_onu))));
											$Array_olt[$olt][$mac_onu]['key_onu'] = $key;
											$Array_olt[$olt][$mac_onu]['type'] = $type;
											$Array_olt[$olt][$mac_onu]['level_up'] = 0;
											$Array_olt[$olt][$mac_onu]['active'] = 0;
										}
									
									
							}
			}	

			ksort($Array_olt);
			echo "<form action=”onu.php” id=”form1”></form>";

			print("<br><br><center><table border='0' cellpadding='0' cellspacing='1' width='90%'>");
			print("<tr class=head bgcolor=#ffffc0>
			 
			 <td ><strong>Имя ONU</strong></td>
			 <td ><strong>Описание</strong></td>
			 <td ><strong>Mac ONU</strong></td>
			 <td ><strong>Уровень пр., db</strong></td>
			 <td ><strong>GPS</strong></td>
			 <td ><strong>UB</strong></td>
			 <td ><strong>Edit</strong></td>
			 <td ><strong>VIEW</strong></td>
			 <td ><strong>История</strong></td>
			 </tr>");

			foreach($Array_olt as $key => $type)

			{
				
				$olt = $key;
				$ports="";
				//$n="";
				//$m="";
				//$m_calc="";
				//$old_olt="";
					foreach($type as $key1 => $type1)
					{
						$mac_onu = $key1;
						$level_up = $type1['level_up'];
						$type = $type1['type'];
						$active = $type1['active'];
						//$ports = $type1['ports'];
						//$d = $type1['descr'];
						$key_onu = $type1['key_onu'];
						$n++;

						###################################################################################
						$result = mysql_query("SELECT username FROM alldata WHERE maconu='$mac_onu'");
						$myrow = mysql_fetch_assoc($result);
						$username = $myrow['username'];
						###################################################################################
						$query="SELECT descr FROM pon WHERE mac_onu='$mac_onu'";
						$res=mysql_query($query);
						$itog=mysql_fetch_assoc($res);
							
							$d = $itog['descr'];

								if(($olt!=$old_olt)&&($n!=1)) {

								print("<tr class=head bgcolor=#ffffc0><td><font color=$warn>Всего: <b>$m </b>ONU</td>");
								$m=0;
								//echo $msg;
								//$m_calc=0;
								print("<tr height=40><td colspan=5></td></tr>");
								}
								$m++;
								$m_calc++;
									if ($level_up == 0) {
												$colorfont="red";
												$level_up="0 ";
												//$lable="ONU не подключена!";
													    
									}  elseif ($level_up <= -25.5) {

									  //  $lable="Плохой сигнал!!!";
									    $colorfont="blue";

									}
									elseif ($level_up >= -10) {

									  //  $lable="Спасай глаз!!!";
									    $colorfont="black";

									}
									else  {

									    $colorfont="green";
									  //  $lable="Сигнал в пределах нормы!";
									}				
						$cssClass="normalRow";

								if($n % 2 == 0) {
									$cssClass = "zebraRow";
								}
						
						echo "
						<tr class=$cssClass>
						
						<td>$type</td>
						<td>$d</td>";
						if (empty($username)) {
							echo "<td>$mac_onu</td>";
						}
						else {
							echo "<td><form action=reg-edit.php method=\"POST\" target='content'>
												<input  type=\"submit\" name=\"user_edit\" value=\"$username\">
												<br><lable>$mac_onu</lable>

										</form>
										
								</td>";
						}
						####################################################################
						
						####################################################################
						echo "<td><font color=$colorfont><b> ".$level_up." db</b> <br/></td>
						<td nowrap align='left'>
						";
								$query="SELECT lat,levelhystory FROM pon WHERE mac_onu='$mac_onu'";
								$res=mysql_query($query);
								//$count=mysql_num_rows($res);
								//echo $count;
								
								$itog=mysql_fetch_assoc($res);
									$lat = $itog['lat'];
									$levelhystory=$itog['levelhystory'];
										//echo $lat;# code...
			
										if ($lat == 0) {
											echo "<a href='location.php?&olt=$ip_olt&mac=$mac_onu&lat=$lat&descr=$d' target='_blank'><img src='pic/red.png' height=\"50\"";

										} else {
											echo "<img src='pic/green.png' height=\"50\"";
										}
			

							//if(($active==1)||($active==3)){ print("$ports"); }else{}
								switch ($olt) {
									case 'EPON0/1':
										$sfp_port_id=8;# code...
										break;
									case 'EPON0/2':
										$sfp_port_id=9;#
										break;
									case 'EPON0/3':
										$sfp_port_id=10;#
										break;
									case 'EPON0/4':
										$sfp_port_id=11;#
										break;
									default:
										# code...
										break;
								}

								echo 
								"</td>
								<td><a href='unbind_onu.php?mac_onu=$mac_onu&key_onu=$sfp_port_id&ip=$ip_olt' target='_blank'><img src='pic/delete.png' width=\"40\"></a>
								</td>
								<td><a href='edit_onu.php?epon=$olt&epon_onu=$type&mac_onu=$mac_onu&key_onu=$key_onu&descr=$d&ip=$ip_olt&port=$port' target='_blank'><img src='pic/comment-edit-icon.png' width=\"50\">
								</td>
								<td><a href='onu.php?epon=$type&mac_onu=$mac_onu& key_onu=$key_onu&descr=$d&ip=$ip_olt&port=$port' target='_blank'><img src='pic/view.png' width=\"60\"></a>
								</td>
								<td>
								
								 $levelhystory

								</td>
								</tr>";

								$old_olt=$olt;
						#######################################################3
						if ($m>"50"){ 
							$warn="red";
							$msg="<h3>Обратите внимание на порт. Заканчиваются места!!!</h3>";
						} else { 
							$warn="black";
						}
						##########################################################
			
					}

			}
$c="";
$c=$m_calc+$c;

print ($msg);
print("<tr class=head bgcolor=#ffffc0 ><td>Всего: <b> $m </b>ONU</td>");
print("</table></center>");
}
echo "<label class=\"allonu\"><h4>Всего зарегистрировано ".$c. " из 256 возможных!</h4></label>";
mysql_close();
$time2= date("Y-m-d H:i:s");
   echo 'Start: '.$time1.' End:'.$time2.'</br>';
?>

</body>
</html>

Громіздко, але, як міг... 

Share this post


Link to post
Share on other sites

 

од опроса OLT-a примерно 20 с.:

Круто, но насколько я вижу в базу он ниче не собирает....

 

У вас есть все данные, в чем проблема внести в базу?

 

Вот на примере PONcontrol опрос всех OLT-ов:

<?php


$time1= date("Y-m-d H:i:s");
include 'vars.php';
include_once 'function_lib.php';
$extra = 'index.php';



$conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES utf8");
mysql_select_db($mysql_db);
$psql = "select * from olts order by ip";
$pretval = mysql_query( $psql, $conn );
if(! $pretval )
{
  die('Could not enter data: ' . mysql_error());
}

  while ($row=mysql_fetch_array($pretval)) {

$sql_ip = $row['ip'];
$ro = $row['ro'];
$ip = long2ip($sql_ip);
include 'ping.php';

if ($ping == 0) {
} else {

$sql_req = "UPDATE olts SET last_act=\"$date\" WHERE ip='$sql_ip'";
$retval_ping = mysql_query( $sql_req, $conn );
if(! $retval_ping )
{
  die('Could not enter data: ' . mysql_error());
}


$table = str_replace (".", "_", $ip);
$equipment_id='';
  echo "</br>SysInfo</br>";
$session = new SNMP(SNMP::VERSION_2C, $ip, $ro);
//$session->valueretrieval = SNMP_VALUE_PLAIN;
  $sys = $session->walk("1.3.6.1.2.1.1", TRUE);
  var_export($sys);
 echo "</br>";


$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);

$ifSpeed = $session->walk(".1.3.6.1.2.1.2.2.1.5", TRUE);

$ifAdminStatus = $session->walk(".1.3.6.1.2.1.2.2.1.7", TRUE);

$ifOperStatus = $session->walk(".1.3.6.1.2.1.2.2.1.8", TRUE);

$ifInErrors = $session->walk(".1.3.6.1.2.1.2.2.1.14", TRUE);

$ifOutErrors = $session->walk(".1.3.6.1.2.1.2.2.1.20", TRUE);

$ONUMAC = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.3", TRUE);

$ONURxLevel = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.5", TRUE);

$ONUTemp = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.2", TRUE);

$ONUDist = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.27", TRUE);

$ONUVendor = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.1", TRUE);

$ONUModel = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.2", TRUE);

/*$session =  new SNMP(SNMP::VERSION_1, $ip, $ro);
$session->oid_increasing_check = FALSE;
$session->oid_output_format = SNMP_OID_OUTPUT_NUMERIC;
$UserMAC = $session->walk("1.3.6.1.4.1.3320.152.1.1.3", TRUE);*/



	foreach ($ifDescr as $key => $value) {
	$iface[$key]['IfId']=$key;	
	$value=explode(' ', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['IfDescr']=$value;
	}
	foreach ($ifSpeed as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfSpeed']=$value;
	}
	foreach ($ifAdminStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfAdminStatus']=$value;
	}
	foreach ($ifOperStatus as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOperStatus']=$value;
	}
	foreach ($ifInErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfInErrors']=$value;
	}
	foreach ($ifOutErrors as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['IfOutErrors']=$value;
	}
	foreach ($ONUMAC as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace (" ", ":", $value);
	$iface[$key]['ONUMAC']=$value;
	}
	foreach ($ONURxLevel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONURxLevel']=$value;
	}
	foreach ($ONUTemp as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = $value/256;
	$value = round($value, 2);
	$iface[$key]['ONUTemp']=$value;
	}
	foreach ($ONUDist as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONUDist']=$value;
	}
	foreach ($ONUVendor as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUVendor']=$value;
	}
	foreach ($ONUModel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['ONUModel']=$value;
	}

foreach ($iface as $key){
	echo '</br>';
	$date=date("Y-m-d H:i:s");
	$IfId=$equipment_id.'_'.$key['IfId'];
	$IfDescr=$key['IfDescr'];
	$IfSpeed=$key['IfSpeed']; 
	$IfAdminStatus=$key['IfAdminStatus']; 
	$IfOperStatus=$key['IfOperStatus']; 
	$IfInErrors=$key['IfInErrors']; 
	$IfOutErrors=$key['IfOutErrors'];
	if(isset( $key['ONUMAC'])){
	$ONUMAC=$key['ONUMAC'];}else{$ONUMAC=NULL;}
	if(isset( $key['ONURxLevel'])){
	$ONURxLevel=$key['ONURxLevel']/10;}else{$ONURxLevel="Offline";}
	if(isset( $key['ONUTemp'])){
	$ONUTemp=$key['ONUTemp'];}else{$ONUTemp=NULL;}
	if(isset( $key['ONUDist'])){
	$ONUDist=$key['ONUDist'];}else{$ONUDist=NULL;}
	if(isset( $key['ONUVendor'])){
	$ONUVendor=$key['ONUVendor'];}else{$ONUVendor=NULL;}
	if(isset( $key['ONUModel'])){
	$ONUModel=$key['ONUModel'];}else{$ONUModel=NULL;}
	$ONUVendorModel=$ONUVendor.'/'.$ONUModel;
 	echo 'IfId: '.$IfId.'</br>';  
	echo 'IfDescr: '.$IfDescr.'</br>';
	echo 'IfSpeed: '.$IfSpeed.'</br>'; 
	echo 'IfAdminStatus: '.$IfAdminStatus.'</br>'; 
	echo 'IfOperStatus: '.$IfOperStatus.'</br>'; 
	echo 'IfInErrors: '.$IfInErrors.'</br>'; 
	echo 'IfOutErrors: '.$IfOutErrors.'</br>'; 
	$epon=stripos($IfDescr, 'pon');
	$eponslash=stripos($IfDescr, '/');
	$eponcolon=stripos($IfDescr, ':');
	if($epon !== false and $eponslash!== false and $eponcolon !== false){
	echo 'ONU MAC: '.$ONUMAC.'</br>'; 
	echo 'ONURxLevel: '.$ONURxLevel.'</br>'; 
	echo 'ONUTemp: '.$ONUTemp.'</br>'; 
	echo 'ONUDist: '.$ONUDist.'</br>'; 
	echo 'ONUVendor: '.$ONUVendor.'</br>'; 
	echo 'ONUModel: '.$ONUModel.'</br>'; 
	$nameint = NameIntAddZero($IfDescr);
	UpdateOnu($conn, $sql_ip, $date, $nameint, $ONUMAC, $ONURxLevel);}
	echo '________________________________</br>';
	

}
  }}

  $session->close();

  $time2= date("Y-m-d H:i:s");
  echo 'Start: '.$time1.' End:'.$time2.'</br>';
  mysql_close($conn);

   ?>

Share this post


Link to post
Share on other sites

Дело в том, что мне хватает понконтрола. Не вижу необходимости снимать лишак, типо ошибок на порту, админстатус порта ОНУ, по крайней мере у себя.

Share this post


Link to post
Share on other sites

Дело в том, что мне хватает понконтрола. Не вижу необходимости снимать лишак, типо ошибок на порту, админстатус порта ОНУ, по крайней мере у себя.

 

Ломать не строить....

 

Удалил "лишак", опрос трех ОЛТов (~460 ONU) и внесение в БД всех данных выполняется за 35-40 с.

<?php
$time1= microtime(true);
include 'vars.php';
include_once 'function_lib.php';
$extra = 'index.php';

$conn = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES utf8");
mysql_select_db($mysql_db);
$psql = "select * from olts order by ip";
$pretval = mysql_query( $psql, $conn );
if(! $pretval )
{
  die('Could not enter data: ' . mysql_error());
}

  while ($row=mysql_fetch_array($pretval)) {

$sql_ip = $row['ip'];
$ro = $row['ro'];
$ip = long2ip($sql_ip);
include 'ping.php';

if ($ping == 0) {
} else {

$sql_req = "UPDATE olts SET last_act=\"$date\" WHERE ip='$sql_ip'";
$retval_ping = mysql_query( $sql_req, $conn );
if(! $retval_ping )
{
  die('Could not enter data: ' . mysql_error());
}

$table = str_replace (".", "_", $ip);

$session = new SNMP(SNMP::VERSION_2C, $ip, $ro);

$ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);

$ONUMAC = $session->walk("1.3.6.1.4.1.3320.101.10.1.1.3", TRUE);

$ONURxLevel = $session->walk("1.3.6.1.4.1.3320.101.10.5.1.5", TRUE);

unset($iface);

	foreach ($ifDescr as $key => $value) {
	$iface[$key]['IfId']=$key;	
	$value=explode(' ', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace("\"", "", $value);
	$iface[$key]['IfDescr']=$value;
	}
	foreach ($ONUMAC as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$value = str_replace (" ", ":", $value);
	$iface[$key]['ONUMAC']=$value;
	}
	foreach ($ONURxLevel as $key => $value) {
	$value=explode(':', $value);
	$value=end($value);
	$value=trim($value);
	$iface[$key]['ONURxLevel']=$value;
	}

foreach ($iface as $key){
	echo '</br>';
	$date=date("Y-m-d H:i:s");
	if(isset( $key['ONUMAC'])){
	$ONUMAC=$key['ONUMAC'];}else{$ONUMAC=NULL;}
	if(isset( $key['ONURxLevel'])){
	$ONURxLevel=$key['ONURxLevel']/10;}else{$ONURxLevel="Offline";}
 	echo 'IfId: '.$IfId.'</br>';  
	echo 'IfDescr: '.$IfDescr.'</br>';
	$epon=stripos($IfDescr, 'pon');
	$eponslash=stripos($IfDescr, '/');
	$eponcolon=stripos($IfDescr, ':');
	if($epon !== false and $eponslash!== false and $eponcolon !== false){
	echo 'ONU MAC: '.$ONUMAC.'</br>'; 
	echo 'ONURxLevel: '.$ONURxLevel.'</br>'; 
	$nameint = NameIntAddZero($IfDescr);
	UpdateOnu($conn, $sql_ip, $date, $nameint, $ONUMAC, $ONURxLevel);}
	echo '________________________________</br>';
}}}

  $session->close();

  $time2= microtime(true);
	$diff = $time2 - $time1;

echo '</br>Run time:'.$diff.' c</br>';
  mysql_close($conn);
?>

Share this post


Link to post
Share on other sites

 

 

Ломать не строить....

Не в этом дело. Зачем изобретать велосипед?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Darth Vader2
      Понимаю, что старая песня, но все же возник вопрос. Собственный, самописный, легкий мониторинг под личные нужды. Результат опроса по snmp не стабилен. Со старта.Со второго опроса уже удаётся получить адекватный ответ относительно состояния медного порта ОНУ.
       
      SNMPv2-SMI::enterprises.3320.101.12.1.1.8. $port .1
      где $port идентификатор ону и дальше номер медного порта.
       
      Не обращал на это внимание, но последнее время что-то слишком часто такое получается. Есть наработки костылей по теме? Буду благодарен любой подсказке.
       
      Как выглядит в первом круге.
       

       
       
      А так во втором и далее.
       

       
       
    • By romanugli
      Куплю нерабочий ОЛТ BDCOM 3310 нужно корпус и плату, мой олт залило дождем и сгорели пон порты. Также куплю нерабочие Онушки, желательно BDCOM или Picotel.
    • By IvanG
      Продам плату MCUD1 Huawei 5608 10G
      630 дол.
       
      в наличии 2 шт. - новые!
      Оплата нал, б.н. ФОП.
    • By webstarter110
      Добрый день, коллеги.
       
      Возникла острая необходимость мониторить кол-во клиентов на точках доступа Ubiquiti Unifi. Зоопарк большой - AP/AP-LR/AP-AC-PRO и прочие...порядка 500+ шт. Проверять загруженность точек на контроллерах (коих порядка 60шт.) - естественно не комильфо.
      Рассматриваю вариант опроса точек по SNMP через заббикс (50+ клиентов/точка - алерт), но найти нужные IOD пока не удается. Имеющиеся в сети данные позволили снять только загрузку ЦП, памяти, и еще пары не нужных показателей. Метод научного тыка через snmpwalk пока не дал нужных результатов. 
      Решал ли кто-либо такой вопрос?
       
      Заранее спасибо. 
    • By gpon_huawei
      Продам б/у ону Huawei 8310M
      без б/п - 160 грн./шт.
      с б/п - 200 грн./шт.
      корпус в отличном состоянии
×