Synology-Logfiles listen

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hi Leutz,

die im DS-Manager verwendeten und auch unter Protokoll angezeigten Log-Files liegen in einem struct-Format vor. Das ist leider nicht ganz so schön zu lesen als wenn sie in XML vorliegen würden. Ich hatte zwar bereits ein anderes Format bei den Synology-Entwicklern angeregt, aber bislang hat sich ja nichts getan (Beta).

Ich mach deshalb mal hier eine Skizze, wie man diese Protokolle auslesen kann. Der Einfachheit halber mit dem user-Apache und mit einer Kopie der Log-File /var/log/synobackup.log ... ich hab die ins Verzeichnis /volume1/web/log kopiert, weil die openbase-Restriction wahrscheinlich fürs PHP des user-Apache überall eng ist ;). Das Skript selbst hab ich hier liegen: /volume1/web/report.php

PHP:
<html><head><style>td{background-color:#eee;min-width:45px;text-align:right}</style></head><body>/var/log/synobackup.log<table>
<?php
function ll($fd){
  $c0 = fread($fd,1); 
  $c1 = fread($fd,1); 
  return ord($c0)+ord($c1)*256;
}
$fd = fopen('./log/synobackup.log','rb');
$in = fread($fd,16);
while (!feof($fd) && $in = @fread($fd,ll($fd)-2)) {
   $i[0]=ord($in[0]) +ord($in[1])*256;  print '<tr><td>'.$i[0].'</td><td>';
   $d=ord($in[2])+ord($in[3])*256+ord($in[4])*256*256+ord($in[5])*256*256*256; print date('Y-m-d H:i:s',$d).'</td><td>';
   $i[1]=ord($in[6]) +ord($in[7])*256;  print $i[1].'</td><td>';
   $i[2]=ord($in[8]) +ord($in[9])*256;  print $i[2].'</td><td>';
   $i[3]=ord($in[9]) +ord($in[10])*256; print $i[3].'</td><td>';
   $i[4]=ord($in[11])+ord($in[12])*256; print $i[4].'</td><td>';
   $i[5]=ord($in[13])+ord($in[14])*256; print $i[5].'</td><td>';        
   $i[6]=ord($in[14])+ord($in[15])*256; print $i[6].'</td><td>';
   $i[7]=ord($in[16])+ord($in[17])*256; print $i[7].'</td><td>';
   $i[8]=ord($in[18])+ord($in[19])*256; print $i[8].'</td><td>';
   $i[9]=ord($in[20])+ord($in[21])*256; print $i[9].'</td><td>';             
   $offset=22;
   print substr($in,$offset,$i[1]).'</td><td>';$offset+=$i[1];
   print substr($in,$offset,$i[2]).'</td><td>';$offset+=$i[2];
   print substr($in,$offset,$i[6]).'</td><td>';$offset+=$i[6];      
   print substr($in,$offset,$i[7]).'</td></tr>';        
}
?>
</body></html>

Da ich PHP nicht wirklich kenne :D, könnte vielleicht jemand mal schauen, ob er die interger(16-Bit)-Konvertierereien eleganter lösen kann (ich hab da grad keine sonderliche Ideen).

Wenn das hier jemand versteht, dann bekommt er grad die Aufgabe, sich die nächste Log-File vorzunehmen oder sich einen Algorithmus auszudenken, der für alle Logfiles passt :D, eventuell mit Aufrufoptionen im Searchstring der URL (Filename, Offset, usw.)

Was die Spalten nun wirklich bedeuten ... ich hab keine Ahnung. Aber man kann ein paar Regelmäßigkeiten erkennen. Auch hier würde ich mich über Interpretationshilfen freuen. (Die erste Spalte ist wohl der Typ im Protokoll-Listing - ich hab mal mein Protokoll dazu gehangen - Sortierung ist reverse)

Itari
.
 

Anhänge

  • log1.jpg
    log1.jpg
    127,8 KB · Aufrufe: 500
  • log2.jpg
    log2.jpg
    60,6 KB · Aufrufe: 488
Zuletzt bearbeitet:

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
oh, prima. Würde mich wirklich freuen, wenn auf diese Weise die logfiles etwas zugänglicher würden. Leider kann ich wenig beitragen außer Lob ;)... ach ja und den Hinweis, dass oben sicherlich die synobackup.log gemeint ist.

[Edit] Hm, bei mir sieht das leider deutlich weniger schön aus, dabei habe ich den php-Code nur kopiert und ansonsten Verzeichnis etc. wie oben beschrieben übernommen :confused:. Ach ja, die Rechte der log-Datei musste ich noch ändern.

Gruß
Peter
 

Anhänge

  • logfile800x600.jpg
    logfile800x600.jpg
    49,4 KB · Aufrufe: 477
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
So war es gemeint - Danke

Itari
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
Mist, Änderung zu spät gewesen... magst Du oben nochmal schauen!?

Gruß
Peter
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi,
Mist, Änderung zu spät gewesen... magst Du oben nochmal schauen!?

Gruß
Peter

Das sieht ja schlimm aus bei dir ... überhaupt nicht schön ... probier mal das Log zu löschen (Protokoll im DS-Manager) und nach dem ersten Backup-Durchlauf probierst noch mal bzw. schickst mir die log-Datei per IM zu, damit ich mal schauen kann, warum du einen anderen Aufbau hast.

Itari
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
so, hier mal das neue Ergebnis. Schon besser, zumindest sind die Spalten passend gefüllt, aber der rechte Teil sieht immer noch merkwürdig aus.
Log-Datei kann ich Dir natürlich schicken, aber wie? Dateianhang an PN geht ja nicht...

Gruß
Peter
 

Anhänge

  • logfile2-800x.jpg
    logfile2-800x.jpg
    34,6 KB · Aufrufe: 455

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi,
so, hier mal das neue Ergebnis. Schon besser, zumindest sind die Spalten passend gefüllt, aber der rechte Teil sieht immer noch merkwürdig aus.
Log-Datei kann ich Dir natürlich schicken, aber wie? Dateianhang an PN geht ja nicht...

Gruß
Peter

Einfach hier als Anhang in einem Post ...

Itari
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Beim 2. Hingucken sehe ich ein systematisches Problem ... durch die unterschiedlichen Prozessor-Typen wird wohl beim Abspeichern von Integern ein anderes Verfahren angewandt MSB vs LSB und das wohl auf Bytes angewendet ... ist ne Vermutung ...

Auf mein Skript angewendet, muss das wohl dann korrigiert werden - ich mach mal ein Beispiel:

statt

Rich (BBCode):
   $i[2]=ord($in[8]) +ord($in[9])*256;  print $i[2].'</td><td>';

muss dann wohl

Rich (BBCode):
   $i[2]=ord($in[9]) +ord($in[8])*256;  print $i[2].'</td><td>';

verwendet werden.

Vielleicht kann das ja jemand mal testen

Itari
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
ich habe es auch mal mit der Änderung probiert, hat aber nicht wirklich was gebracht. Logfile hängt hier an.

Gruß
Peter
 

Anhänge

  • logfile3.jpg
    logfile3.jpg
    26,6 KB · Aufrufe: 434

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Durch das Herumdrehen, dürften die Werte nicht mehr gleich zum vorherigen Listing sein: also aus 256 muss dann eine 1 werden ... damit würden dann die Offsets bzw. Längenschlüssel passen ...

Itari
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
tja... ich habe einfach die Zeile aus dem Script oben durch die andere ersetzt; macht anscheinend keinen Unterschied. Ich sehe gerade, dass das logfile an vorherigen Beitrag nicht dranhängt, hatte ich aber hochgeladen :confused:... ich versuch es jetzt nochmal (ah, ich hatte das mit Originaldateinamen hochgeladen, das geht wohl nicht; jetzt mit angehängtem .txt).

Gruß
Peter
 

Anhänge

  • synobackup.log.txt
    286 Bytes · Aufrufe: 21

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Hi,
tja... ich habe einfach die Zeile aus dem Script oben durch die andere ersetzt; macht anscheinend keinen Unterschied. Ich sehe gerade, dass das logfile an vorherigen Beitrag nicht dranhängt, hatte ich aber hochgeladen :confused:... ich versuch es jetzt nochmal (ah, ich hatte das mit Originaldateinamen hochgeladen, das geht wohl nicht; jetzt mit angehängtem .txt).

Gruß
Peter

Du musst alle Zeilen ersetzen, in denen die beiden Bytes, die zusammen ein Integer ausmachen, drin sind ... ich hatte doch extra geschrieben: 'ich mach mal ein Beispiel' - das bedeutet doch, dass man noch mehr machen muss ...

Itari
 

PeterG

Benutzer
Mitglied seit
12. Sep 2008
Beiträge
472
Punkte für Reaktionen
0
Punkte
0
Hi,
danke für den Hinweis; da hatte ich nicht richtig hingeschaut, sorry. Ich probiers bei Gelegenheit.

Gruß
Peter
 

hypo

Benutzer
Mitglied seit
12. Apr 2011
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Bin gerade über google auf diesen Thread gestoßen. Geht genau in die Richtung die ich Suche. Und zwar möchte ich über ein Script die Logs aus dem DSM analysieren und per Mail verschicken.
Leider kann man so wie die Logs vorliegen nichts mit Ihnen anfangen.
Leider kann ich auch mit dem hier gegebenen Code nichts anfangen weil bei mir die Datei synobackup.log nicht existert.
In welchen Dateien sind denn die Protokolle (z.B. Dateibrowser Protokoll, Windows Dateidienstprotokoll, WebDav Protokoll) aus dem DSM gespeichert.

Eine Andere Möglichkeit wäre den Code zu übernehmen den das DSM benutzt. Sehe ich das richtig, dass die Protokoll verarbeitung in der /usr/syno/synoman/webman/modules/SystemInfoApp/LogViewer.cgi geschieht. Leider kann man die nicht im Klartext anzeigen. Gibt es da eine möglichkeit?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Ich habe die Logfile-Geschichte auch in meinem AdminTool eingebaut. Vielleicht ist ein Blick hierauf sinnvoll.

Itari
 

hypo

Benutzer
Mitglied seit
12. Apr 2011
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
Hi Danke für den Tip
mit dem Admin Tool kann ich das System- und Verbindungsprotokoll anschauen.
Aber die Protokolle die mich am Meisten Interessieren (File Station Protokoll, Dateibrowser-Protokoll, WebDAV-Protokoll und Windows-Dateidienstübertragungsprotokoll) finde ich im Admin Tool nicht. Wo sind diese Protokolle im Admintool?
Ist es möglich, erlaubt Teile deines Admin Tools in andere Scripte einzubauen?

Vielen Dank

Hypo
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Die anderen Protokolle gab es noch nicht, als ich das AdminTool geschrieben hatte.

Und ja, selbstverständlich kannst Teile des AdminTools weiterverwenden, wenn du sie auch wieder unter GPL3 stellst und hier im Forum für alle veröffentlichst (ihc habe dazu ja auch einen Thread gemacht). Der Sinn und Zweck ist ja, dass sich nicht irgendwer daran bereichert, sondern dass alle sehen können, wie fantastisch die DiskStations sind und was die Community da noch alles so herauszaubern kann.

Itari
 

hypo

Benutzer
Mitglied seit
12. Apr 2011
Beiträge
12
Punkte für Reaktionen
0
Punkte
0
ok danke. ich habe in der psql datenbank synolog die entsprechenden logfiles gefunden. Ich werde jetzt ein Auswertungs Tool mit PHP basteln. Wenn ich etwas habe werde ich es hier veröffentlichen.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat