Wanneer je ownCloud gebruikt als eigen cloud zul je er ook snel achter komen dat je nog steeds moet inloggen om de ownCloud log te bekijken. Daarvoor is deze post. Het geeft antwoord op de vraag: “Hoe zorg ik dat het ownCloud log in Logwatch wordt opgenomen?”.
Het antwoord is uiteindelijk vrij simpel, maar ik heb het volledige antwoord nog nergens kunnen vinden. Daarom deze instructie. Omwille van de lengte is deze in twee delen opgesplitst. Het eerste deel gaat over het inrichten van ownCloud. Het tweede deel gaat over het inrichten van Logwatch zodanig dat deze het ownCloud log meeneemt. Dit is deel 2, deze gaat er vanuit dat je ownCloud log in Logwatch deel 1 reeds doorlopen hebt.
Deel 2: ownCloud log in Logwatch opnemen
Hier wordt ervan uitgegaan dat de ownCloud server draait op Raspbian, zijn deze instructies ook daar primair voor bedoeld. Waarom? De Raspberry kost maar 30 euro en draait op 5 Watt. Reken wel mee dat je een of meer SD kaarten, een voeding, een kastje en waarschijnlijk een harde schijf nodig hebt, dus kom je in totaal op meer uit. Maar hoe krijg je nu die ownCloud log in Logwatch?
Logwatch leest de scripts uit in /usr/share/logwatch/scripts/services/. Als je hierin een bestand plaatst met de naam owncloud en met een juist script erin, dan wordt deze opgenomen in de email. Simpel! Kopieer een bestaand script en pas deze aan zodat het ownCloud log wordt uitegelezen en in Logwatch wordt uitgespuugt.
2a. waar staat het script?
nano /etc/logwatch/conf/logfiles/owncloud.conf
# The LogFile path is relative to /var/log by default.
# You can change the default by setting LogDir.
LogFile = /var/log/owncloud/*.log
# This enables searching through zipped archives as well.
Archive = /var/log/owncloud/*.gz
# Expand the repeats (actually just removes them now).
*ExpandRepeats
2b. wat moet in de email?
nano /etc/logwatch/conf/services/owncloud.conf
# The title shown in the report.
Title = “ownCloud”
# The name of the log file group (file name).
LogFile = owncloud
2c. welke regels wil je zien?
Hier is een eenvoudig voorbeeld voor een script dat het volledige log van de voorgaande dag in de email opneemt:
#!/usr/bin/perl
#ownCloud standard environment variables
$DateRange = $ENV{‘LOGWATCH_DATE_RANGE’} || yesterday;
if ($DateRange =~ /yesterday/) {
$epoc = time();
$epoc = $epoc – 24 * 60 * 60; # one day before of current date.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoc);
$DateString = sprintf(“%04d-%02d-%02d”, $year+1900, $mon+1, $mday);
$DateString = $DateString.”T”;
}
while (defined($ThisLine = <STDIN>)) {
$ThisLine =~ s/\\//g;
$ThisLine =~ s/%20/ /g;
$FullLog{$ThisLine}++;
#filter for datarange yesterday
if ( ($DataRange = yesterday) and ($ThisLine !~ /$DateString/) ) {
#don’t care about these
}
else {
# Report any unmatched entries…
chomp($ThisLine);
$Unmatched{$ThisLine}++;
}
}
if (keys %Unmatched) {
print “\n**Unmatched Entries**\n”;
foreach $ThisOne (keys %Unmatched) {
print ” $Unmatched{$ThisOne} Time(s): $ThisOne\n”;
}
}
exit(0);
Nu heb je het ownCloud log in Logwatch opgenomen. Maar het kan nog beter toch?
2d. maak het leesbaar
Het script in kale vorm plaatsen is een relatief simpel klusje. Als je simpelweg het gehele log wilt laten uitspugen, dan is dit gelukkig niet moeilijk. Het bovenstaande script laat het volledige log in de email meesturen en haalt een aantal ‘onleesbare’ tekens eruit (de \ en de%20) en vervangt deze. Echter om de gegevens in een beter interpreteerbare vorm te krijgen zul je nog wat moeten tweaken. Dit is nog ‘work in progress’.
Hierbij kunnen de volgende linux instructies van pas komen:
Test het script:
cat /owncloud/owncloud.log | perl /usr/share/logwatch/scripts/services/owncloud
Test logwatch:
logwatch –detail high –mailto name@domain.com –service all –range yesterday