root/trunk/tool/metro.php @ 30

Revision 30, 4.9 KB (checked in by andreu, 15 years ago)

bug of "template fantom" correction

  • Property svn:eol-style set to native
Line 
1<?php
2    function generation_graph_jour($nom_du_site, $prefixe, $cidr, $rrdname, $sampling) {
3        // SAGA
4        $png_path = "/var/www/saga/www/images/tmp/";
5        // SAGA
6
7        // FX
8        //$png_path = "/tmp/";
9        // FX
10
11        # creation du nom de fichier de l'image a creer
12        $filename = $nom_du_site."_j".".png";
13        $pngname = $png_path.$filename;
14
15        # creation de l'image dans $png_path.
16        $res = `rrdtool graph $pngname -s -1D --title "$nom_du_site - prefixe : $prefixe / $cidr" --vertical-label "bits/s" DEF:inBytesG=$rrdname:inBytes:AVERAGE DEF:outBytesG=$rrdname:outBytes:AVERAGE CDEF:input10=inBytesG,8,*,5,/,60,/,$sampling,* CDEF:output10=outBytesG,8,*,5,/,60,/,$sampling,* AREA:input10\#00FF00:"In b/s\\n" LINE1:output10\#0000FF:"Out b/s\\n"`;
17       
18        # todo FX : faire un retour different si erreur
19        return $filename;
20    }
21
22    function generation_graph_mois($nom_du_site, $prefixe, $cidr, $rrdname, $sampling) {
23        // SAGA
24        global $cfgTmp, $cfgFileSep;
25
26        $png_path = "/var/www/saga/www/images/tmp/";
27        $tmp_path .= $cfgTmp.$cfgFileSep;
28        // SAGA
29
30        // FX
31        //$png_path = "/tmp/";
32        //$tmp_path = "/tmp/";
33        // FX
34       
35        # creation du nom de fichier de l'image a creer
36        $filename = $nom_du_site."_m".".png";
37        $pngname = $png_path.$filename;
38       
39        # recuperation des donnees par un rrd fecht pour calculer le debit 95%percentile
40        $tmp_file = $tmp_path.$nom_du_site.".tmp";
41
42        `rrdtool fetch $rrdname AVERAGE --start -31Days | cut -d " " -f 2,3 > $tmp_file`;
43
44        $fd = fopen ($tmp_file, "r");
45        $i=0;
46        $tab_in = array();
47        $tab_out = array();
48        while (!feof ($fd)) {
49            $buffer = fgets($fd, 4096);
50            $buffer_split = split(" ",$buffer);
51            $tab_in[$i] = trim($buffer_split[0]);
52            $tab_out[$i] = trim($buffer_split[1]);
53            $i++;
54        }
55        fclose ($fd);
56        rsort($tab_in,SORT_NUMERIC);
57        rsort($tab_out,SORT_NUMERIC);
58        $lgin = count($tab_in);
59        $percin = $lgin-intval(($lgin*95/100));
60        $lgout = count($tab_out);
61        $percout = $lgout-intval(($lgout*95/100));
62        $dr1 max($tab_in[$percin],$tab_out[$percout]);
63        $debit = number_format($dr1*$sampling);
64        `rm $tmp_file`;
65
66        # creation de l'image dans $png_path.
67        $res = `rrdtool graph $pngname -s -31D --title "$nom_du_site - prefixe : $prefixe / $cidr" --vertical-label "bits/s" DEF:inBytesG=$rrdname:inBytes:AVERAGE DEF:outBytesG=$rrdname:outBytes:AVERAGE CDEF:input10=inBytesG,8,*,5,/,60,/,$sampling,* CDEF:output10=outBytesG,8,*,5,/,60,/,$sampling,* AREA:input10\#00FF00:"In b/s\\n" LINE1:output10\#0000FF:"Out b/s\\n"  HRULE:$dr1\#FF0000:"RENATER debit (95th percentile) $debit bits/s"`;
68       
69        # todo FX : faire un retour different si erreur
70        return $filename;
71    }
72
73    function graphiqueMetrologie() {
74        // SAGA
75        global $cfgTmp, $cfgFileSep, $cfgRrdPath;
76
77        $png_path = "/var/www/saga/www/images/tmp/";
78        $nfs_path = $cfgRrdPath.$cfgFileSep;
79
80        $monAg = new Agrement_2($this->tuple['ip_ag_numero'],$this->tuple['ip_ag_version'], $this->dbh);
81        $monAg->querySelect('r', true);
82        $nom_du_site = $monAg->get_dc_et_code();
83        $prefixe = $this->tuple['ip_adresse'];
84        $cidr = $this->tuple['ip_cidr'];
85        // SAGA
86
87        // FX
88        //$png_path = "/tmp/";
89        //$nfs_path = ""; # expl: "/mnt/db/RENATER_PREFIXES_RRD/";
90        //$nom_du_site = "U-BS-VANNES";
91        //$prefixe = "193.54.227.0";
92        //$cidr = "24";
93        // FX
94       
95        # creation du nom de fichier .rrd correspondant (du type ".../193_49_159_0_24_X.rrd")
96        # X n'est pas connu, c'est la valeur d'echantillonnage
97        # ce fichier sera sur le serveur de donnees d ou $nfs_path
98        $tmp = str_replace(".", "_", $prefixe);
99        $prefix_name = $tmp . "_" . $cidr;
100        if (is_dir($nfs_path)) {
101            if ($dh = opendir($nfs_path)) {
102                while (($file = readdir($dh)) !== false) {
103                    if (strpos($file, $prefix_name) !== false) {
104                        $found = 1;
105                        break;
106                    };
107                }
108                closedir($dh);
109            }
110        }
111        // SAGA
112        $title = "Graphiques Métrologie";
113        require_once("saga_2.inc.php");
114        include("head_2.inc.php");
115        // SAGA
116
117        // FX
118        //$html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">";
119        //$html = "<html>";
120        //$html = "<head>";
121        //$html = "<title>Graphiques Métrologie</title>";
122        //$html = "<body>\n";
123        // FX
124
125        if ($found == true) {
126            $rrdname = $nfs_path.$file;
127            $file_split = split("_", $file);
128            $tmp = split("\.",$file_split[5]);
129            $sampling = $tmp[0];
130
131            $pngJour = $this->generation_graph_jour($nom_du_site, $prefixe, $cidr, $rrdname, $sampling);
132            $pngMois = $this->generation_graph_mois($nom_du_site, $prefixe, $cidr, $rrdname, $sampling);
133   
134            $html .= "<img border=\"0\" src=\"images/tmp/".$pngJour."\" alt=\"Graphique journalier\">\n";
135            $html .= "<br>\n";
136            $html .= "<img border=\"0\" src=\"images/tmp/".$pngMois."\" alt=\"Graphique mensuel\">\n";
137            $html .= "</body></html>\n";
138   
139            echo $html;
140
141            // a voir (pb synchro avec affichage de la page)
142            //exec("rm -f ".$png_path.$pngJour);
143            //exec("rm -f ".$png_path.$pngMois);
144        } else {
145            // si le fichier rrd n'est pas présent
146            $html .= "<br>  Données indisponibles pour le moment\n";
147            $html .= "</body></html>\n";
148           
149            echo $html;
150        }
151    }
152?>
Note: See TracBrowser for help on using the browser.