• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Wie: Squid Protokollierung?

Hallo,

sorry, dass mir kein aussagekräftigerer Betreff eingefallen ist ...

Wir betreiben einen seit Jahren einen Squid, die Zugriffe werden ja in der access.log protokolliert und wir werten diese mittels SARG aus.
Leider bietet dieses Verfahren nur die Möglichkeit die Zugriffe vom Vortag auszuwerten.

Wir würden gerne die bisherige Auswertung pro Tag, pro Woche, pro Monat etc. erhalten, mit den üblichen Toplists (Top User, Top Seite, ...), aber eben auch eine "Moment-Aufnahme", die vorallem zeigt, was wird von wem gerade heruntergeladen und wieviel und seit wann.

Im Moment kopieren wir in Einzelfällen die aktuelle access.log und untersuchen diese von Hand, da ich kein Auswertungstool finden konnte, das mit dem Log-Format umgehen konnte.

Vielleicht liegt es ja auch an der schon ziemlich alten Version des Squids, die wir noch einsetzen. Aber hier wollen wir auch aktualisieren.

Jetzt aber die Frage:
Welches Logformat sollte ich idealerweise nutzen und welche Tools, um die genannten Auswertungen zu erhalten?


Kann mir hier ein freundlicher Linux-Club-Besucher helfen?
 
Niemand da, der mir einen Tip geben kann?

Die meisten Log-Analyzer, die ich gefunden habe, können mit dem von uns derzeit verwendeten Logformat scheinbar nichts anfangen.

Ich würde ja gerne das Log-Format auch umstellen, aber dann muss ich sicherlich auch Sarg anpassen, damit dieser die Auswertungen weiterhin hinbekommt.

Leider kenne ich mich mit den verschiedenen Logformats nicht aus.
Wie müsste ich denn das Logformat in der Konfiguration vom Squid umstellen, damit es dem Log eines Apache-Webservers gleichkommt?
 
Ich habe die Direktive emulate_httpd_log gefunden, aber den Proxy scheint diese Einstellung nicht zu interessieren. Er loggt weiterhin im default-Squid-Format.

Ist das Thema zu schwer, um mir hier zu helfen? :schockiert:
 
Am einfachsten und ohne zusätzlichen Programme kannst du die Logfiles per Konsole filtern und ausgeben. Du lässt den Squid so loggen, wie er das von Hause aus macht und verwendest zum filtern grep, egrep, sed, awk usw.

Das ganze kann man dann in ein Script packen.
 
Ich bin da leider kein großer Linux-Held.... Wie könnte denn ein solcher Befehl oder Script aussehen, damit ich schnell sehen kann, wer im Moment wegen was die Bandbreite belegt?
 
hambam schrieb:
Wie könnte denn ein solcher Befehl oder Script aussehen, damit ich schnell sehen kann, wer im Moment wegen was die Bandbreite belegt?

Wer im Moment wieviel Bandbreite verwendet loggt der Squid nicht. Du kannst dir höchstens anzeigen lassen, wie viele Bytes bei einer Response übertragen worden sind.
 
Mir würde es schon reichen, wenn ich die Verbindungen einer bestimmten IP-Adresse filtern kann... Welche IP am meisten runterlädt bekomme ich vom Syslog der Firewall mit, allerdings nicht was.
Wenn ich dann vom Squid die Information bekommen könnte: IP-Adresse XY auf www.heise.de das ISO-File /pfad1/pfad2/XYZ.iso
 
hambam schrieb:
Mir würde es schon reichen, wenn ich die Verbindungen einer bestimmten IP-Adresse filtern kann... Welche IP am meisten runterlädt bekomme ich vom Syslog der Firewall mit, allerdings nicht was.
Wenn ich dann vom Squid die Information bekommen könnte: IP-Adresse XY auf http://www.heise.de das ISO-File /pfad1/pfad2/XYZ.iso

Der Squid loggt die Anfragen mit, also auch weche Datei angefordert wurde, aber nicht welche IP. Ein Proxy ist kein wirkliches Überwachungstool, ganz zu schweigen von der rechtlichen Seite her, die dir das verbietet.
 
Seit wann soll der Squid denn keine IP-Adressen loggen? Es geht ja nicht um die IP der aufgerufenen Seite sondern um die IP des Users der die Seite anfordert.
In dem von meinem Squid geloggten Daten ist die IP jedenfalls gut zu erkennen.


1281453602.797 133 192.168.1.11 TCP_MISS/200 3651 GET http://safebrowsing-cache.google.com/safebrowsing/rd/ChNnb29nLW1hbHdhcmUtc2hhdmFyEAEYrJcCILCXAioFrosAAAcyBayLA
AAD hambam DIRECT/173.194.16.95 application/vnd.google.safebrowsing-chunk
1281453603.585 57 192.168.1.11 TCP_MISS/200 2603 GET http://safebrowsing-cache.google.com/safebrowsing/rd/ChNnb29nLW1hbHdhcmUtc2hhdmFyEAAYy7cBIMy3ASoFzFsAAAEyBctbA
AAB hambam DIRECT/173.194.16.95 application/vnd.google.safebrowsing-chunk
1281453603.653 48 192.168.1.11 TCP_MISS/200 402 GET http://safebrowsing-cache.google.com/safebrowsing/rd/ChFnb29nLXBoaXNoLXNoYXZhchABGNDbAyDQ2wMyBdDtAAAB hambam
DIRECT/173.194.16.95 application/vnd.google.safebrowsing-chunk
1281453603.707 51 192.168.1.11 TCP_MISS/200 1082 GET http://safebrowsing-cache.google.com/safebrowsing/rd/ChFnb29nLXBoaXNoLXNoYXZhchAAGKHTBiDA1AYqGKapAQD__________
_______________BzIFoakBAB8 hambam DIRECT/173.194.16.95 application/vnd.google.safebrowsing-chunk


Ich habe ein kleine Script-Zeile angepasst, das ich im Internet gefunden habe, die Informationen aus einer Log-Datei zieht:
Code:
cat /var/log/squid3/access.log | awk '{if ($3 == "192.168.1.1") print $7}' | awk '{ sub(/http\:\/\//, ""); sub(/\//, " " ); print $1 }' | sort -d | uniq -c | sort -r -n

Um mir anzeigen zu lassen, ob die IP eine Zip, eine Exe oder ähnliches heruntergeladen hat:
Code:
sudo cat /var/log/squid3/access.log | awk '{if ($3 == "192.168.1.1") print $7}' | awk '{ if ($1 ~ /.exe|.com|.zip|.rar|.iso/) print $1} ' | sort -d

Muss mir noch anschauen, ob Groß- und Kleinschreibung beachtet wird oder nicht.
 
Habs noch schnell herausgefunden.
Einfach ein
Code:
tolower($1)
einfügen.
Vollständig siehts dann so aus:
Code:
sudo cat /var/log/squid3/access.log | awk '{if ($3 == "192.168.1.1") print $7}' | awk '{ if (tolower($1) ~ /.exe|.com|.zip|.rar|.iso/) print $1} ' | sort -d
 
Oben