Τρόπος χρήσης του SQL Server για να αναλύσετε τα αρχεία καταγραφής Web

Σύνοψη

Internet Information Server/Services παρέχει διάφορες μορφές για να συγκεντρώσετε δεδομένα με τη μορφή αρχείων καταγραφής web. Απασχολημένες τοποθεσίες αυτών των απλών αρχείων που βασίζεται σε κείμενο κάποια στιγμή γίνονται υπερβολική επιβάρυνση για την αναθεώρηση και παραβλέπονται. Ένας καλύτερος τρόπος για να εξετάσετε τα δεδομένα θα είναι αυτά τα αρχεία καταγραφής καλύτερη πόρου για διαχειριστές και πρότυπες σελίδες web.


Αυτό το άρθρο περιγράφει μια μέθοδο για να εισαγάγετε αρχεία καταγραφής των υπηρεσιών IIS σε μορφή εκτεταμένου αρχείου καταγραφής του World Wide Web Consortium (W3C) σε Microsoft SQL Server για να διευκολυνθεί η επανεξέταση των αρχείων καταγραφής των υπηρεσιών IIS. Οι τεχνικές που παρέχονται επίσης μπορεί να αλλοιωθεί για άλλες μορφές αρχείου καταγραφής.

Περισσότερες πληροφορίες

Αρχεία καταγραφής Web είναι τα αρχεία οριοθετημένου κειμένου όπως καθορίζεται από το RFC 2616 "Hypertext Transfer Protocol--HTTP/1.1" (http://www.rfc-editor.org/rfc/rfc2616.txt).

Στη μορφή εκτεταμένου αρχείου καταγραφής W3C, τα πεδία είναι κάπως self επεξηγηματικό: ημερομηνία και ώρα είναι απλώς τους φαινομενικά; [c-ip] είναι η διεύθυνση IP του υπολογιστή-πελάτη. [cs-μέθοδος] είναι η μέθοδος HTTP για την αίτηση που έχει εκπληρωθεί [cs-uri-στέλεχος] είναι το έγγραφο που έχει ζητηθεί; [cs-uri-ερώτημα] είναι η συμβολοσειρά ερωτήματος που στάλθηκε ως τμήμα της αίτησης που καταγράφεται [sc-κατάσταση] είναι ο κωδικός κατάστασης που επιστράφηκε από το διακομιστή. [sc bytes] είναι ο αριθμός των byte που έχουν επιστραφεί από τον χρήστη. [ώρα λήψης] είναι ο χρόνος σε χιλιοστά του δευτερολέπτου που χρειάστηκαν για να ολοκληρώσετε την επεξεργασία της αίτησης, ο διακομιστής [cs(Cookie)] είναι το cookie ή μόνιμα δεδομένα στην αίτηση; και [cs(Referer)] είναι η διεύθυνση URL από την προηγούμενη τοποθεσία που επισκέφθηκε ο χρήστης. Για τη μορφή εκτεταμένου αρχείου καταγραφής W3C, υπάρχουν κάποια επιπλέον πεδία που μπορείτε να επιλέξετε, που περιγράφονται στη Βοήθεια των υπηρεσιών IIS και στην ακόλουθη τοποθεσία της Microsoft στο Web:

Τα αρχεία καταγραφής είναι μορφοποιημένα ως εξής:

Ημ/νίαώραc-ipμέθοδος CSστέλεχος uri CSερώτημα uri CSsc-κατάστασηsc bytesώρα λήψηςCS(User-Agent)CS(cookie)CS(Referrer)


Επικεφαλίδα των αρχείων καταγραφής που αντιστοιχεί στα πεδία που έχουν επιλεγεί στις Ιδιότητες της τοποθεσίας Web, στην καρτέλα τοποθεσίας Web , καθώς και στην περίπτωση εκτεταμένης καταγραφής W3C, την καρτέλα " Σύνθετες ιδιότητες ". Εάν τα αρχεία καταγραφής web βρίσκονται ήδη σε έναν πίνακα στον Microsoft SQL Server, είναι πιθανό λόγω καταγραφής ODBC. Ωστόσο, όταν χρησιμοποιείτε ODBC καταγραφή των πεδίων δεν είναι δυνατό να ρυθμιστούν. Βοήθειας των υπηρεσιών IIS έχει οδηγίες σχετικά με την εγκατάσταση του ODBC καταγραφή, η οποία περιλαμβάνει τη χρήση Logtemp.sql για τη δημιουργία πίνακα στην αναμενόμενη δομή.

Μπορείτε να χρησιμοποιήσετε Enterprise Manager για να δημιουργήσετε τον πίνακα, αλλά για να είναι ταχύτερη και ως βοήθημα για την αυτοματοποίηση της διαδικασίας, αντίθετα χρησιμοποιήστε την ακόλουθη δέσμη ενεργειών Query Analyzer για να δημιουργήσετε τον πίνακα:

CREATE TABLE [dbo].[tablename] ([date] [datetime] NULL,
[time] [datetime] NULL ,
[c-ip] [varchar] (50) NULL ,
[cs-method] [varchar] (50) NULL ,
[cs-uri-stem] [varchar] (255) NULL ,
[cs-uri-query] [varchar] (2048) NULL ,
[sc-status] [int] NULL ,
[sc-bytes] [int] NULL ,
[time-taken] [int] NULL ,
[cs(User-Agent)] [varchar] (255) NULL ,
[cs(Cookie)] [varchar] (2048) NULL ,
[cs(Referer)] [varchar] (2048) NULL
)


Σημειώστε ότι ορισμένα από αυτά τα πεδία είναι αρκετά μεγάλα και δεν μπορεί να είναι αναγκαίες για την αναθεώρηση των αρχείων καταγραφής συγκεκριμένη.

Μετά τη δημιουργία του πίνακα, μπορείτε να εισαγάγετε τα δεδομένα χρησιμοποιώντας τον Οδηγό εισαγωγής, αντιστοίχιση από το αρχείο *.log με τη βάση δεδομένων και τον πίνακα.

Χρήση του Οδηγού μπορεί να είναι χρονοβόρα, έτσι ώστε τα ακόλουθα μπορεί να χρησιμοποιηθεί για να επιταχύνουν την εισαγωγή των αρχείων καταγραφής web:

BULK INSERT [dbo].[tablename] FROM 'c:\weblog.log'WITH (
FIELDTERMINATOR = ' ',
ROWTERMINATOR = '\n'
)


Σημειώστε ότι η μαζική εισαγωγή θα αποτύχει όταν συναντήσει γραμμές που αρχίζουν με "#". Για αρχεία καταγραφής web, αυτό συμβαίνει και οι τέσσερις πρώτες γραμμές, καθώς και άλλες εμφανίσεις όταν διακοπεί και ξεκινήσει, δεδομένου ότι οι γραμμές των επικεφαλίδων γράφονται κατά την επανεκκίνηση της υπηρεσίας διακομιστή. Το ακόλουθο άρθρο της Γνωσιακής βάσης παρέχει ένα βοηθητικό πρόγραμμα και πηγαίο κώδικα, για να καταργήσετε αυτές τις γραμμές και να προετοιμάσετε το αρχείο καταγραφής για την μαζική εισαγωγή στον SQL Server:

Το ΑΡΧΕΊΟ 296093 : βοηθητικό πρόγραμμα PrepWebLog προετοιμάζει αρχεία καταγραφής των υπηρεσιών IIS για SQL μαζικής εισαγωγής
Όταν ολοκληρωθεί η εισαγωγή, μπορείτε να χρησιμοποιήσετε το Query Analyzer για να εκτελέσετε ερωτήματα για την οργάνωση των δεδομένων. Για παράδειγμα:

Select [cs-uri-stem], [time-taken] from tablename where [time-taken] >= 20000 and time between '1899-12-30 16:30:00.000' and '1899-12-30 17:30:00.000' 
Αυτό το ερώτημα θα εμφανίσει τα ονόματα όλων των σελίδων που διήρκεσε περισσότερο από 20 δευτερόλεπτα για την επεξεργασία και που επεξεργάστηκαν μεταξύ 4:30 και 5:30 μ.μ., καθώς και ο χρόνος επεξεργασίας (σε χιλιοστά του δευτερολέπτου) για κάθε μία.

Σημειώστε ότι από προεπιλογή web αρχεία καταγραφής καταγράφονται σε μέση ώρα Greenwich, έτσι εάν δεν τις αλλαγές που έχουν γίνει για την εγγραφή των αρχείων καταγραφής στην τοπική ώρα, πρέπει να ρυθμίσετε για τοπική ώρα όταν εξετάζετε τα αρχεία καταγραφής.

Ένα άλλο δείγμα ερωτήματος:
Select distinct [cs-uri-stem], [time-taken] from tablename where [time-taken] > (select avg([time-taken]) from tablename)order by [time-taken] desc
Αυτό το ερώτημα βρίσκει τον μέσο όρο [ώρα-λήψης] για κάθε καταχώρηση στο αρχείο καταγραφής και, στη συνέχεια, επιλέγει το [cs-uri-στέλεχος] και το [ώρα-λήψης] και οργανώνει αυτό σε φθίνουσα σειρά από [ώρα λήψης]. Προσθήκη όρου "χρόνος μεταξύ", θα μπορούσε να απομονώσετε περαιτέρω τα αποτελέσματα αυτού του ερωτήματος.

Αναφορές

ΣΗΜΕΊΩΣΗ: Μαζική εισαγωγή δεν θα λειτουργήσει με τον SQL Server 7.0, αλλά λειτουργεί με SQL Server 2000. Για πρόσθετες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

Σφάλμα 272292 : σφάλμα 7399 κατά την μαζική εισαγωγή σε πίνακα με τη στήλη προεπιλογή σε μια στήλη που είναι ΑΡΙΘΜΗΤΙΚΉ ή ΔΕΚΑΔΙΚΉ
Για περισσότερες πληροφορίες σχετικά με LocalTimeRollover για τα αρχεία καταγραφής των υπηρεσιών IIS και η ρύθμιση LogFileLocaltimeRollover:

Ιδιότητες

Αναγνωριστικό άρθρου: 296085 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια