Webalizer Daten fehlen aufgrund fehlenden Pakets

Dieses Thema im Forum "Allgemein" wurde erstellt von Germanius, 2. Jan. 2012.

  1. Germanius

    Germanius New Member

    Hallo,

    meine Webalizer STatistiken haben sich nicht aktualisiert, da nach dem Upgrade auf Debian 6 ein Paket gefehlt hat:
    Error Opening file /usr/share/GeoIP/GeoIP.dat
    Nachdem ich es nachinstalliert habe, werden die Statistiken nun aktualisiert. Was ist jedoch mit den Tagen an denen die Statistiken nicht aktualisiert wurden? Die fehlen jetzt in der Statistik. Kann man die nachträglich noch irgendwie wieder herstellen?
    Danke.
     
  2. Till

    Till Administrator

    Die Logdateien der letzten 30 Tage sollten im log Verzeichnis vorhanden sein. Du müsstest aber wohl webalizer für jeden Tag und jede Webseite einmal aufrufen, so wie es das ispconfig cron_daily.php script macht. Wahrscheinlich musst Du aber auch die bereits komprimierten logs erstmal mit gzip entpacken.

    Ein fertiges Script gibt es meines Wissens nach nicht.
     
  3. Germanius

    Germanius New Member

    Danke, habe es versucht. Script wird auch ausgeführt, aber sehen tu ich in den Statistiken nichts.

    Habe zwei Dateien in /usr/local/ispconfig/server angelegt:

    webalizer.sh
    Code:
    #!/bin/sh
    
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin
    
    /usr/bin/php -q /usr/local/ispconfig/server/webalizer.php
    und webalizer.php
    Code:
    <?PHP
    
    require('/usr/local/ispconfig/server/lib/config.inc.php');
    require('/usr/local/ispconfig/server/lib/app.inc.php');
    
    set_time_limit(0);
    
    // make sure server_id is always an int
    $conf['server_id'] = intval($conf['server_id']);
    
    
    // Load required base-classes
    $app->uses('ini_parser,file,services,getconf');
    
    function setConfigVar( $filename, $varName, $varValue ) {
        if($lines = @file($filename)) {
            $out = '';
            $found = 0;
            foreach($lines as $line) {
                @list($key, $value) = preg_split('/[\t= ]+/', $line, 2);
                if($key == $varName) {
                    $out .= $varName.' '.$varValue."\n";
                    $found = 1;
                } else {
                    $out .= $line;
                }
            }
            if($found == 0) {
                //* add \n if the last line does not end with \n or \r
                if(substr($out,-1) != "\n" && substr($out,-1) != "\r") $out .= "\n";
                //* add the new line at the end of the file
                if($append == 1) $out .= $varName.' '.$varValue."\n";
            }
    
            file_put_contents($filename,$out);
        }
    }
    
    
    /*
    $sql = "SELECT domain_id, domain, document_root FROM web_domain WHERE stats_type = 'webalizer' AND server_id = ".$conf['server_id'];
    $records = $app->db->queryAllRecords($sql);
    */
    
        //$yesterday = date('Ymd',time() - 86400);
        $yesterday = '20111211';
        $logfile = '/var/www/clients/client1/web44/log/'.$yesterday.'-access.log';
         if(!@is_file($logfile)) {
            $logfile = '/var/www/clients/client1/web44/log/'.$yesterday.'-access.log.gz';
            if(!@is_file($logfile)) {
                continue;
            } }
    
        $domain = 'domain.de';
        $statsdir = '/var/www/clients/client1/web44/web/stats';
        $webalizer = '/usr/bin/webalizer';
        $webalizer_conf_main = '/etc/webalizer/webalizer.conf';
        $webalizer_conf = '/var/www/clients/client1/web44/log/webalizer.conf';
    
        if(!@is_file($webalizer_conf)) {
            copy($webalizer_conf_main,$webalizer_conf);
        }
    
        if(@is_file($webalizer_conf)) {
            setConfigVar($webalizer_conf, 'Incremental', 'yes');
            setConfigVar($webalizer_conf, 'IncrementalName', $statsdir.'/webalizer.current');
            setConfigVar($webalizer_conf, 'HistoryName', $statsdir.'/webalizer.hist');
        }
    
    
        if(!@is_dir($statsdir)) mkdir($statsdir);
        exec("$webalizer -c $webalizer_conf -n $domain -s $domain -r $domain -q -T -p -o $statsdir $logfile");
    
    ?>
    Die Logdatei hab ich entpackt.
    Woran kann es liegen, dass es nicht geht?
     
  4. Till

    Till Administrator

    Webalizer merkt sich welche Daten die neuetsne Statistiken sind und nimmt keine älteren danach mehr an. Mach mal ein Backup des stats Verzeichnisses und lösche dann mal die webalizer.current Datei und versuch es dann nochmal.
     
  5. Germanius

    Germanius New Member

    Nun hat es funktioniert, allerdings sind jetzt in diesem Monat (Dezember) alle anderen Tage gelöscht. Es sind nun nur noch STatistiken für den ausgeführten Tag verfügbar. Auch die davor schon vorhandenen sind jetzt weg.
    Monat November und Januar sind normal geblieben.
     
  6. Germanius

    Germanius New Member

    Heute Nacht haben sich die Statistiken für Januar aktualisiert. Für den 1. sind sie nun auch weg, nur für den 2. zu sehen.
    Am Dezember hat sich nichts geändert, wird weiterhin nur ein Tag dargestellt.
    Noch andere Ideen?
     
  7. Till

    Till Administrator

    Leider nicht wirklich, da ich micht mit dem internen Aufbau der Webalizer History Datei nicht auskenne. Vielleicht haben die ja eine Mailingliste pder ähnliches, wo Du mal nachfragen könntest.
     
  8. Germanius

    Germanius New Member

    Danke, habe mir derweil anders geholfen. Zwar nicht so schön, aber immerhin:
    Wenns wen interessiert, es gibt ein Programm, welches relativ einfach aus den Logs webalizer Statistiken generieren kann. Und zwar lokal aufm PC. So bleibt der Prozess aufm Server unangetastet:
    Webalizer-GUI
     

Diese Seite empfehlen