IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Monitoring d'un serveur sous Windows avec PHP


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Monitoring d'un serveur sous Windows avec PHP
    Bonjour,

    j'essaie depuis quelques jours déjà de superviser un serveur pour avoir quelques informations de mon serveur tournant sous Microsoft Windows avec PHP.

    Pour cela j'utilise les journaux et alertes de performances de windows.
    Un fichier ".csv" est créé toute les heures (voici un des fichier créé --> http://yoboss13.free.fr/serveurtest_011717.csv )

    J'ai développé ensuite une page web en php afin de découper les informations contenus dans le fichier journal, de les stocker dans une base de donnée MySQL
    et enfin de les exploiter en les affichant dans un tableau (indiquant par exemple : % d'utilisation du processeur, de la RAM, etc...)

    Malheureusement mon script PHP ne fonctionne pas, j'ai beau chercher je ne trouve pas pourquoi . Pouvez m'aider, svp ?

    Voici le contenu de ma table (test) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `test` (
      `date` varchar(256) NOT NULL,
      `output` int(11) NOT NULL,
      `ram` int(11) NOT NULL,
      `cpu` float NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Voici le code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    <?PHP
    /* FICHIER D'IMPORATION 
     
    Moniteur de performances (journaux CSV) <<----->> MySQL */
     
     
    for ($a = 0; $a < 24; $a++)
    {
    // Si l'heure est inférieure à 10, on rajoute un 0
    if ($a < 10)
            $heure = '0'.$a;
    else
            $heure = $a;
     
    /* On construit ici le nom de notre journal avec la date d'hier. Eh oui, car avec la date d'aujourd'hui, un nouveau journal est créé, donc ça ne marche plus. */
    $hier = date('d') - 1;
    // Par contre, si nous sommes le 1er février, difficile de faire le 0 février. :) Donc on prend le mois précédent.
    if ($hier < 1) {
            // On prend le timestamp d'hier à 23h59
            $timestamp_hier = mktime(date('m'), date('d'), date('Y'), 0, 0, 0) - 1;
            $mois = date('m',$timestamp_hier);
            $hier = date('d',$timestamp_hier);
    }
    else
            $mois = date('m');
     
    // On construit le chemin du journal
    $chemin_du_fichier = 'C:\PerfLogs\serveurtest_'.$mois.$hier.$heure.'.csv';
     
     
    // Si le fichier existe bien
    if (file_exists($chemin_du_fichier))
            {
                    // Connexion au serveur MySQL
                    $db = mysql_connect('localhost', 'root', '');
                    // Séléction de base de données
                    mysql_select_db('test',$db);
     
                    // Requête d'enregistrement
                    mysql_query("LOAD DATA INFILE '$chemin_du_fichier'
                    INTO TABLE `test`
                    FIELDS TERMINATED BY ','
                    ENCLOSED BY '\"'
                    ESCAPED BY '/'
                    LINES TERMINATED BY '\r\n';") or die (mysql_error());
     
                    // On supprime les lignes où CPU ne vaut rien (bugs ^^)
                    mysql_query("DELETE FROM test WHERE cpu = 0");
     
                    // Gros bisous MySQL !
                    mysql_close();
            }
    else
            {
                    // On affiche une erreur
                    echo "Un journal n'a pas été trouvé, heure ".$heure." --> ".$chemin_du_fichier."<br />";
            }
     
    }
     
     
     
    echo '<table><tr style="font-weight: bold"><td>Date/Heure</td><td>Débit upload</td><td>RAM libre</td><td>%CPU</td></tr>';
    $retoursql = mysql_query('SELECT STR_TO_DATE(test.date, "%m%d%Y %H:%i:%s") AS date, output, ram, cpu FROM test') or die (mysql_error());
    while ($array = mysql_fetch_array($retoursql))
    {
     
    // On formate l'upload, ne pas oublier de diviser par 1024 et non par 1000 !
    $output = number_format($array[1] / 1024, 0, ',', ' ');
     
    // On arrondit aussi l'indicateur CPU
    $cpu = round($array[3], 1);
     
    // JAUGE CPU
            // On définit les couleurs
            if ($cpu < 25)
                    $couleur = "rgb(0,255,0)";
            elseif ($cpu < 50)
                    $couleur = "yellow";
            elseif ($cpu < 75)
                    $couleur = "orange";
            else
                    $couleur = "red";
    // JAUGE CPU
     
    echo '<tr>
    <td>'.$array[0].'</td>
    <td style="text-align: right">'.$output.' Ko/s</td>
    <td style="text-align: right">'.$array[2].' Mo</td>
    <td style="width: 50%"><div style="height: 15px; width: '.$cpu.'%; background-color: '.$couleur.'">'.$cpu.'%</div></td>
    </tr>';
     
    }
    echo '</table>';
     
     
    ?>
    Et voici l'erreur que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File 'C:PerfLogsserveurtest_011700.csv' not found (Errcode: 2)
    J'ai bien vérifié le fichier existe. Au faite j'utilise EasyPHP 1.8.0.1.

    Merci d'avance pour l'aide que vous pourrez m'apporter .

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    je pense que ça vient des backslash, ils servent normalement pour échapper
    les caractères spéciaux.

    Dans une chaine à simple guillemets ils sont d'usage très limité, sauf erreur
    tu ne peux qu'échapper le guillemet simple. Par contre le backslash lui-même
    devrait être échappé aussi. Essaie avec ceci:

    'C:\\PerfLogs\\serveurtest_'.$mois.$hier.$heure.'.csv'
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Monitoring d'un serveur sous Windows avec PHP
    J'ai toujours la même erreur !

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    tu pourrais essayer avec des / au lieu des \
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Fichier introuvable avec fileexists
    bonjour,

    j'ai changé les \ par des / et j'obtiens une nouvelle erreur, voir
    dans cette discussion

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Monitoring d'un serveur sous Windows avec PHP
    Bonjour,
    la connexion à ma base de donnée MySQL étant résolu, je suis confronté à un nouveau problème :

    Erreur obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Incorrect integer value: '\\KENNY\Interface r�seau(Carte r�seau Fast Ethernet PCI Realtek RTL8139 Family)\Octets envoy�ss' for column 'output' at row 1
    Voici les première ligne du fichier .csv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    1     (PDH-CSV 4.0) (Paris, Madrid)(-60),"\\KENNY\Interface réseau(Carte réseau Fast Ethernet PCI Realtek RTL8139 Family)\Octets envoyés/s","\\KENNY\Mémoire\Méga-octets disponibles","\\KENNY\Processeur(_Total)\% Temps processeur"
    2     01/31/2009 23:11:27.484,"0","2421","50"
    3     01/31/2009 23:12:27.484,"36.471028628244085","2396","58.684895833333343"
    4     01/31/2009 23:13:27.484,"13.664594417886669","2366","58.6328125"
    5     01/31/2009 23:14:27.484,"13.668156586226509","2341","58.763020833333336"
    Merci pour votre aide.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Monitoring d'un serveur sous Windows avec PHP
    Bonjour,

    Pour rappel, voici le contenu de ma table (test) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE `test` (
      `date` varchar(256) NOT NULL,
      `output` int(11) NOT NULL,
      `ram` int(11) NOT NULL,
      `cpu` float NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    Voici la partie du code concernant la connexion au serveur MySQL ainsi que la requête d'enregistrement dans la base données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    // Connexion au serveur MySQL
    $db = mysql_connect('localhost', 'root', 'mysql') or die(mysql_error());
    // Séléction de base de données
    mysql_select_db('test',$db) or die(mysql_error());
     
    // Requête d'enregistrement
    mysql_query("LOAD DATA INFILE '$chemin_du_fichier'
    INTO TABLE `test`
    FIELDS TERMINATED BY ','
    ENCLOSED BY '\"'
    ESCAPED BY '/'
    LINES TERMINATED BY '\r\n';") or die (mysql_error());
     
    // On supprime les lignes où CPU ne vaut rien (bugs ^^)
    mysql_query("DELETE FROM test WHERE cpu = 0");
     
    // Gros bisous MySQL !
    mysql_close();
    J'utilise EasyPHP 3.0.

    Merci pour l'aide que vous pourrez m'apporter .

Discussions similaires

  1. Utilisation de is_dir sous windows avec php5
    Par SWaPPeR dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2006, 16h45
  2. configuration virtual hosts sous windows avec apache
    Par ceriise dans le forum Apache
    Réponses: 3
    Dernier message: 05/03/2006, 20h57
  3. [Octave / Gnuplot] Sous Windows avec cygwin
    Par guemairm dans le forum Autres langages
    Réponses: 1
    Dernier message: 01/02/2006, 15h08
  4. socket et fork() sous Windows avec Cygwin
    Par Djakisback dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 20/12/2005, 00h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo