Ο ανεξερεύνητος κόσμος των Exchange 2007 Logs ( Μέρος 2ο )
Συνεχίζοντας την κατάδυση μας στον κόσμο των logs ήρθε η ώρα να βρούμε το πρώτο μας μαργαριτάρι.
Ποίος είνια αυτός ο καταραμένος χρήστης που σφυροκοπάει τον server μας και μας δυσκολεύει την ζωή??:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 sender-address, Count(*) AS messagesSent FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - default-first-site-name to internet' GROUP BY sender-address ORDER BY messagesSent DESC" -rtp:-1 -i:CSV -nSkipLines:4 -o:DATAGRID |
Παρατηρήστε ότι χρησιμοποιούμε το connector-id='edgesync - default-first-site-name to internet'. Αυτό μπορούμε να το κάνουμε και για inbound αλλά και για outbound messages.
Ας δούμε όμως όχι μόνο ποιοί στέλνουν αλλά και πόσα είναι αυτά που στέλνουν:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 sender-address, DIV(Sum(total-bytes),1048576) AS TotalBytes(MB) INTO TopVolumeSenders.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - default-first-site-name to internet' GROUP BY sender-address ORDER BY TotalBytes(MB) DESC" -chartType:Barclustered3d -i:CSV -nSkipLines:4 -o:CHART |
Και τώρα ας τα βάλουμε μαζί:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 sender-address, Count(*) AS messagesSent, DIV(Sum(total-bytes),1048576) AS TotalBytes(MB) INTO TopSendersCombined.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - default-first-site-name to internet' GROUP BY sender-address ORDER BY messagesSent DESC" -chartType:BarClustered3D -i:CSV -nSkipLines:4 -o:CHART |
Ας δούμε όχι μόνο ποιός στέλνει αλλά και ποιός παίρνει:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 recipient-address, Count(*) AS messagesRec, DIV(Sum(total-bytes),1048576) AS TotalBytes(MB) INTO TopReceiversCombined.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - inbound to default-first-site-name' GROUP BY recipient-address ORDER BY messagesRec DESC" -chartType:BarClustered3d -i:CSV -nSkipLines:4 -o:CHART |
Και τώρα ας δούμε το συνολικό Traffic:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT CASE connector-id WHEN 'edgesync - default-first-site-name to internet' THEN 'MB Sent' WHEN 'edgesync - inbound to default-first-site-name' THEN 'MB Received' ELSE connector-id END AS connector-id2, DIV(Sum(total-bytes),1048576) AS TotalBytes(MB) INTO totalbytessendreceive.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' GROUP BY connector-id2" -i:CSV -nSkipLines:4 -o:CHART -chartType:Column3D -chartTitle:"Total Bytes Sent/Received (MB)" |
Μπορούμε όμως να δούμε και ποιοί είναι οι χρήστες απέξω που μας στέλνουν mail:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 sender-address, Count(*) AS messagesRec FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - inbound to default-first-site-name' GROUP BY sender-address ORDER BY messagesRec Desc" -rtp:-1 -i:CSV -nSkipLines:4 -o:DATAGRID |
Το [email protected] είναι ένα internal account υπεύθυνο για την αποστολή Delivery Status Notifications (DSN). Αν θέλουμε να το εξαιρέσουμε :
AND sender-address<>’ [email protected]’
Ας απαντήσουμε τώρα στην ερώτηση σε ποιόν στέλνουν οι χρήστες mail και ποιοί λαμβάνουν τα περισσότερα σε έννοια αριθμού και μεγέθους:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 recipient-address, Count(*) AS messagesSent, DIV(Sum(total-bytes),1048576) AS TotalBytes(MB) INTO TopExternalReceiversCombined.gif from C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - default-first-site-name to internet' GROUP BY recipient-address ORDER BY messagesSent DESC" -chartType:BarStacked3d -i:CSV -nSkipLines:4 -o:CHART |
Οι δυνατότητες όμως δεν σταματάνε εδώ. μπορούμε να εκμεταλευτούμε και τα IIS logs.
Το πρώτο που μπορούμε να κάνουμε είναι να δούμε ποιοί χρήστες συνδέονται στους the internal Exchange CAS servers:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 cs-username, Count(*) AS OWAHits INTO OWAActivity.gif FROM C:\Inetpub\logs\LogFiles\W3SVC1\u_ex*.log WHERE cs-uri-stem LIKE '/OWA/' AND cs-username IS NOT NULL GROUP BY cs-username ORDER BY OWAHits DESC" -charttype:Bar3D -o:CHART -view:ON |
Αντίστοιχα για τους ActiveSync users:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT cs-username, Count(*) AS EASHits FROM C:\Inetpub\logs\LogFiles\W3SVC1\u_ex*.log WHERE cs-uri-stem LIKE '%%Microsoft-Server-ActiveSync%%' AND cs-username IS NOT NULL GROUP BY cs-username ORDER BY EASHits DESC" -rtp:-1 -o:DATAGRID |
Ας πάρουμε και ένα δείγμα των devices που χρησιμοποιούνται στο ActiveSync
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT cs(user-agent), count(*) AS Devices INTO devices.gif FROM C:\Inetpub\logs\LogFiles\W3SVC1\u_ex*.log WHERE cs-uri-stem LIKE '%%microsoft-server-activesync%%' AND cs-username IS NOT NULL AND cs(User-Agent) IS NOT NULL GROUP BY cs(User-Agent) ORDER BY Devices DESC" -charttype:pieexploded3d -ChartTitle:"Device Activity by Type" -categories:OFF |
Ας δούμε και την κίνηση του OWA κατά την διάρκεια της ημέρας:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TO_STRING(time, 'HH') AS Hour, COUNT(*) AS Hits INTO hitPerSecond.jpg FROM C:\Inetpub\logs\LogFiles\W3SVC1\u_ex*.log GROUP BY Hour ORDER BY Hour ASC" -i:IISW3C -o:CHART -chartType:ColumnClustered -chartTitle:"Hourly Hits" -groupSize:420x280 |
Όλες οι παραπάνω εντολές όμως ήταν γενικές και δεν ήταν περιορισμένες σε συγκεκριμένή ημερομηνία – ώρα.Για να γίνει αυτό θα πρέπει να χρησιμοποιήσουμε αποτελεσματικά την παράμετρο WHERE.
Για παράδειγμα ο παρακάτω πίνακας δείχνει τις αλλαγές που πρέπει να γίνουν για να πάρουμε ημερομηνία και ώρα απο τα Protocol Logs και τα Message Tracking Logs
Για τα Agent Logs, η ημερομηνία και ώρα ορίζονται ως Timestamp. Για να χρησιμοποιήσουμε τις εντολές αλλάζουμε το [#Fields: date-time] με το [#Fields: Timestamp].
Extracting |
Log Parser expression |
Format |
Date |
EXTRACT_PREFIX([#Fields: date-time],0,'T') |
YYYY-MM-DD |
Time |
EXTRACT_PREFIX(TO_STRING(EXTRACT_SUFFIX([#Fields: date-time],0,'T')),0,'.') |
HH:MM:SS |
Date & time |
TO_TIMESTAMP ( EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'.') , 'yyyy-mm-ddThh:mm:ss') |
TO_TIMESTAMP (Log Parser time stamp type) |
Για παράδειγμα ας τρέξουμε το top internal senders query, αλλά μετά τις ‘2009-09-17 11:30:00’.
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 sender-address, Count(*) AS messagesSent FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\MessageTracking\MSG*.log WHERE recipient-status LIKE '250%%' AND connector-id='edgesync - default-first-site-name to internet' AND TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,'.') , 'yyyy-mm-ddThh:mm:ss') > TO_TIMESTAMP ('2009-09-17 11:30:00','yyyy-mm-dd hh:mm:ss') GROUP BY sender-address ORDER BY messagesSent Desc" -rtp:-1 -i:CSV -nSkipLines:4 -o:DATAGRID |
Πιστεύω ότι το συγκεκριμένο εργαλείο θα αποτελέσει βασικότατο και χρήσιμο εργαλείο στο οπλοστάσιο ενός Exchange server administrator.Να σημειώσω εδώ ότι οι παραπάμω εντολές μπορούν να γίνουν script ώστε να τις έχουμε πάντα διαθέσιμες.
5 Comments
Recommended Comments