Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:mailserver:logfileauswertung_en [08.03.2011 14:19. ] – [Download] django | centos:mailserver:logfileauswertung_en [09.06.2011 11:30. ] (aktuell) – [manueller Start des Dämon] django | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Logfileauswertungen ====== | ||
+ | Damit wir uns im laufenden Betrieb regelmäßigen über den aktuellen Status ein Bildmachen können - und das ohne langwierig im Logfile des Postfix herumzusuchen - stehen uns mehrere Hilfsprogramme zur Verfügung.\\ | ||
+ | \\ | ||
+ | Im Detail wollen wir uns nun zwei der Varianten genauer ansehen. | ||
+ | - **pflogsumm** Logfilezusammenfassung generieren und via eMail dem postmaster zur Verfügung stellen. | ||
+ | - **Awstats** Logfilezusammenfassung generieren und zum Abrufen via Browser anbieten | ||
+ | - **mailgraph** Graphisch sehr ansprechende Logfilezusammenfassung generieren und zum Abrufen via Browser anbieten | ||
+ | ===== pflogsumm ===== | ||
+ | Mit Hilfe dieses kleinen Perlscriptes erstellen wir nun täglich einen Statusbericht über das was unserem MX widerfahren ist. :) | ||
+ | ==== Installation ==== | ||
+ | Die Installation des Perlscriptes gestaltet sich im gewohnten Maße sehr einfach über **YUM**. | ||
+ | # yum install postfix-pflogsumm | ||
+ | Anschließend finden wir in **// / | ||
+ | ==== manueller Programmaufruf ==== | ||
+ | Ein **man pflogsumm** bzw. **pflogsumm --?** verrät uns im Detail, welche Programmoptioonen zur Verfügung stehen. | ||
+ | \\ | ||
+ | Wollen wir uns einen Bericht des heutigen Tages ansehen, so generieren wir diesen on-the-fly mit: | ||
+ | # / | ||
+ | Interessiert uns was gestern los war, so lautet der Aufgruf ganz einfach: | ||
+ | # / | ||
+ | ==== automatischer Programmaufruf ==== | ||
+ | Für die tägliche Erstellung unserer Mailserverstatistik bemühen wir nun ganz einfach unseres cron-deamon. | ||
+ | \\ | ||
+ | Hierzu legen wir mit dem Editor unserer Wahl eine betreffende Konfigurationsdate : | ||
+ | # vim / | ||
+ | < | ||
+ | 10 0 * * * root / | ||
+ | Täglich um 10 Minuten nach 12:00 Uhr p.m., wird die Statistik des letzten Tages erstellt und mittels **mailx** als eMail an den postmaster verschickt. | ||
+ | \\ | ||
+ | < | ||
+ | From: root < | ||
+ | To: postmaster@nausch.org | ||
+ | Subject: ‘uname -n‘ daily mail stats | ||
+ | |||
+ | Postfix log summaries for Oct 12 | ||
+ | |||
+ | Grand Totals | ||
+ | ------------ | ||
+ | messages | ||
+ | |||
+ | | ||
+ | | ||
+ | 0 | ||
+ | 0 | ||
+ | 0 | ||
+ | 339 | ||
+ | 0 | ||
+ | 0 held | ||
+ | 0 | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 4 | ||
+ | 1 | ||
+ | |||
+ | |||
+ | Per-Hour Traffic Summary | ||
+ | time received | ||
+ | -------------------------------------------------------------------- | ||
+ | 0000-0100 | ||
+ | 0100-0200 | ||
+ | 0200-0300 | ||
+ | 0300-0400 | ||
+ | 0400-0500 | ||
+ | 0500-0600 | ||
+ | 0600-0700 | ||
+ | 0700-0800 | ||
+ | 0800-0900 | ||
+ | 0900-1000 | ||
+ | 1000-1100 | ||
+ | 1100-1200 | ||
+ | 1200-1300 | ||
+ | 1300-1400 | ||
+ | 1400-1500 | ||
+ | 1500-1600 | ||
+ | 1600-1700 | ||
+ | 1700-1800 | ||
+ | 1800-1900 | ||
+ | 1900-2000 | ||
+ | 2000-2100 | ||
+ | 2100-2200 | ||
+ | 2200-2300 | ||
+ | 2300-2400 | ||
+ | |||
+ | Host/Domain Summary: Message Delivery | ||
+ | sent cnt bytes | ||
+ | | ||
+ | | ||
+ | |||
+ | ... | ||
+ | |||
+ | ... | ||
+ | |||
+ | Fatal Errors: none | ||
+ | |||
+ | Panics: none | ||
+ | |||
+ | Master daemon messages | ||
+ | ---------------------- | ||
+ | 1 | ||
+ | </ | ||
+ | ===== AWStats ===== | ||
+ | Mit Hilfe zweier Perlscripte erstellen wir nun täglich einen Statusbericht über das was unserem MX widerfahren ist, und rufen später diese Information via Firefox/ | ||
+ | ==== Installation ==== | ||
+ | Die Installation von **// | ||
+ | ==== Konfiguration ==== | ||
+ | Zur eigentlichen Logfileauswertung legen wir uns nun eine eigene Konfigurationdatei für **// | ||
+ | # / | ||
+ | Darinpassen wir nun alle Konfigurationsoptionen, | ||
+ | # egrep -v ' | ||
+ | < | ||
+ | LogFile=" | ||
+ | LogType=M | ||
+ | LogFormat=" | ||
+ | LogSeparator=" | ||
+ | SiteDomain=" | ||
+ | HostAliases=„localhost 127.0.0.1 REGEX[nausch\.org$] REGEX[www\.nausch\.org$]“ | ||
+ | DNSLookup=2 | ||
+ | DirData=" | ||
+ | DirCgi="/ | ||
+ | DirIcons="/ | ||
+ | AllowToUpdateStatsFromBrowser=0 | ||
+ | AllowFullYearView=3 | ||
+ | EnableLockForUpdate=1 | ||
+ | DNSStaticCacheFile=" | ||
+ | DNSLastUpdateCacheFile=" | ||
+ | SkipDNSLookupFor="" | ||
+ | AllowAccessFromWebToAuthenticatedUsersOnly=0 | ||
+ | AllowAccessFromWebToFollowingAuthenticatedUsers="" | ||
+ | AllowAccessFromWebToFollowingIPAddresses="" | ||
+ | CreateDirDataIfNotExists=0 | ||
+ | BuildHistoryFormat=text | ||
+ | BuildReportFormat=html | ||
+ | SaveDatabaseFilesWithPermissionsForEveryone=0 | ||
+ | PurgeLogFile=0 | ||
+ | ArchiveLogRecords=0 | ||
+ | KeepBackupOfHistoricFiles=0 | ||
+ | DefaultFile=" | ||
+ | SkipHosts="" | ||
+ | SkipUserAgents="" | ||
+ | SkipFiles="" | ||
+ | SkipReferrersBlackList="" | ||
+ | OnlyHosts="" | ||
+ | OnlyUserAgents="" | ||
+ | OnlyUsers="" | ||
+ | OnlyFiles="" | ||
+ | NotPageList=" | ||
+ | ValidHTTPCodes=" | ||
+ | ValidSMTPCodes=" | ||
+ | AuthenticatedUsersNotCaseSensitive=0 | ||
+ | URLNotCaseSensitive=0 | ||
+ | URLWithAnchor=0 | ||
+ | URLQuerySeparators="?;" | ||
+ | URLWithQuery=0 | ||
+ | URLWithQueryWithOnlyFollowingParameters="" | ||
+ | URLWithQueryWithoutFollowingParameters="" | ||
+ | URLReferrerWithQuery=0 | ||
+ | WarningMessages=1 | ||
+ | ErrorMessages="" | ||
+ | DebugMessages=0 | ||
+ | NbOfLinesForCorruptedLog=50 | ||
+ | WrapperScript="" | ||
+ | DecodeUA=0 | ||
+ | MiscTrackerUrl="/ | ||
+ | LevelForBrowsersDetection=0 | ||
+ | # 2 reduces AWStats speed by 2% | ||
+ | # allphones reduces AWStats speed by 5% | ||
+ | LevelForOSDetection=0 | ||
+ | # 2 reduces AWStats speed by 3% | ||
+ | LevelForRefererAnalyze=0 | ||
+ | # 2 reduces AWStats speed by 14% | ||
+ | LevelForRobotsDetection=0 | ||
+ | # 2 reduces AWStats speed by 2.5% | ||
+ | LevelForSearchEnginesDetection=0 | ||
+ | # 2 reduces AWStats speed by 9% | ||
+ | LevelForKeywordsDetection=0 | ||
+ | # 2 reduces AWStats speed by 1% | ||
+ | LevelForFileTypesDetection=0 | ||
+ | # 2 reduces AWStats speed by 1% | ||
+ | LevelForWormsDetection=0 | ||
+ | # 2 reduces AWStats speed by 15% | ||
+ | UseFramesWhenCGI=1 | ||
+ | DetailedReportsOnNewWindows=1 | ||
+ | Expires=0 | ||
+ | MaxRowsInHTMLOutput=1000 | ||
+ | Lang=" | ||
+ | DirLang=" | ||
+ | ShowMenu=1 | ||
+ | ShowSummary=HB | ||
+ | ShowMonthStats=HB | ||
+ | ShowDaysOfMonthStats=HB | ||
+ | ShowDaysOfWeekStats=HB | ||
+ | ShowHoursStats=HB | ||
+ | ShowDomainsStats=0 | ||
+ | ShowHostsStats=HBL | ||
+ | ShowAuthenticatedUsers=0 | ||
+ | ShowRobotsStats=0 | ||
+ | ShowWormsStats=0 | ||
+ | ShowEMailSenders=HBML | ||
+ | ShowEMailReceivers=HBML | ||
+ | ShowSessionsStats=0 | ||
+ | ShowPagesStats=0 | ||
+ | ShowFileTypesStats=0 | ||
+ | ShowFileSizesStats=0 | ||
+ | ShowOSStats=0 | ||
+ | ShowBrowsersStats=0 | ||
+ | ShowScreenSizeStats=0 | ||
+ | ShowOriginStats=0 | ||
+ | ShowKeyphrasesStats=0 | ||
+ | ShowKeywordsStats=0 | ||
+ | ShowMiscStats=0 | ||
+ | ShowHTTPErrorsStats=0 | ||
+ | ShowSMTPErrorsStats=1 | ||
+ | ShowClusterStats=0 | ||
+ | AddDataArrayMonthStats=1 | ||
+ | AddDataArrayShowDaysOfMonthStats=1 | ||
+ | AddDataArrayShowDaysOfWeekStats=1 | ||
+ | AddDataArrayShowHoursStats=1 | ||
+ | IncludeInternalLinksInOriginSection=0 | ||
+ | MaxNbOfDomain = 10 | ||
+ | MinHitDomain | ||
+ | MaxNbOfHostsShown = 10 | ||
+ | MinHitHost | ||
+ | MaxNbOfLoginShown = 10 | ||
+ | MinHitLogin | ||
+ | MaxNbOfRobotShown = 10 | ||
+ | MinHitRobot | ||
+ | MaxNbOfPageShown = 10 | ||
+ | MinHitFile | ||
+ | MaxNbOfOsShown = 10 | ||
+ | MinHitOs | ||
+ | MaxNbOfBrowsersShown = 10 | ||
+ | MinHitBrowser = 1 | ||
+ | MaxNbOfScreenSizesShown = 5 | ||
+ | MinHitScreenSize = 1 | ||
+ | MaxNbOfWindowSizesShown = 5 | ||
+ | MinHitWindowSize = 1 | ||
+ | MaxNbOfRefererShown = 10 | ||
+ | MinHitRefer | ||
+ | MaxNbOfKeyphrasesShown = 10 | ||
+ | MinHitKeyphrase = 1 | ||
+ | MaxNbOfKeywordsShown = 10 | ||
+ | MinHitKeyword = 1 | ||
+ | MaxNbOfEMailsShown = 20 | ||
+ | MinHitEMail | ||
+ | FirstDayOfWeek=1 | ||
+ | ShowFlagLinks="" | ||
+ | ShowLinksOnUrl=1 | ||
+ | UseHTTPSLinkForUrl="" | ||
+ | MaxLengthOfShownURL=64 | ||
+ | HTMLHeadSection="" | ||
+ | HTMLEndSection="" | ||
+ | Logo=" | ||
+ | LogoLink=" | ||
+ | BarWidth | ||
+ | BarHeight | ||
+ | StyleSheet="" | ||
+ | color_Background=" | ||
+ | color_TableBGTitle=" | ||
+ | color_TableTitle=" | ||
+ | color_TableBG=" | ||
+ | color_TableRowTitle=" | ||
+ | color_TableBGRowTitle=" | ||
+ | color_TableBorder=" | ||
+ | color_text=" | ||
+ | color_textpercent=" | ||
+ | color_titletext=" | ||
+ | color_weekend=" | ||
+ | color_link=" | ||
+ | color_hover=" | ||
+ | color_u=" | ||
+ | color_v=" | ||
+ | color_p=" | ||
+ | color_h=" | ||
+ | color_k=" | ||
+ | color_s=" | ||
+ | color_e=" | ||
+ | color_x=" | ||
+ | ExtraTrackedRowsLimit=500 | ||
+ | </ | ||
+ | ==== Logrotate anpassen ==== | ||
+ | In regelmäßigen Abständen werden die Logfiles unseres Webserver rotiert, d.h. es werden die Alten Daten gapackt und eine neue Logdatei angelegt.\\ | ||
+ | AWStats kann jedoch nur auf das aktuelle Logfile zugreifen, nicht aber auf die bereits archivierten. Damit nun keine Statistik-Daten // | ||
+ | |||
+ | Hierzu tragen wir nachfolgende Zeilen in die zentrale " | ||
+ | # vim / | ||
+ | <code bash syslog> | ||
+ | |||
+ | / | ||
+ | sharedscripts | ||
+ | prerotate | ||
+ | / | ||
+ | endscript | ||
+ | postrotate | ||
+ | /bin/kill -HUP `cat / | ||
+ | /bin/kill -HUP `cat / | ||
+ | endscript | ||
+ | } | ||
+ | </ | ||
+ | ===== mailgraph ===== | ||
+ | Eine weitere graphisch ansprechende Übersicht kann mittels [[http:// | ||
+ | ==== Paketinstalltion(en) ==== | ||
+ | Die von mailgraph benötigten Pakete **rrdtool**, | ||
+ | # yum install rrdtool perl-Time-HiRes-Value perl-File-Tail | ||
+ | ==== Download ==== | ||
+ | Das Programm-Archiv **mailgraph** holen wir uns direkt von [[http:// | ||
+ | # cd / | ||
+ | |||
+ | # wget http:// | ||
+ | < | ||
+ | --11: | ||
+ | Auflösen des Rechnernamens »mailgraph.schweikert.ch«.... 88.198.52.145 | ||
+ | Verbindungsaufbau mit mailgraph.schweikert.ch[88.198.52.145]: | ||
+ | HTTP-Anfrage gesendet, warte auf Antwort... 200 OK | ||
+ | Länge: 22014 (21K) [application/ | ||
+ | Speichere nach: »mailgraph-1.14.tar.gz« | ||
+ | |||
+ | 100%[===========================================================================================================================================> | ||
+ | |||
+ | 11:31:12 (374 KB/s) - »mailgraph-1.14.tar.gz« gespeichert [22014/ | ||
+ | </ | ||
+ | ==== Installation ==== | ||
+ | Anschließend entpacken wir das Archiv und verlinken auf die aktuelle Version. | ||
+ | # tar zxvf mailgraph-1.14.tar.gz | ||
+ | < | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | mailgraph-1.14/ | ||
+ | </ | ||
+ | # ln -s mailgraph-1.14 mailgraph | ||
+ | ==== Konfiguration ==== | ||
+ | Entsprechend unserer Installationsumgebung passen wir die Pfadangaben in dem Programm **mailgraph.cgi** an | ||
+ | # vim mailgraph.cgi | ||
+ | <code bash mailgraph.cgi> | ||
+ | |||
+ | # | ||
+ | |||
+ | # mailgraph -- postfix mail traffic statistics | ||
+ | # copyright (c) 2000-2007 ETH Zurich | ||
+ | # copyright (c) 2000-2007 David Schweikert < | ||
+ | # released under the GNU General Public License | ||
+ | |||
+ | use RRDs; | ||
+ | use POSIX qw(uname); | ||
+ | |||
+ | my $VERSION = " | ||
+ | |||
+ | my $host = (POSIX:: | ||
+ | my $scriptname = ' | ||
+ | my $xpoints = 540; | ||
+ | my $points_per_sample = 3; | ||
+ | my $ypoints = 160; | ||
+ | my $ypoints_err = 96; | ||
+ | my $rrd = '/ | ||
+ | my $rrd_virus = '/ | ||
+ | my $tmp_dir = '/ | ||
+ | </ | ||
+ | Das Verzeichnis für die temporär erstellen Graphiken legen wir noch an: | ||
+ | # mkdir / | ||
+ | und passen die Berechtigung an. | ||
+ | # chown apache: | ||
+ | ==== Apache VHost anlegen ==== | ||
+ | Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, legen wir nun einen passenden VHost an. | ||
+ | # vim / | ||
+ | <code apache vhosts.conf> | ||
+ | # | ||
+ | # mailgraph.nausch.org | ||
+ | # | ||
+ | < | ||
+ | ServerAdmin webmaster@nausch.org | ||
+ | ServerName mailgraph.nausch.org: | ||
+ | ServerAlias www.mailgraph.nausch.org | ||
+ | ServerPath / | ||
+ | DocumentRoot "/ | ||
+ | AddHandler cgi-script .cgi | ||
+ | < | ||
+ | Options ExecCGI | ||
+ | AllowOverride AuthConfig | ||
+ | Order allow,deny | ||
+ | </ | ||
+ | DirectoryIndex mailgraph.cgi | ||
+ | ErrorLog logs/ | ||
+ | CustomLog logs/ | ||
+ | </ | ||
+ | </ | ||
+ | und starten anschließend unseren Webserver einmal durch, damit er den weiteren VHost auch verwenden kann. | ||
+ | # service postfix restart | ||
+ | httpd beenden: | ||
+ | httpd starten: | ||
+ | ==== Programmaufruf ==== | ||
+ | === manueller Start des Dämon === | ||
+ | Damit das Maillogfile forlaufend ausgelesen wird, starten wir unserem im Dämonmodus. Über die Option **--ignore-localhost** weisen wir mailgraph an, die Mails von unserem amavis nicht " | ||
+ | # / | ||
+ | Über unseren definierten VHost können wir nun mit Hilfe des CGI-Sriptes **mailgraph.cgi** auf unsere [[https:// | ||
+ | === automatischer Start des Dämon === | ||
+ | Damit beim Systemstart der mailgraph-Dämon richtig gestartet wird, passen wir das mitgelieferte init-script unseren Gegebenheiten an. | ||
+ | # vim / | ||
+ | <code bash mailgraph-init> | ||
+ | |||
+ | #!/bin/sh | ||
+ | |||
+ | # $Id: mailgraph-init 19 2005-06-13 11:23:22Z dws $ | ||
+ | # example init script for mailgraph | ||
+ | # | ||
+ | # chkconfig: 2345 82 28 | ||
+ | # description: | ||
+ | # | ||
+ | # processname: | ||
+ | # pidfile: / | ||
+ | |||
+ | PATH=/ | ||
+ | MAILGRAPH_PL=/ | ||
+ | MAIL_LOG=/ | ||
+ | PID_FILE=/ | ||
+ | RRD_DIR=/ | ||
+ | |||
+ | case " | ||
+ | ' | ||
+ | echo " | ||
+ | nice -19 $MAILGRAPH_PL -l $MAIL_LOG -d \ | ||
+ | --daemon-pid=$PID_FILE --daemon-rrd=$RRD_DIR \ | ||
+ | --ignore-localhost | ||
+ | ;; | ||
+ | |||
+ | ' | ||
+ | echo " | ||
+ | if [ -f $PID_FILE ]; then | ||
+ | kill `cat $PID_FILE` | ||
+ | rm $PID_FILE | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | ;; | ||
+ | |||
+ | *) | ||
+ | echo " | ||
+ | exit 1 | ||
+ | </ | ||
+ | Anschließend " | ||
+ | # chmod 755 vim / | ||
+ | kopieren es an nach **/ | ||
+ | # cp vim / | ||
+ | und starten den daemon mit | ||
+ | # service mailgraph-init start | ||
+ | Damit der Start nun auch bei einem reboot automatisch erfolgt, setzen wir die nötigen symlinks automatisch mit | ||
+ | # chkconfig mailgraph-init on | ||
+ | Das Ganze überprüfen wir dann noch mittels | ||
+ | # chkconfig --list | grep mailgraph | ||
+ | | ||
+ | |||
+ | ==== Webaufruf ==== | ||
+ | Über unseren [[https:// | ||
+ | {{ : |