GoAccess: Ανάλυση logs σε πραγματικό χρόνο για local ή remote monitoring Apache και Nginx

dimitris | Κυρ, 08/05/2018 - 17:12 | 6' | 2

Αν διαχειρίζεστε Apache ή nginx web servers και χρειάζεστε ένα απλό αλλά καλό εργαλείο ανάλυσης των logs των ιστοσελίδων σας, το οποίο να λειτουργεί και τοπικά (από το τερματικό) και απομακρυσμένα (ssh ή μέσω browser) και ταυτόχρονα να έχει real time λειτουργία, δοκιμάστε το GoAccess.

Το GoAccess είναι ένας πολύ γρήγορος αναλυτής των αρχείων καταγραφής του web server γραμμένος σε C. Η βασική του λειτουργία είναι ότι αναλύει και δείχνει με έναν ωραίο ncurses τρόπο τα στατιστικά των ιστοσελίδων μας από τη γραμμή εντολών (π.χ. ενώ είστε συνδεδεμένοι μέσω ssh στον server). Και μάλιστα, κάνει την ανάλυση σε πραγματικό χρόνο. Δηλαδή το αφήνετε ανοικτό σε ένα screen και αυτό συνεχίζει να υπολογίζει στατιστικά για επισκέπτες, αρχεία, διευθύνσεις IP επισκεπτών, user-agents, referrals, 4xx/5xx σφάλματα κλπ.

Το πρόγραμμα υποστηρίζει σχεδόν όλους τους τύπους web log: Apache, nginx, Amazon S3, Cloudfront και δεν συμμαζεύεται. Δεν χρειάζεται βάση δεδομένων φυσικά. Ολα τα data είναι ήδη αποθηκευμένα στα log files... Αν έχετε και geoip database στον server για IP geolocation, δείχνει και όμορφη κατανομή των επισκεπτών σας ανά χώρα...

Εκτός από τη real-time λειτουργία σε ncurses περιβάλλον, το GoAccess βγάζει και HTML αρχεία αν προτιμάτε να κάνετε monitoring με τον browser και το ποντίκι. Και το ακόμα καλύτερο:  δίνει και real time επιλογή ακόμα και αν παρακολουθείτε με τον browser.

Αν πάλι θέλετε να πάρετε τα data της ανάλυσης και να τροφοδοτήσετε το δικό σας εργαλείο ή εφαρμογή, το GoAccess προσφέρει και JSON/CSV export. Οπότε κανείς δεν μένει παραπονεμένος.

Κοντολογίς, το GoAccess θα φανεί πολύ χρήσιμο σε sysadmins που θέλουν να βλέπουν τι γίνεται στα διάφορα sites που σερβίρουν μέσω Apache ή Nginx.

Το GoAccess υπάρχει σε Debian-based διανομές, αλλά καλό είναι να εγκαταστήσετε την πιο φρέσκια έκδοση 1.2 με τις εντολές:

wget https://tar.goaccess.io/goaccess-1.2.tar.gz
tar -xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/
# εγκαταστήστε τα πακέτα ανάπτυξης cursesw5 και libgeoip,
# καθώς και την παλιά βάση δεδομένων του geoip
apt-get install libncursesw5-dev libgeoip-dev geoip-database
./configure --enable-utf8 --enable-geoip=legacy
make
make install

Στη συνέχεια, αν όλα έχουν πάει καλά, δίνετε :

goaccess /path/to/my-access.log -c

π.χ.

goaccess /var/log/apache2/linuxinsider.gr-access.log -c

 Η παράμετρος -c σημαίνει ότι το πρόγραμμα θα εμφανίσει ένα διάλογο για να σας ρωτήσει τι είδους είναι το log file.

Αν π.χ. ξέρετε ότι είναι apache log σε COMBINED μορφή, δίνετε:

goaccess /var/log/apache2/linuxinsider.gr-access.log --log-format=COMBINED

Και voila:

 

Μια ακόμα χρήσιμη επιλογή είναι η --crawlers-only που βάζει το GoAccess να αναλύσει και να αναφέρει μόνο τα bots που βαράνε ανηλεώς τις ιστοσελίδες σας. Αν πάλι δεν σας καίγεται καρφί για τους crawlers, και θέλετε να αναλύσει μόνο hits από πραγματικούς επισκέπτες, υπάρχει η --ignore-crawlers.

goaccess /var/log/apache2/linuxinsider.gr-access.log --log-format=COMBINED --ignore-crawlers

Η εμφάνιση της ανάλυσης των logs στο τερματικό είναι μια χαρά με το ncurses, αλλά το GoAccess προσφέρει πολύ περισσότερα. Για να το βάλετε να κάνει την ανάλυση και να εξάγει το report σε HTML (static αρχεία):

goaccess /var/log/apache2/linuxinsider.gr-access.log -ο report.html --log-format=COMBINED

Ενώ για να κάνετε real time monitoring των Apache combined logs μέσω browser προσθέτετε απλά την παράμετρο --real-time-html:

goaccess /var/log/apache2/linuxinsider.gr-access.log -ο /var/www/html/real-report.html --log-format=COMBINED

Μετά με τον browser του υπολογιστή ή του κινητού σας, επισκεφθείτε το url του αρχείου που ορίσατε για real time reporting και απολαύστε bootstrap γραφήματα, μπάρες και ιστογράμματα:

Πόσο πιο απλό πια;
        

Δείτε κι ένα live demo εδώ.

Δώσε αστέρια!

MO: 4.8 (ψήφοι: 8)

Σχόλια

Το μόνο προβληματάκι ειναι η παράμετρος legacy στο --enable-geoip θα χρησιμοποιήσει τις παλιές βάσεις δεδομένων του GeoIP που δίνει κάπως... αλλοπρόσαλλα αποτελέσματα. Αν υπάρχει στη διανομή σας πακέτο για να αξιοποιήσετε τις βελτιωμένες GeoIP2 βάσεις δεδομένων της MaxMind, εγκαταστήστε το, κάντε ξανά configure με --enable-geoip=mmdb και μετά ξανά make make install.

Π.χ. σε Debian, υπάρχει το libmaxminddb αρα χρειάζεστε το libmaxminddb-dev:

sudo apt-get install libmaxminddb-dev

./configure --enable-utf8 --enable-geoip=mmdb

make

sudo make install

Στη συνέχεια τρέχετε το goaccess με τη νέα παράμετρο --geoip-database <geocityfile> για να του δώσετε το path για το αρχείο GeoIP2 που έχετε κατεβάσει από την MaxMind.

Η MaxMind προσφέρει δωρεάν την βάση GeoLite2. Aν θέλετε πραγματική ακρίβεια στο geolocation, η φτηνότερη βάση ξεκινά από $50.... Ακριβή λύση, αλλά πρακτικά είναι η πιο απλή αν θέλετε σωστό IP geolocation των επισκεπτών των ιστοσελίδων σας.

 

Έχω μόνο θετικά πράγματα να πω γι αυτό το λογισμικό. Εκτός των άλλων, με βοήθησε να βρω και κάποια λάθη ρυθμίσεων στον web server. Απλά εκπληκτικό!