Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| centos:mailserver:logfileauswertung_en [09.06.2011 11:25. ] – [Webaufruf] 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:// | ||
| + | {{ : | ||