Announcement

Collapse
No announcement yet.

Récupérer informations

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Récupérer informations

    Bonjour,
    je souhaiterai intégrer à un site web existant, le nombre d'hotes up et down comme le header d'oreon, mais je n'y arrive pas.
    Je voudrai savoir comment réccupérer ces infos??

    Merci par avance

    Nicolas

  • #2
    Salut,

    L'endrois ou tu peux trouver ces infos en base est :

    - pour les status des hotes :
    base : Oreon
    table : log_archive_host
    (EDIT : par contre je ne pense pas en temps reel, je vais verifier)

    - pour les logs remontés :
    base : ODS
    tables : log

    Les temps sont en timestamp Unix.

    voila un exemple en php pour les logs :

    PHP Code:
    <?php

    #=====================================================================
    #
    # OreonGetLogs Script
    # VER. 1.0
    # Copyright (c) 2007 nicolas.verriest-at-gmail.com
    #
    # This program is free software; you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation; either version 2 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program; if not, write to the Free Software
    # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
    # USA
    #
    #=====================================================================


    class SemaphoreLogs {
            var 
    $logsToCheck 1000;
            var 
    $logsStartTime 2// in days
            
    var $lastLogId;
            var 
    $arraylistLogs = array();
            var 
    $logsToDisplay 10;
            var 
    $logView;

            var 
    $linkToDb;

            
    //constructor
            // input : $view : string => defines the logs to view
            //              Values : ALL (for all logs), NOT_OK (filter logs, no UP or OK)
            
    function SemaphoreLogs($view) {
                    
    $this->connectDb();
                    
    $this->logView $view;
            }

            function 
    connectDb(){
                    
    $host '42.42.42.42';
                    
    $db 'OreonDataStorage';
                    
    $user 'H2G2';
                    
    $pass 'The_response_to_life_universe_and_everything_else';

                    
    $this->linkToDb mysql_connect($host$user$pass) or die('ERROR : Can\'t connect to DB');
                    
    mysql_select_db($db$this->linkToDb);
            }

            function 
    closeDb() {
                    
    mysql_close($this->linkToDb);
            }


            function 
    printLogs() {

                    
    $this->loadLastLogs('TIME'$this->logView);

                    
    $logsToPrint $this->arraylistLogs;

                    
    $html .= "<table id=\"logs\" align=\"center\">\n";
                    
    $html .= "<thead><tr><th>Date</th><th>Hote</th><th>Service</th><th>Status</th></tr></thead>\n";
                    
    $html .= "<tbody>\n";

                    foreach( 
    $logsToPrint as $log ) {
                            
    $hostName $log['host_name'];
                            
    $service $log['service_description'];
                            
    $status $log['status'];
                            
    $output $log['output'];
                            
    $dateArray getdate($log['ctime']);
                            
    $date $dateArray['mday'].'/'.$dateArray['mon'];
                            
    $date .= ' - '.$dateArray['hours'].':'.$dateArray['minutes'].':'.$dateArray['seconds'];

                            
    $html .= "<tr class=\"$status\"><td>$date</td><td>$hostName</td><td>$service</td><td>$status</td>\n";
                    }

                    
    $html .= "</tbody></table>\n";

                    echo 
    $html;

            }


            
    //input $loadOption : string => method used to load
            //              values = LAST_RECORDS => loads the last '$this->logsToCheck' logs
            //                       TIME => load the last logs from '$this->logsStartTime' to now
            //      $filterOption : string => filtered info
            //              values = ALL
            //                       NOT_OK (*default)=> diplays everything that is not OK or UP

            
    function loadLastLogs($loadOption$filterOption='NOT_OK') {

                    
    $sqlFilter 'status <> \'UP\' AND status <> \'OK\' AND status IS NOT NULL';
                    
    $maxLimit $this->logsToDisplay;

                    
    //apply values to vars to make a filter on sql query
                    
    if($filterOption != 'NOT_OK') {
                             
    $sqlFilter 'status IS NOT NULL';
                    }

                    if(
    $loadOption == 'LAST_RECORDS') {
                            
    $this->setLastLogId();
                            
    $lastLog $this->lastLogId;
                            
    $firstLog $lastLog $this->logsToCheck;
                            
    $sqlQuery "SELECT ctime, host_name, service_description, status, output FROM log where `log_id` BETWEEN $firstLog AND $lastLog AND
    $sqlFilter  ORDER BY ctime DESC LIMIT 0,$maxLimit";
                            
    $result mysql_query($sqlQuery);
                            while(
    $currentLog mysql_fetch_array($result) ){
                                    
    array_push($this->arraylistLogs$currentLog);
                            }
                    }
                    else if (
    $loadOption == 'TIME') {
                            
    $currentDate getdate();
                            
    $dateEnd $currentDate[0];
                            
    $dateBegin gmmktime($currentDate['hours']-2$currentDate['minutes'], $currentDate['seconds'], $currentDate['mon'], $currentDate['m
    day'
    ]-$this->logsStartTime$currentDate['year']);
                            
    $sqlQuery "SELECT ctime, host_name, service_description, status, output FROM log where `ctime` BETWEEN $dateBegin AND $dateEnd AND
    $sqlFilter ORDER BY ctime DESC LIMIT 0,$maxLimit";
                            
    $result mysql_query($sqlQuery);
                            while(
    $currentLog mysql_fetch_array($result) ){
                                    
    array_push($this->arraylistLogs$currentLog);
                            }
                    }
                    else {
                            die(
    "ERROR Arg passed to function loadLastlogs() is not good, please check the code :D.<br />\n");
                    }
            }

            function 
    setLogsToCheck($numberOfLogs) {
                    
    $this->logsToCheck $numberOfLogs;
            }

            function 
    setLogsStartTime($numberOfDays) {
                    
    $this->logsStartTime $numberOfDays;
            }

            function 
    setLastLogId() {
                    
    $sqlQuery 'SELECT MAX(`log_id`) as maxId from log';
                    
    $result mysql_query($sqlQuery);
                    
    $maxId mysql_fetch_array($result);
                    
    $this->lastLogId $maxId['maxId'];
            }

    }


    ?>
    l'utilisation :
    PHP Code:
              <p> Alertes des dernières 48h : </p>
              <?php
                    
    require_once("include/semaphore.getLogs.php");
                    
    $currentLogs = new SemaphoreLogs("NOT_OK");
                    
    $currentLogs->setLogsStartTime(2);
                    
    $currentLogs->printLogs();
              
    ?>
    Ca ne reponds pas exactement à tes besoins mais c'est ce que j'ai qui se rapproche le plus ^^. Ca te donne aussi une idée pour savoir comment recuperer les infos, parser les timestamp, etc.

    Le code n'est pas documenté à fond mais il est pas super compliqué donc j'espere que ça ira.
    Last edited by NoS; 27 April 2007, 10:26.
    ..()_() .°("who | grep -i blonde | date; cd ~; unzip;")
    =(o_0)=
    *(() () Nicolas Verriest, France

    Comment


    • #3
      re

      Merci beaucoup je vais voir sa.

      Merci!!!

      Nico

      Comment


      • #4
        As tu réussi a faire ton script pour les statuts en live des hosts ? Si oui, sa m'interesse

        Comment

        Working...
        X