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.

  1. pflogsumm Logfilezusammenfassung generieren und via eMail dem postmaster zur Verfügung stellen.
  2. Awstats Logfilezusammenfassung generieren und zum Abrufen via Browser anbieten
  3. mailgraph Graphisch sehr ansprechende Logfilezusammenfassung generieren und zum Abrufen via Browser anbieten

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 /usr/sbin/pflogsumm das besagte Perl-Script.

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:

# /usr/sbin/pflogsumm -d today /var/log/maillog

Interessiert uns was gestern los war, so lautet der Aufgruf ganz einfach:

# /usr/sbin/pflogsumm -d yesterday /var/log/maillog

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 /etc/crontab
#täglicher Statusbericht unseres Mailservers postfix
10 0 * * * root /usr/sbin/pflogsumm -d yesterday /var/log/maillog 2>&1 | /bin/mailx -s "‘uname -n‘ daily mail stats" postmaster

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.

Date: Mon, 13 Oct 2008 00:10:03 +0200 (CEST)
From: root <root@nausch.org>
To: postmaster@nausch.org
Subject: ‘uname -n‘ daily mail stats

Postfix log summaries for Oct 12

Grand Totals
------------
messages

     31   received
     27   delivered
      0   forwarded
      0   deferred
      0   bounced
    339   rejected (92%)
      0   reject warnings
      0   held
      0   discarded (0%)

 353252   bytes received
 353252   bytes delivered
     16   senders
     16   sending hosts/domains
      4   recipients
      1   recipient hosts/domains


Per-Hour Traffic Summary
    time          received  delivered   deferred    bounced     rejected
    --------------------------------------------------------------------
    0000-0100           0          0          0          0          0 
    0100-0200           0          0          0          0          0 
    0200-0300           0          0          0          0          0 
    0300-0400           0          0          0          0          0 
    0400-0500           1          0          0          0          3 
    0500-0600           1          1          0          0         24 
    0600-0700           0          0          0          0         10 
    0700-0800           0          0          0          0          2 
    0800-0900           4          3          0          0          7 
    0900-1000           3          3          0          0         18 
    1000-1100           3          2          0          0         18 
    1100-1200           2          2          0          0         29 
    1200-1300           2          2          0          0         25 
    1300-1400           2          1          0          0         20 
    1400-1500           0          0          0          0         37 
    1500-1600           0          0          0          0         22 
    1600-1700           0          0          0          0         24 
    1700-1800           2          2          0          0         31 
    1800-1900           3          3          0          0         12 
    1900-2000           3          3          0          0         10 
    2000-2100           4          4          0          0         19 
    2100-2200           1          1          0          0          2 
    2200-2300           0          0          0          0         19 
    2300-2400           0          0          0          0          7 

Host/Domain Summary: Message Delivery 
 sent cnt  bytes   defers   avg dly max dly host/domain
 -------- -------  -------  ------- ------- -----------
     27   353252        0     1.3 s    3.6 s  nausch.org

...

... 

Fatal Errors: none

Panics: none

Master daemon messages
----------------------
      1   reload configuration /etc/postfix

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/Konqueror ab. :)

Installation

Die Installation von AWStats ist logfileanalyse_mit_awstats ausfürlich beschrieben.

Konfiguration

Zur eigentlichen Logfileauswertung legen wir uns nun eine eigene Konfigurationdatei für AWStats an:

# /etc/awstats/awstats.postfix.nausch.org.conf

Darinpassen wir nun alle Konfigurationsoptionen, die für das maillog von Postfix relevant sind, an. Zusammengefasst sieht dann unsere Konfigurationdatei entsprechend wie folgt aus:

# egrep -v '(^#|^$)' /etc/awstats/awstats.postfix.nausch.org.conf 
LogFile="perl /usr/bin/maillogconvert.pl standard < /var/log/maillog |"
LogType=M
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
LogSeparator=" "
SiteDomain="mx1.nausch.org"
HostAliases=„localhost 127.0.0.1 REGEX[nausch\.org$] REGEX[www\.nausch\.org$]“
DNSLookup=2
DirData="."
DirCgi="/cgi-bin"
DirIcons="/icon"
AllowToUpdateStatsFromBrowser=0
AllowFullYearView=3
EnableLockForUpdate=1
DNSStaticCacheFile="dnscache.txt"
DNSLastUpdateCacheFile="dnscachelastupdate.txt"
SkipDNSLookupFor=""
AllowAccessFromWebToAuthenticatedUsersOnly=0
AllowAccessFromWebToFollowingAuthenticatedUsers=""
AllowAccessFromWebToFollowingIPAddresses=""
CreateDirDataIfNotExists=0
BuildHistoryFormat=text
BuildReportFormat=html
SaveDatabaseFilesWithPermissionsForEveryone=0
PurgeLogFile=0
ArchiveLogRecords=0
KeepBackupOfHistoricFiles=0
DefaultFile="index.html"
SkipHosts=""
SkipUserAgents=""
SkipFiles=""
SkipReferrersBlackList=""
OnlyHosts=""
OnlyUserAgents=""
OnlyUsers=""
OnlyFiles=""
NotPageList="css js class gif jpg jpeg png bmp ico rss xml swf"
ValidHTTPCodes="200 304"
ValidSMTPCodes="1 250"
AuthenticatedUsersNotCaseSensitive=0
URLNotCaseSensitive=0
URLWithAnchor=0
URLQuerySeparators="?;"
URLWithQuery=0
URLWithQueryWithOnlyFollowingParameters=""
URLWithQueryWithoutFollowingParameters=""
URLReferrerWithQuery=0
WarningMessages=1
ErrorMessages=""
DebugMessages=0
NbOfLinesForCorruptedLog=50
WrapperScript=""
DecodeUA=0
MiscTrackerUrl="/js/awstats_misc_tracker.js"
LevelForBrowsersDetection=0         # 0 disables Browsers detection.
                                    # 2 reduces AWStats speed by 2%
                                    # allphones reduces AWStats speed by 5%
LevelForOSDetection=0               # 0 disables OS detection.
                                    # 2 reduces AWStats speed by 3%
LevelForRefererAnalyze=0            # 0 disables Origin detection.
                                    # 2 reduces AWStats speed by 14%
LevelForRobotsDetection=0           # 0 disables Robots detection.
                                    # 2 reduces AWStats speed by 2.5%
LevelForSearchEnginesDetection=0    # 0 disables Search engines detection.
                                    # 2 reduces AWStats speed by 9%
LevelForKeywordsDetection=0         # 0 disables Keyphrases/Keywords detection.
                                    # 2 reduces AWStats speed by 1%
LevelForFileTypesDetection=0        # 0 disables File types detection.
                                    # 2 reduces AWStats speed by 1%
LevelForWormsDetection=0            # 0 disables Worms detection.
                                    # 2 reduces AWStats speed by 15%
UseFramesWhenCGI=1
DetailedReportsOnNewWindows=1
Expires=0
MaxRowsInHTMLOutput=1000
Lang="de"
DirLang="./lang"
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  = 1
MaxNbOfHostsShown = 10
MinHitHost    = 1
MaxNbOfLoginShown = 10
MinHitLogin   = 1
MaxNbOfRobotShown = 10
MinHitRobot   = 1
MaxNbOfPageShown = 10
MinHitFile    = 1
MaxNbOfOsShown = 10
MinHitOs      = 1
MaxNbOfBrowsersShown = 10
MinHitBrowser = 1
MaxNbOfScreenSizesShown = 5
MinHitScreenSize = 1
MaxNbOfWindowSizesShown = 5
MinHitWindowSize = 1
MaxNbOfRefererShown = 10
MinHitRefer   = 1
MaxNbOfKeyphrasesShown = 10
MinHitKeyphrase = 1
MaxNbOfKeywordsShown = 10
MinHitKeyword = 1
MaxNbOfEMailsShown = 20
MinHitEMail   = 1
FirstDayOfWeek=1
ShowFlagLinks=""
ShowLinksOnUrl=1
UseHTTPSLinkForUrl=""
MaxLengthOfShownURL=64
HTMLHeadSection=""
HTMLEndSection=""
Logo="awstats_logo6.png"
LogoLink="http://awstats.sourceforge.net"
BarWidth   = 260
BarHeight  = 90
StyleSheet=""
color_Background="FFFFFF"               # Background color for main page (Default = "FFFFFF")
color_TableBGTitle="CCCCDD"             # Background color for table title (Default = "CCCCDD")
color_TableTitle="000000"               # Table title font color (Default = "000000")
color_TableBG="CCCCDD"                  # Background color for table (Default = "CCCCDD")
color_TableRowTitle="FFFFFF"    # Table row title font color (Default = "FFFFFF")
color_TableBGRowTitle="ECECEC"  # Background color for row title (Default = "ECECEC")
color_TableBorder="ECECEC"              # Table border color (Default = "ECECEC")
color_text="000000"                             # Color of text (Default = "000000")
color_textpercent="606060"              # Color of text for percent values (Default = "606060")
color_titletext="000000"                # Color of text title within colored Title Rows (Default = "000000")
color_weekend="EAEAEA"                  # Color for week-end days (Default = "EAEAEA")
color_link="0011BB"                             # Color of HTML links (Default = "0011BB")
color_hover="605040"                    # Color of HTML on-mouseover links (Default = "605040") 
color_u="FFAA66"                                # Background color for number of unique visitors (Default = "FFAA66")
color_v="F4F090"                                # Background color for number of visites (Default = "F4F090")
color_p="4477DD"                                # Background color for number of pages (Default = "4477DD")
color_h="66DDEE"                                # Background color for number of hits (Default = "66DDEE")
color_k="2EA495"                                # Background color for number of bytes (Default = "2EA495")
color_s="8888DD"                                # Background color for number of search (Default = "8888DD")
color_e="CEC2E8"                                # Background color for number of entry pages (Default = "CEC2E8")
color_x="C1B2E2"                                # Background color for number of exit pages (Default = "C1B2E2")
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 verloren gehen, müsssen wir noch sicherstellen, dass vor dem Archivierungsintervall von logrotate, AWStats einen Update seiner Statistikfiles machen kann.

Hierzu tragen wir nachfolgende Zeilen in die zentrale „syslog-logrotate-Konfogurationsdatei“ /etc/logrotate.d/syslog ein:

# vim /etc/logrotate.d/syslog
syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    prerotate
        /usr/bin/awstats_updateall.pl now -configdir=/etc/awstats/ --awstatsprog=/var/www/awstats/awstats.pl >/dev/null
    endscript
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

Eine weitere graphisch ansprechende Übersicht kann mittels Mailgraph erstellt werden.

Paketinstalltion(en)

Die von mailgraph benötigten Pakete rrdtool, perl-Time-HiRes-Value und perl-File-Tail installieren wir über unseren bewährten Mechanismus yum

# yum install rrdtool perl-Time-HiRes-Value perl-File-Tail

Download

Das Programm-Archiv mailgraph holen wir uns direkt von David Schweikert's Homepage via wget.

# cd /usr/local/src
# wget http://mailgraph.schweikert.ch/pub/mailgraph-1.14.tar.gz
--11:31:12--  http://mailgraph.schweikert.ch/pub/mailgraph-1.14.tar.gz
Auflösen des Rechnernamens »mailgraph.schweikert.ch«.... 88.198.52.145
Verbindungsaufbau mit mailgraph.schweikert.ch[88.198.52.145]:80... verbunden.
HTTP-Anfrage gesendet, warte auf Antwort... 200 OK
Länge: 22014 (21K) [application/x-gzip]
Speichere nach: »mailgraph-1.14.tar.gz«

100%[===========================================================================================================================================>] 22.014      --.-K/s   in 0,06s  

11:31:12 (374 KB/s) - »mailgraph-1.14.tar.gz« gespeichert [22014/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-init
mailgraph-1.14/mailgraph.cgi
mailgraph-1.14/mailgraph.pl
mailgraph-1.14/mailgraph.css
mailgraph-1.14/COPYING
mailgraph-1.14/CHANGES
mailgraph-1.14/README
# ln -s mailgraph-1.14 mailgraph

Konfiguration

Entsprechend unserer Installationsumgebung passen wir die Pfadangaben in dem Programm mailgraph.cgi an

# vim mailgraph.cgi
mailgraph.cgi
#!/usr/bin/perl -w
 
# mailgraph -- postfix mail traffic statistics
# copyright (c) 2000-2007 ETH Zurich
# copyright (c) 2000-2007 David Schweikert <david@schweikert.ch>
# released under the GNU General Public License
 
use RRDs;
use POSIX qw(uname);
 
my $VERSION = "1.14";
 
my $host = (POSIX::uname())[1];
my $scriptname = 'mailgraph.cgi';
my $xpoints = 540;
my $points_per_sample = 3;
my $ypoints = 160;
my $ypoints_err = 96;
my $rrd = '/var/log/mailgraph.rrd'; # path to where the RRD database is
my $rrd_virus = '/var/log/mailgraph_virus.rrd'; # path to where the Virus RRD database is
my $tmp_dir = '/tmp/mailgraph'; # temporary directory where to store the images

Das Verzeichnis für die temporär erstellen Graphiken legen wir noch an:

# mkdir /tmp/mailgraph

und passen die Berechtigung an.

# chown apache:apache /tmp/mailgraph/

Apache VHost anlegen

Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, legen wir nun einen passenden VHost an.

# vim /etc/httpd/conf.d/vhosts.conf
vhosts.conf
#
# mailgraph.nausch.org
#
<VirtualHost *:80>
    ServerAdmin webmaster@nausch.org
    ServerName mailgraph.nausch.org:80
    ServerAlias www.mailgraph.nausch.org
    ServerPath /
    DocumentRoot "/usr/local/src/mailgraph"
    AddHandler cgi-script .cgi
    <Directory "/usr/local/src/mailgraph">
        Options ExecCGI
        AllowOverride AuthConfig
        Order allow,deny
    </Directory>
    DirectoryIndex mailgraph.cgi
    ErrorLog logs/mailgraph_error.log
    CustomLog logs/mailgraph_access.log combined
</VirtualHost>

und starten anschließend unseren Webserver einmal durch, damit er den weiteren VHost auch verwenden kann.

# service postfix restart
httpd beenden:                                             [  OK  ]
httpd starten:                                             [  OK  ]

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 „doppelt“ zu zählen. Ferner werden auch die Informationen zu Spam- und Virusmeldungen aus dem MAillog in den Graphiken berücksichtigt.

 # /usr/local/src/mailgraph/mailgraph.pl -d -l /var/log/maillog --ignore-localhost

Über unseren definierten VHost können wir nun mit Hilfe des CGI-Sriptes mailgraph.cgi auf unsere Loggraphiken zugreifen.

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 /usr/local/src/mailgraph/mailgraph-init
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: mailgraph postfix log grapher.
#
# processname: mailgraph.pl
# pidfile: /var/run/mailgraph.pid
 
PATH=/bin:/usr/bin
MAILGRAPH_PL=/usr/local/src/mailgraph/mailgraph.pl
MAIL_LOG=/var/log/maillog
PID_FILE=/var/run/mailgraph.pid
RRD_DIR=/var/log
 
case "$1" in
'start')
        echo "Starting mail statistics grapher: mailgraph";
        nice -19 $MAILGRAPH_PL -l $MAIL_LOG -d \
                --daemon-pid=$PID_FILE --daemon-rrd=$RRD_DIR \
                --ignore-localhost
        ;;
 
'stop')
        echo "Stopping mail statistics grapher: mailgraph";
        if [ -f $PID_FILE ]; then
                kill `cat $PID_FILE`
                rm $PID_FILE
        else
                echo "mailgraph not running";
        fi
        ;;
 
*)
        echo "Usage: $0 { start | stop }"
        exit 1

Anschließend „machen“ wir das Script noch ausführbar,

# chmod 755 vim /usr/local/src/mailgraph/mailgraph-init

kopieren es an nach /etc/int.d/

# cp vim /usr/local/src/mailgraph/mailgraph-init /etc/init.d/

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
 mailgraph-init  0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus

Webaufruf

Über unseren Vhost erhalten wir nun optisch schön ansprechende Übersichten über den Mailverkehr unseres MX.

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • centos/mailserver/logfileauswertung_en.txt
  • Zuletzt geändert: 09.06.2011 11:30.
  • von django