Changeset 13


Ignore:
Timestamp:
Oct 17, 2007, 7:06:49 PM (17 years ago)
Author:
george
Message:

Přidáno: Stránka pro přidání nového měření a implicitní hodnoty pro třídu Measure.
Přidání: Skript pro měření dostupnosti MaNGOS procesu worldd.
Přdáno: Automatické dosazování prefixů jednotek a zaokrouhlování na zadaný počet platných míst.

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • admin.php

    r6 r13  
    4545}
    4646
     47function ShowAdd()
     48{
     49  global $Database;
     50  $Values = array();
     51  return(ShowEditTable('Measure', $Values));
     52}
     53
    4754?>
  • classes.php

    r4 r13  
    33$Classes = array(
    44  'Measure' => array(
    5     'Name' =>           array('Type' => 'String',   'Caption' => 'Zkratka'),
    6     'Title' =>          array('Type' => 'String',   'Caption' => 'Název'),
    7     'Description' =>    array('Type' => 'String',   'Caption' => 'Popis'),
    8     'Unit' =>           array('Type' => 'String',   'Caption' => 'Jednotka'),
    9     'Continuity' =>     array('Type' => 'Boolean',  'Caption' => 'Spojitost'),
    10     'Period' =>         array('Type' => 'Integer',  'Caption' => 'Perioda mìøení'),
    11     'PermissionAdd' =>  array('Type' => 'String',   'Caption' => 'Oprávnìní k mìøení'),
    12     'PermissionView' => array('Type' => 'String',   'Caption' => 'Oprávnìní k prohlí¾ení'),
    13     'Enabled' =>        array('Type' => 'Boolean',  'Caption' => 'Povolení'),
     5    'Name' =>           array('Type' => 'String', 'Caption' => 'Zkratka', 'Default' => 'measure'),
     6    'Title' =>          array('Type' => 'String', 'Caption' => 'Název', 'Default' => 'Mìøení'),
     7    'Description' =>    array('Type' => 'String', 'Caption' => 'Popis', 'Default' => 'Mìøení velièiny'),
     8    'Unit' =>           array('Type' => 'String', 'Caption' => 'Jednotka', 'Default' => ''),
     9    'Continuity' =>     array('Type' => 'Boolean', 'Caption' => 'Spojitost', 'Default' => '0'),
     10    'Period' =>         array('Type' => 'Integer', 'Caption' => 'Perioda mìøení', 'Default' => '60'),
     11    'PermissionAdd' =>  array('Type' => 'String', 'Caption' => 'Oprávnìní k mìøení', 'Default' => 'localhost.localdomain'),
     12    'PermissionView' => array('Type' => 'String', 'Caption' => 'Oprávnìní k prohlížení', 'Default' => 'all'),
     13    'Enabled' =>        array('Type' => 'Boolean', 'Caption' => 'Povolení', 'Default' => '1'),
     14    'DataType' =>       array('Type' => 'String', 'Caption' => 'Typ datových položek', 'Default' => 'int'),
     15    'DataTable' =>      array('Type' => 'String', 'Caption' => 'Tabulka mìøených dat', 'Default' => 'data'),
    1416  ),
    1517);
  • config.sample.php

    r6 r13  
    3030    'Measure' => 1,
    3131    'Period' => 'day',
    32     'TimeSpecify' => 5,
     32    'TimeSpecify' => 0,
    3333  ),
    3434);
  • global.php

    r6 r13  
    6363  foreach($Class as $Index => $Item)
    6464  {
     65    if(!array_key_exists($Index, $Values)) $Values[$Index] = $Item['Default'];
    6566    switch($Item['Type'])
    6667    {
    67       case 'Boolean':
     68      case 'Boolean':      
    6869        if($Values[$Index] == 0) $Checked = ''; else $Checked = ' checked="yes"';
    6970        $Edit = '<input type="checkbox" name="'.$Index.'"'.$Checked.'>';
     
    8081    array_push($Table['Rows'], array($Item['Caption'], $Edit));
    8182  }
    82   $Output = '<h3>Tabulka '.$ClassName.'</h3>'.Table($Table).Link('?Operation=Add', 'Pøidat');
    83   return($Output); }
     83  $Output = '<h3>Tabulka '.$ClassName.'</h3>'.Table($Table).MakeLink('?Operation=Add2', 'Pøidat');
     84  return($Output);
     85}
    8486
    8587?>
  • graph.php

    r6 r13  
    171171    $Y = $Height - 1 - ($VerticalLinesDistance * $I);
    172172    //$Y = $Height - 1 - ($VerticalLinesDistance * $I / ($MaxValue - $MinValue) * $K * $Height);
    173     $Text = round(($I * $VerticalLinesDistance / $Height / $K * ($MaxValue - $MinValue) + $MinValue));
     173    $Text = AddPrefixMultipliers(round(($I * $VerticalLinesDistance / $Height / $K * ($MaxValue - $MinValue) + $MinValue)), $Measure['Unit'], 3);
    174174    $BoundBox = imagettfbbox($FontSize, 0, $FontFile, $Text);
    175175    if(($Y - ($BoundBox[5] - $BoundBox[1]) / 2) > 10)
     
    178178  $GenerationTime = floor((GetMicrotime() - $StopWatchStart) * 1000  ) / 1000;
    179179
    180   imagettftext($Image, $FontSize, 0, $Width-94, 14, $Red, $FontFile, "Max. ".$MaxValue.' '.$Measure['Unit']);
    181   imagettftext($Image, $FontSize, 0, $Width-194, 14, $Green, $FontFile, "Avg.  ".$AvgValue.' '.$Measure['Unit']);
    182   imagettftext($Image, $FontSize, 0, $Width-294, 14, $Blue, $FontFile, "Min.  ".$MinValue.' '.$Measure['Unit']);
     180  imagettftext($Image, $FontSize, 0, $Width-94, 14, $Red, $FontFile, "Max. ".AddPrefixMultipliers($MaxValue, $Measure['Unit']));
     181  imagettftext($Image, $FontSize, 0, $Width-194, 14, $Green, $FontFile, "Avg.  ".AddPrefixMultipliers($AvgValue, $Measure['Unit']));
     182  imagettftext($Image, $FontSize, 0, $Width-294, 14, $Blue, $FontFile, "Min.  ".AddPrefixMultipliers($MinValue, $Measure['Unit']));
    183183  imagestring($Image, 2, 50, 20, 'Vygenerováno za '.$GenerationTime.' sekund', $Black);
    184184  //imagestring($Image, 2, 50, 30, 'Level: '.$Level, $Black);
  • index.php

    r6 r13  
    174174
    175175$Output .= '<table border="1" cellspacing="0" cellpadding="2" style="font-size: small;">';
    176 $Output .= '<tr><th>Mìøená velièina</th><th>Èas posledního mìøení</th><th>Poslední hodnota</th><th>Interpolace</th><th>Poznámky</th>';
     176$Output .= '<tr><th>Mìøená velièina</th><th>Poslední hodnota</th><th>Èas posledního mìøení</th><th>Interpolace</th><th>Poznámky</th>';
    177177if(array_key_exists('Debug', $_GET)) $Output .= '<th>Poèet polo¾ek</th><th>Èas vykonání</th>';
    178178$Output .= '</tr>';
     
    195195    $Row = $Result2->fetch_array();
    196196    $LastMeasureTime = date('j.n.Y G:i:s', MysqlDateTimeToTime($Row['time']));
    197     $LastMeasureValue = round($Row['avg'] / $Measure['Divider']);
     197    $LastMeasureValue = AddPrefixMultipliers($Row['avg'], $Measure['Unit']);
    198198  } else {
    199199    $LastMeasureTime = '&nbsp;';
     
    203203  if($Measure['Info'] == '') $Measure['Info'] = '&nbsp;';
    204204  $GenerationTime = floor((GetMicrotime() - $StopWatchStart) * 1000  ) / 1000;
    205   $Output .= '<tr><td><a href="?Measure='.$Measure['Id'].'">'.$Measure['Description'].'</a></td><td align="center">'.$LastMeasureValue.' '.$Measure['Unit'].'</td><td align="center">'.$LastMeasureTime.'</td><td align="center">'.$Interpolate.'</td><td>'.$Measure['Info'].'</td>';
     205  $Output .= '<tr><td><a href="?Measure='.$Measure['Id'].'">'.$Measure['Description'].'</a></td><td align="center">'.$LastMeasureValue.'</td><td align="center">'.$LastMeasureTime.'</td><td align="center">'.$Interpolate.'</td><td>'.$Measure['Info'].'</td>';
    206206  if(array_key_exists('Debug', $_GET)) $Output .= '<td>'.$RowCount.'</td><td>'.$GenerationTime.'</td>';
    207207  $Output .= '</tr>';
  • measure_scripts/traffic.php

    r7 r13  
    33include('../global.php');
    44
     5function CheckPortStatus($Ip, $Port)
     6{
     7  function ErrorHandler($errno,$errmsg,$filename,$linenum,$vars)
     8  {
     9  } 
     10  set_error_handler('ErrorHandler');
     11  //error_reporting(0);
     12  if($Fp1 = fsockopen($Ip, $Port, $ERROR_NO, $ERROR_STR,(float)0.5))
     13  {
     14    fclose($Fp1);
     15    return true;
     16  } else
     17  {
     18    //echo($ERROR_NO.','.$ERROR_STR);
     19    //die();
     20    return false;
     21  }
     22  restore_error_handler();
     23}
     24
    525function MemoryUsage()
    626{
    727  $Output = array();
    8   exec('free -m', $Output);
     28  exec('free -b', $Output);
    929  $Row = $Output[2];
    1030  while(strpos($Row, '  ') !== false) $Row = str_replace('  ', ' ', $Row);
     
    99119  // Network load
    100120  $NetworkStat = GetNetworkStat();
    101   $Value = round($NetworkStat['eth1']['down_avg']/1024);
     121  $Value = round($NetworkStat['eth1']['down_avg']);
    102122  file_get_contents($URL.'?MeasureId=11&Value='.$Value);
    103   $Value = round($NetworkStat['eth1']['up_avg']/1024);
     123  $Value = round($NetworkStat['eth1']['up_avg']);
    104124  file_get_contents($URL.'?MeasureId=12&Value='.$Value);
    105125 
     
    155175  $Value = $Row[0];
    156176  file_get_contents($URL.'?MeasureId=6&Value='.$Value);
    157    
     177 
     178  // MaNGOS worldd availability
     179  if(CheckPortStatus('localhost', 8085)) $Value = 100; else $Value = 0; 
     180  file_get_contents($URL.'?MeasureId=15&Value='.$Value);
     181     
    158182  sleep(60);
    159183}
  • stat_functions.php

    r12 r13  
    22
    33$ValueTypes = array('min', 'avg', 'max');
     4$PrefixMultipliers = array(
     5  array('y', 'yocto', pow(10, -24)),
     6  array('z', 'zepto', pow(10, -21)),
     7  array('a', 'atto', pow(10, -18)),
     8  array('f', 'femto', pow(10, -15)),
     9  array('p', 'piko', pow(10, -12)),
     10  array('n', 'nano', pow(10, -9)),
     11  array('u', 'mikro', pow(10, -6)),
     12  array('m', 'mili', pow(10, -3)),
     13  array('', '', pow(10, 0)),
     14  array('k', 'kilo', pow(10, 3)),
     15  array('M', 'mega', pow(10, 6)),
     16  array('G', 'giga', pow(10, 9)),
     17  array('T', 'tera', pow(10, 12)),
     18  array('P', 'peta', pow(10, 15)),
     19  array('E', 'exa', pow(10, 18)),
     20  array('Z', 'zetta', pow(10, 21)),
     21  array('Y', 'yotta', pow(10, 24)), 
     22);
     23
     24function AddPrefixMultipliers($Value, $Unit, $Digits = 4)
     25{
     26  global $PrefixMultipliers;
     27  if($Unit == '') return($Value);
     28  $I = 8;
     29  if($Value > 0) $II = 1;
     30  else if($Value < 0) $II = -1;
     31  else $II = 0;
     32  while((($Value / $PrefixMultipliers[$I + $II][2]) > $II) and (($I + $II) >= 0) and (($I + $II) <= count($PrefixMultipliers))) $I = $I + $II;
     33  $Value = $Value / $PrefixMultipliers[$I][2];
     34 
     35  // Truncate digits count
     36  for($II=2; $II > -1; $II--)
     37  {
     38    if($Value >= pow(10, $II))
     39    { 
     40      if($Digits < ($II + 1)) $RealDigits = $II + 1; else $RealDigits = $Digits;
     41      $Value = round($Value / pow(10, $II - $RealDigits + 1)) * pow(10, $II - $RealDigits + 1);
     42      break;     
     43    }
     44  }
     45   
     46  return($Value.' '.$PrefixMultipliers[$I][0].$Unit);
     47}
    448
    549function GetMicrotime()
Note: See TracChangeset for help on using the changeset viewer.