class_if.inc 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <?php
  2. // $Id: class_if.inc,v 1.9 2002/11/29 10:45:46 dijkstra Exp $
  3. require_once("class_graph.inc");
  4. class IF_Graph extends Graph {
  5. function IF_Graph() {
  6. // get all the sensible defaults from our parent class
  7. $this->init();
  8. }
  9. function execute($url) {
  10. $this->url2options($url);
  11. // Four major display modes:
  12. // if=brief|bits|packets|all
  13. $this->shortcut = array_merge($this->shortcut, array(
  14. "if" => array(
  15. "brief" => array(
  16. "dsdefinition" => array(
  17. "DEF:A=".$this->get("rrdfile").":ibytes:AVERAGE",
  18. "DEF:B=".$this->get("rrdfile").":obytes:AVERAGE",
  19. "CDEF:inb=A,8,*",
  20. "CDEF:outb=B,8,*",
  21. "CDEF:ioutb=0,outb,-"),
  22. "graphdefinition" => array(
  23. "HRULE:0#000000",
  24. "AREA:inb#00FF00:'in'",
  25. "GPRINT:A:AVERAGE:'%6.2lf %sbps\g'",
  26. "AREA:ioutb#00FFFF:'out'" ,
  27. "GPRINT:outb:AVERAGE:'%6.2lf %sbps'")),
  28. "bits" => array(
  29. "dsdefinition" => array(
  30. 'DEF:in='.$this->get("rrdfile").':ibytes:AVERAGE',
  31. 'DEF:out='.$this->get("rrdfile").':obytes:AVERAGE',
  32. 'DEF:inp='.$this->get("rrdfile").':ipackets:AVERAGE',
  33. 'DEF:outp='.$this->get("rrdfile").':opackets:AVERAGE',
  34. 'DEF:coll='.$this->get("rrdfile").':collisions:AVERAGE',
  35. // bits per second
  36. 'CDEF:inb=in,8,*',
  37. 'CDEF:outb=out,8,*',
  38. // outbound bits per second negated
  39. 'CDEF:noutb=outb,-1,*',
  40. // 2% extra at each bound (+x/-x) to ensure that we see the packetloss lines
  41. 'CDEF:pmax=inb,100,/,102,*',
  42. 'CDEF:nmax=noutb,100,/,102,*',
  43. // percentage of collisions
  44. 'CDEF:totp=inp,outp,+',
  45. 'CDEF:per=coll,totp,/,100,*',
  46. 'CDEF:p0=per,0,EQ,INF,0,IF',
  47. 'CDEF:p10=per,10,LE,INF,0,IF,per,0,GT,INF,0,IF,MIN',
  48. 'CDEF:p20=per,20,LE,INF,0,IF,per,10,GT,INF,0,IF,MIN',
  49. 'CDEF:p30=per,30,LE,INF,0,IF,per,20,GT,INF,0,IF,MIN',
  50. 'CDEF:p40=per,40,LE,INF,0,IF,per,30,GT,INF,0,IF,MIN',
  51. 'CDEF:p50=per,50,LE,INF,0,IF,per,40,GT,INF,0,IF,MIN',
  52. 'CDEF:p60=per,60,LE,INF,0,IF,per,50,GT,INF,0,IF,MIN',
  53. 'CDEF:p70=per,70,LE,INF,0,IF,per,60,GT,INF,0,IF,MIN',
  54. 'CDEF:p80=per,80,LE,INF,0,IF,per,70,GT,INF,0,IF,MIN',
  55. 'CDEF:p90=per,80,LE,INF,0,IF,per,80,GT,INF,0,IF,MIN',
  56. 'CDEF:p100=per,100,LE,INF,0,IF,per,90,GT,INF,0,IF,MIN',
  57. // negative percentages
  58. 'CDEF:n0=p0,-1,*',
  59. 'CDEF:n10=p10,-1,*',
  60. 'CDEF:n20=p20,-1,*',
  61. 'CDEF:n30=p30,-1,*',
  62. 'CDEF:n40=p40,-1,*',
  63. 'CDEF:n50=p50,-1,*',
  64. 'CDEF:n60=p60,-1,*',
  65. 'CDEF:n70=p70,-1,*',
  66. 'CDEF:n80=p80,-1,*',
  67. 'CDEF:n90=p90,-1,*',
  68. 'CDEF:n100=p100,-1,*'),
  69. "graphdefinition" => array(
  70. 'LINE1:pmax',
  71. 'LINE1:nmax',
  72. 'COMMENT:" min avg max last\n"',
  73. 'AREA:inb#00FF00:"in "',
  74. 'GPRINT:inb:MIN:" %6.2lf %sbps"',
  75. 'GPRINT:inb:AVERAGE:"%6.2lf %sbps"',
  76. 'GPRINT:inb:MAX:"%6.2lf %sbps"',
  77. 'GPRINT:inb:LAST:"%6.2lf %sbps\n"',
  78. 'STACK:p0#FAFFFA',
  79. 'STACK:p10#FFFFE6',
  80. 'STACK:p20#FFD900',
  81. 'STACK:p30#FD6724',
  82. 'STACK:p40#E61800',
  83. 'STACK:p50#AB2934',
  84. 'STACK:p60#B2888B',
  85. 'STACK:p70#CC91BA',
  86. 'STACK:p80#6A2990',
  87. 'STACK:p90#0571B0',
  88. 'STACK:p100#000000',
  89. 'AREA:noutb#00FFFF:"out "',
  90. 'GPRINT:outb:MIN:"%6.2lf %sbps"',
  91. 'GPRINT:outb:AVERAGE:"%6.2lf %sbps"',
  92. 'GPRINT:outb:MAX:"%6.2lf %sbps"',
  93. 'GPRINT:outb:LAST:"%6.2lf %sbps\n"',
  94. 'COMMENT:packetloss',
  95. 'GPRINT:per:MIN:"%6.2lf%% "',
  96. 'GPRINT:per:AVERAGE:"%6.2lf%% "',
  97. 'GPRINT:per:MAX:"%6.2lf%% "',
  98. 'GPRINT:per:LAST:"%6.2lf%%\n"',
  99. 'STACK:n0#FAFFFA:" 0% "',
  100. 'STACK:n10#FFFFE6:" <10%"',
  101. 'STACK:n20#FFD900:" <20%"',
  102. 'STACK:n30#FD6724:" <30%"',
  103. 'STACK:n40#E61800:" <40%"',
  104. 'STACK:n50#AB2934:" <50%\n"',
  105. 'STACK:n60#B2888B:" <60%"',
  106. 'STACK:n70#CC91BA:" <70%"',
  107. 'STACK:n80#6A2990:" <80%"',
  108. 'STACK:n90#0571B0:" <90%"',
  109. 'STACK:n100#000000:" <100%"')),
  110. "packets" => array(
  111. "dsdefinition" => array(
  112. "DEF:A=".$this->get("rrdfile").":ipackets:AVERAGE",
  113. "DEF:B=".$this->get("rrdfile").":opackets:AVERAGE",
  114. "DEF:C=".$this->get("rrdfile").":imcasts:AVERAGE",
  115. "DEF:D=".$this->get("rrdfile").":omcasts:AVERAGE",
  116. "DEF:E=".$this->get("rrdfile").":ierrors:AVERAGE",
  117. "DEF:F=".$this->get("rrdfile").":oerrors:AVERAGE",
  118. "DEF:G=".$this->get("rrdfile").":collisions:AVERAGE",
  119. "DEF:H=".$this->get("rrdfile").":drops:AVERAGE"),
  120. "graphdefinition" => array(
  121. "AREA:A#00FF00:'ipackets'",
  122. "GPRINT:A:AVERAGE:'%.0lf\g'",
  123. "LINE1:B#00FFFF:'opackets'",
  124. "GPRINT:B:AVERAGE:'%.0lf\g'",
  125. "LINE1:C#0000FF:'imcasts'",
  126. "GPRINT:C:AVERAGE:'%.0lf\g'",
  127. "LINE1:D#FF00FF:'omcasts'",
  128. "GPRINT:D:AVERAGE:'%.0lf\g'",
  129. "LINE1:E#FF0000:'ierrors'",
  130. "GPRINT:E:AVERAGE:'%.0lf\g'",
  131. "LINE1:F#8B0000:'oerrors'",
  132. "GPRINT:F:AVERAGE:'%.0lf\g'",
  133. "LINE1:G#888888:'collisions'",
  134. "GPRINT:G:AVERAGE:'%.0lf\g'",
  135. "LINE1:H#000000:'drops'",
  136. "GPRINT:H:AVERAGE:'%.0lf\g'")),
  137. "all" => array(
  138. "dsdefinition" => array(
  139. "DEF:in=".$this->get("rrdfile").":ibytes:AVERAGE",
  140. "DEF:out=".$this->get("rrdfile").":obytes:AVERAGE",
  141. "DEF:inp=".$this->get("rrdfile").":ipackets:AVERAGE",
  142. "DEF:outp=".$this->get("rrdfile").":opackets:AVERAGE",
  143. "DEF:inm=".$this->get("rrdfile").":imcasts:AVERAGE",
  144. "DEF:outm=".$this->get("rrdfile").":omcasts:AVERAGE",
  145. "DEF:ierr=".$this->get("rrdfile").":ierrors:AVERAGE",
  146. "DEF:oerr=".$this->get("rrdfile").":oerrors:AVERAGE",
  147. "DEF:coll=".$this->get("rrdfile").":collisions:AVERAGE",
  148. "DEF:drop=".$this->get("rrdfile").":drops:AVERAGE"),
  149. "graphdefinition" => array(
  150. "HRULE:0#000000",
  151. 'COMMENT:" min avg max last\n"',
  152. "AREA:in#00FF00:'in '",
  153. "GPRINT:in:MIN:' %6.2lf %sbps'",
  154. "GPRINT:in:AVERAGE:'%6.2lf %sbps'",
  155. "GPRINT:in:MAX:'%6.2lf %sbps'",
  156. 'GPRINT:in:LAST:"%6.2lf %sbps\n"',
  157. "LINE1:out",
  158. "LINE1:out#00FFFF:'out '" ,
  159. "GPRINT:out:MIN:'%6.2lf %sbps'",
  160. "GPRINT:out:AVERAGE:'%6.2lf %sbps'",
  161. "GPRINT:out:MAX:'%6.2lf %sbps'",
  162. 'GPRINT:out:LAST:"%6.2lf %sbps\n"',
  163. "LINE1:inp#222222:'inp '" ,
  164. "GPRINT:inp:MIN:'%6.2lf %sbps'",
  165. "GPRINT:inp:AVERAGE:'%6.2lf %sbps'",
  166. "GPRINT:inp:MAX:'%6.2lf %sbps'",
  167. 'GPRINT:inp:LAST:"%6.2lf %sbps\n"',
  168. "LINE1:outp#444444:'outp'" ,
  169. "GPRINT:outp:MIN:'%6.2lf %sbps'",
  170. "GPRINT:outp:AVERAGE:'%6.2lf %sbps'",
  171. "GPRINT:outp:MAX:'%6.2lf %sbps'",
  172. 'GPRINT:outp:LAST:"%6.2lf %sbps\n"',
  173. "LINE1:inm#666666:'inm '" ,
  174. "GPRINT:inm:MIN:'%6.2lf %sbps'",
  175. "GPRINT:inm:AVERAGE:'%6.2lf %sbps'",
  176. "GPRINT:inm:MAX:'%6.2lf %sbps'",
  177. 'GPRINT:inm:LAST:"%6.2lf %sbps\n"',
  178. "LINE1:outm#888888:'outm'" ,
  179. "GPRINT:outm:MIN:'%6.2lf %sbps'",
  180. "GPRINT:outm:AVERAGE:'%6.2lf %sbps'",
  181. "GPRINT:outm:MAX:'%6.2lf %sbps'",
  182. 'GPRINT:outm:LAST:"%6.2lf %sbps\n"',
  183. "LINE1:ierr#aaaaaa:'ierr'" ,
  184. "GPRINT:ierr:MIN:'%6.2lf %sbps'",
  185. "GPRINT:ierr:AVERAGE:'%6.2lf %sbps'",
  186. "GPRINT:ierr:MAX:'%6.2lf %sbps'",
  187. 'GPRINT:ierr:LAST:"%6.2lf %sbps\n"',
  188. "LINE1:oerr#cccccc:'oerr'" ,
  189. "GPRINT:oerr:MIN:'%6.2lf %sbps'",
  190. "GPRINT:oerr:AVERAGE:'%6.2lf %sbps'",
  191. "GPRINT:oerr:MAX:'%6.2lf %sbps'",
  192. 'GPRINT:oerr:LAST:"%6.2lf %sbps\n"',
  193. "LINE1:coll#dddddd:'coll'" ,
  194. "GPRINT:coll:MIN:'%6.2lf %sbps'",
  195. "GPRINT:coll:AVERAGE:'%6.2lf %sbps'",
  196. "GPRINT:coll:MAX:'%6.2lf %sbps'",
  197. 'GPRINT:coll:LAST:"%6.2lf %sbps\n"',
  198. "LINE1:drop#ffffff:'drop'" ,
  199. "GPRINT:drop:MIN:'%6.2lf %sbps'",
  200. "GPRINT:drop:AVERAGE:'%6.2lf %sbps'",
  201. "GPRINT:drop:MAX:'%6.2lf %sbps'",
  202. 'GPRINT:drop:LAST:"%6.2lf %sbps\n"')))));
  203. $this->graphdefaults = array_merge($this->graphdefaults,
  204. $this->shortcut["if"]["brief"]);
  205. $this->graphsettings["rawcmdline"] .=" -v 'if(".$this->get("name").")'";
  206. $this->url2options($url);
  207. }
  208. }
  209. ?>