Cách cài đặt và sử dụng GoAccess Web Log Analyzer trên Ubuntu 20.04
GoAccess là một công cụ để theo dõi log web server trong thời gian thực. Nó được viết bằng C và sử dụng thư viện ncurses phổ biến cho giao diện console của nó, có thể được truy cập trực tiếp từ dòng lệnh.Điều này thật tuyệt vì bạn có thể SSH vào bất kỳ web server nào mà bạn kiểm soát và xem hoặc phân tích số liệu thống kê liên quan một cách nhanh chóng và an toàn. Ngoài giao diện console dòng lệnh, nó cũng có khả năng hiển thị thống kê ở các định dạng khác như HTML, JSON và CSV, mà bạn có thể sử dụng trong các ngữ cảnh khác hoặc chia sẻ với người khác.
GoAccess cũng có thể là một sự thay thế tuyệt vời cho các công cụ phân tích phía client tùy thuộc vào nhu cầu của bạn. Nó phân tích log server của bạn trực tiếp, vì vậy bạn không cần tải thêm bất kỳ tập lệnh nào và dữ liệu hoàn toàn nằm trong tầm kiểm soát của bạn.
Trong hướng dẫn này, bạn sẽ cài đặt và cấu hình GoAccess cho Apache trên web server Ubuntu 20.04. Bạn sẽ truy cập file log Apache bằng GoAccess trước khi xem lại các module có sẵn và các phím tắt chuyển trên giao diện dòng lệnh.
Yêu cầu
Đối với hướng dẫn này, bạn cần những thứ sau:
Một server Ubuntu 20.04. Bạn có thể đặt nó theo hướng dẫn cài đặt server ban đầu này cho Ubuntu 20.04 , bao gồm cả user không phải root có quyền sudo và firewall .
Đã cài đặt Apache theo Cách cài đặt Apache trên Ubuntu 20.04 .
Bước 1 - Cài đặt GoAccess
Trong bước này, bạn sẽ cài đặt công cụ GoAccess và các phụ thuộc của nó.
Bắt đầu bằng cách đảm bảo database gói và hệ thống được cập nhật:
- sudo apt update
- sudo apt full-upgrade
Bây giờ đã đến lúc cài đặt GoAccess. Một version của công cụ có sẵn trong hệ điều hành Ubuntu, nhưng đây thường không phải là version ổn định mới nhất. Ví dụ: version mới nhất của GoAccess tại thời điểm viết bài là 1.4, trong khi version có sẵn từ repository Ubuntu 20.04 là 1.3.
Để đảm bảo bạn đã cài đặt version GoAccess ổn định mới nhất trên server của bạn , bạn có thể biên dịch từ nguồn hoặc sử dụng repository GoAccess chính thức trên Ubuntu.
Phương pháp 1 - Biên dịch từ nguồn
Đầu tiên, hãy cài đặt các phụ thuộc cần thiết để biên dịch GoAccess từ nguồn:
- sudo apt install libncursesw5-dev libgeoip-dev libtokyocabinet-dev build-essential
Bạn cài đặt các phụ thuộc sau:
-
build-essential
: cài đặt nhiều gói, trong đó bao gồmgcc
biên dịch cho C, C +, và ngôn ngữ lập trình khác, vàmake
cho việc xây dựng các makefile GoAccess. -
libncursesw5-dev
: cài đặt thư viện ncurses mà GoAccess sử dụng cho giao diện dòng lệnh của nó. -
libgeoip-dev
: bao gồm các file cần thiết cho thư viện GeoIP. -
libtokyocabinet-dev
: cung cấp các phụ thuộc database để có hiệu suất cao hơn.
Tiếp theo, download version mới nhất của GoAccess từ trang web chính thức của họ bằng lệnh sau:
- wget http://tar.goaccess.io/goaccess-1.4.tar.gz
Khi quá trình download hoàn tất, hãy extract file lưu trữ bằng:
- tar -xzvf goaccess-1.4.tar.gz
Thay đổi thành folder mới được extract như sau:
- cd goaccess-1.4/
Chạy tập lệnh cấu hình được tìm thấy bên trong folder này:
- ./configure --enable-utf8 --enable-geoip=legacy
Cờ --enable-utf8
đảm bảo GoAccess biên dịch với hỗ trợ ký tự rộng, trong khi --enable-geoip
cho phép hỗ trợ GeoLocation với database GeoIP ban đầu. Bạn có thể thay thế legacy
bằng mmdb
để sử dụng database GeoIP2 nâng cao. Bạn có thể tìm thấy các tùy chọn cấu hình khác trên trang web GoAccess .
Bạn sẽ nhận được kết quả tương tự như sau:
Output. . . Your build configuration: Prefix : /usr/local Package : goaccess Version : 1.4 Compiler flags : -pthread Linker flags : -lnsl -lncursesw -lGeoIP -lpthread UTF-8 support : yes Dynamic buffer : no Geolocation : GeoIP Legacy Storage method : In-Memory with On-Disk Persitance Storage TLS/SSL : no Bugs : hello@goaccess.io
Chạy lệnh make
để tạo file tin cần thiết để cài đặt GoAccess:
- make
Cuối cùng, cài đặt GoAccess bằng makefile đã tạo trước đó vào hệ thống:
- sudo make install
Đảm bảo rằng chương trình đã được cài đặt thành công bằng lệnh:
- goaccess --version
Bạn sẽ nhận được kết quả sau:
OutputGoAccess - 1.4. For more details visit: http://goaccess.io Copyright (C) 2009-2020 by Gerardo Orellana Build configure arguments: --enable-utf8 --enable-geoip=legacy
Phương pháp 2 - Sử dụng Đại diện Chính thức của GoAccess
Một cách khác để cài đặt GoAccess là sử dụng repository Ubuntu chính thức cho chương trình. Phương pháp này phù hợp hơn nếu bạn muốn nó được cập nhật tự động lên version mới hơn trong quá trình nâng cấp hệ thống mà không cần phải biên dịch từ nguồn cho mỗi bản phát hành mới. Trước tiên, bạn cần thêm repository vào server của bạn :
- echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
Đầu tiên, bạn lấy tên bản phát hành của bản phân phối và sau đó chuyển nó thành tee
, gắn vào file /etc/apt/sources.list.d/goaccess.list
.
Với repository trong danh sách nguồn của bạn, bây giờ bạn có thể download khóa GPG để xác minh chữ ký:
- wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
Tiếp theo, cập nhật database gói bằng lệnh sau:
- sudo apt update
Cuối cùng, cài đặt GoAccess:
- sudo apt install goaccess
GoAccess hiện đã được cài đặt trên server Ubuntu của bạn. Trong bước tiếp theo, bạn sẽ truy cập và chỉnh sửa file cấu hình của nó để bạn có thể áp dụng các thay đổi đối với cách chương trình chạy.
Bước 2 - Chỉnh sửa cấu hình GoAccess
GoAccess đi kèm với một file cấu hình nơi bạn có thể áp dụng các thay đổi vĩnh viễn đối với hoạt động của chương trình. Bạn sẽ chỉnh sửa file này để chỉ định thời gian, ngày tháng và định dạng log để GoAccess biết cách phân tích cú pháp log server .
Tệp cấu hình có thể được đặt tại ~/.goaccessrc
hoặc %sysconfdir%/goaccess.conf
trong đó %sysconfdir%
là /etc/,
/usr/etc/
hoặc /usr/local/etc/
. Để tìm vị trí của file cấu hình trên server của bạn, hãy chạy lệnh sau:
- goaccess --dcf
Sample output/etc/goaccess/goaccess.conf
Chỉnh sửa file cấu hình này bằng nano
:
- sudo nano /etc/goaccess/goaccess.conf
Lưu ý: Nếu file này không tồn tại trên server , hãy đảm bảo tạo nó trước và điền nó với nội dung của file goaccess.conf
trên GitHub .
Nhiều dòng trong file được comment . Để bật một tùy chọn, hãy xóa ký tự #
đầu tiên phía trước nó. Trước tiên, hãy bật cài đặt time-format
cho Apache. Cài đặt này chỉ log-format
thời gian log-format
và cho phép GoAccess phân tích cú pháp các file log Apache văn bản thuần nào đáp ứng tiêu chí định dạng được hỗ trợ.
# The following time format works with any of the # Apache/NGINX's log formats below. # time-format %H:%M:%S
Tiếp theo, bạn sẽ bỏ ghi chú cài đặt date-format
Apache chỉ log-format
ngày log-format
log :
# The following date format works with any of the # Apache/NGINX's log formats below. # date-format %d/%b/%Y
Cuối cùng, bỏ ghi chú cài đặt log-format
. Một số dòng thay đổi cài đặt này và dòng chính xác để bỏ ghi chú phụ thuộc vào cách web server của bạn được cài đặt . Nếu bạn có cài đặt server không ảo, hãy bỏ comment log-format
sau:
# NCSA Combined Log Format log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Ngược lại, nếu bạn đã cài đặt server ảo, hãy bỏ comment sau:
# NCSA Combined Log Format with Virtual Host log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
Đến đây, bạn có thể lưu file và thoát khỏi editor . Đến đây bạn đã sẵn sàng để chạy chương trình GoAccess và phân tích một số file log văn bản thuần túy Apache.
Bước 3 - Truy cập file log của Apache bằng GoAccess
Server Apache cấp quyền truy cập vào trang web và giữ log truy cập cho tất cả truy cập HTTP đến. Các bản ghi này, hoặc file log , được lưu trữ trên hệ thống và có thể là nguồn thông tin có giá trị về việc sử dụng và đối tượng trang web .
Trên Ubuntu, các file log Apache được lưu trữ trong folder /var/log/apache2
theo mặc định. Để kiểm tra nội dung của folder này, hãy chạy lệnh sau:
- sudo ls /var/log/apache2
Sample outputaccess.log error.log other_vhosts_access.log
Nếu server của bạn đã chạy trong một thời gian dài, bạn có thể tìm thấy các file .gz
nén trong folder này chứa các file log trước đây do kết quả của việc xoay log . Các bản ghi mới nhất được đặt trong một file access.log
. Đối với web server có server ảo, bạn có thể phải cd
vào các folder con từ bên trong folder /apache2
để định vị các file log của mỗi server .
Hãy tiếp tục và chạy GoAccess dựa trên log truy cập Apache để hiểu rõ hơn về loại lưu lượng nào đang được web server xử lý. Chạy lệnh sau để phân tích file access.log
của bạn với GoAccess:
- sudo goaccess /var/log/apache2/access.log
Thao tác này sẽ chạy console dòng lệnh GoAccess.
Lưu ý: Nếu bạn nhìn thấy dấu nhắc Cấu hình Định dạng Nhật ký, điều đó nghĩa là những thay đổi bạn đã thực hiện đối với file cấu hình GoAccess ở bước trước đó không có hiệu lực. Đảm bảo rằng file cấu hình của bạn ở đúng vị trí và bạn đã bỏ ghi chú các cài đặt cần thiết.
Như đã đề cập trước đây, đôi khi bạn sẽ có một số file log nén trên một web server hoạt động lâu dài. Để chạy GoAccess trên tất cả các file này mà không cần extract chúng trước, bạn có thể chuyển kết quả của lệnh zcat
tới goaccess
:
- zcat /var/log/apache2/access.log.*.gz | goaccess -a
Tiếp theo, bạn sẽ học cách nhanh chóng chuyển qua giao diện trang tổng quan bằng các phím tắt.
Bước 4 - Điều hướng Control panel terminal
Ở đầu trang tổng quan là bản tóm tắt một số chỉ số chính. Điều này bao gồm tổng số yêu cầu cho khoảng thời gian báo cáo, số lượng khách truy cập, kích thước log , lỗi 404 không tìm thấy, file được yêu cầu, kích thước của file log được phân tích cú pháp, liên kết HTTP, tên của nguồn log , thời gian xử lý file log và hơn thế nữa.
Bên dưới console trên cùng, bạn sẽ tìm thấy tất cả các module có sẵn cung cấp thêm thông tin chi tiết về các chỉ số nói trên và các điểm dữ liệu khác được hỗ trợ bởi GoAccess. Để chuyển giao diện, hãy sử dụng các phím tắt sau:
-
TAB
để chuyển tiếp qua các module có sẵn vàSHIFT+TAB
để chuyển về phía sau. -
F5
để làm mới trang tổng quan. -
g
để chuyển lên đầu màn hình trang tổng quan vàG
để chuyển đến mục cuối cùng trong trang tổng quan. -
o
hoặcENTER
để mở rộng module đã chọn. -
j
vàk
để cuộn xuống và lên trong module đang hoạt động. -
s
để hiển thị các tùy chọn sắp xếp cho module đang hoạt động. -
/
để tìm kiếm trên tất cả các module vàn
để chuyển sang kết quả phù hợp tiếp theo. -
0-9
vàSHIFT+0
để nhanh chóng kích hoạt module được đánh số tương ứng. -
?
để xem hộp thoại trợ giúp nhanh. -
q
để thoát khỏi chương trình.
Tiếp theo, hãy xem xét từng module có sẵn trên console . Mỗi cái có một số và một tiêu đề, và một chỉ báo về tổng số dòng hiện có. Ký tự >
cho biết bảng hoạt động, cũng được phản ánh ở đầu console .
Đây là giải thích ngắn gọn về từng bảng. Mỗi phần bên dưới tương ứng với số bảng và tiêu đề trong chương trình.
1 - Số lượng khách truy cập mỗi ngày
Control panel này hiển thị số lần truy cập, số lượng khách truy cập và băng thông tích lũy cho mỗi ngày được báo cáo. Một khách truy cập duy nhất được coi là một người có cùng địa chỉ IP, ngày tháng và tác nhân user . Nó bao gồm trình thu thập thông tin và trình thu thập thông tin web theo mặc định.
2 - Tệp được Yêu cầu (URL)
Control panel này cung cấp số liệu thống kê liên quan đến các file không tĩnh được yêu cầu cao nhất trên web server của bạn. Nó hiển thị đường dẫn yêu cầu, phương thức và giao thức HTTP, số lượng khách truy cập, số lần truy cập và băng thông tích lũy.
3 - Yêu cầu tĩnh
Control panel này cung cấp các chỉ số giống như bảng trước đó, nhưng dành cho các file tĩnh như hình ảnh, CSS, JavaScript hoặc các loại file khác.
4 - Không tìm thấy URL (404)
Control panel này cũng hiển thị các số liệu tương tự được thảo luận trong 2 và 3, nhưng đối với các đường dẫn không được tìm thấy trên server (404).
5 - Tên server và IP của khách truy cập
Control panel này cung cấp thông tin chi tiết về các server kết nối với web server của bạn. Bạn có thể tìm thấy địa chỉ IP, số lượt truy cập và lượng băng thông được sử dụng. Đây là một cách tốt để xác định ai đang ăn hết băng thông của bạn và chặn chúng nếu cần.
Nếu bạn mở rộng console này bằng cách nhấn o
, bạn sẽ thấy thêm thông tin về từng server như quốc gia xuất xứ, city và kết quả tra cứu DNS ngược.
6 - Hệ điều hành
Control panel này báo cáo các hệ điều hành khác nhau được server sử dụng để kết nối với web server của bạn. Mở rộng console này sẽ hiển thị các version cụ thể của từng hệ điều hành.
7 - Các trình duyệt
Tương tự như bảng trước, bảng này báo cáo các trình duyệt được sử dụng bởi từng khách truy cập vào web server của bạn và liệt kê các version cụ thể cho từng trình duyệt sau khi được mở rộng.
8 - Phân phối thời gian
Tại đây, bạn sẽ tìm thấy báo cáo hàng giờ về số lượt truy cập, số lượng khách truy cập và băng thông đã tiêu thụ. Đây là một cách tốt để phát hiện các khoảng thời gian lưu lượng truy cập cao nhất trên server của bạn.
9 - Server ảo
Control panel này hiển thị các server ảo được phân tích cú pháp từ file log . Nó chỉ hoạt động nếu %v
có trong cấu hình định dạng log .
10 - URL liên kết giới thiệu
Các URL giới thiệu server truy cập đến web server của bạn được phản ánh ở đây. Control panel này được tắt theo mặc định và chỉ có thể được kích hoạt bằng cách comment ra REFERRERS
dòng nổi bật sau đây trong file cấu hình GoAccess:
#ignore-panel VISIT_TIMES #ignore-panel VIRTUAL_HOSTS #ignore-panel REFERRERS #ignore-panel REFERRING_SITES
11 - Trang web giới thiệu
Control panel này hiển thị địa chỉ IP của server giới thiệu, nhưng không hiển thị toàn bộ URL.
12 - Cụm từ khóa
Tại đây, các từ khóa được sử dụng trên Google tìm kiếm, bộ nhớ cache của Google và Google dịch dẫn đến trang web sẽ được báo cáo. Control panel này cũng bị tắt theo mặc định và phải được bật trong cài đặt:
#ignore-panel REFERRERS #ignore-panel REFERRING_SITES #ignore-panel KEYPHRASES #ignore-panel STATUS_CODES
13 - Mã trạng thái HTTP
Control panel này phản ánh thống kê tổng thể cho các mã trạng thái HTTP do web server của bạn trả về khi phản hồi một yêu cầu. Mở rộng bảng sẽ hiển thị số liệu thống kê tổng hợp cho từng mã trạng thái.
14 - User từ xa (Xác thực HTTP)
Control panel này hiển thị ID user của người yêu cầu tài liệu trên server của bạn được xác định bằng xác thực HTTP. Đối với các tài liệu không được bảo vệ bằng password , phần này sẽ là -
. Lưu ý console này chỉ được bật nếu %e
là một phần của cấu hình định dạng log .
15 - Trạng thái bộ nhớ cache
Control panel này cho phép bạn xác định xem một yêu cầu có đang được lưu vào bộ nhớ đệm và phục vụ từ bộ nhớ đệm hay không. Nó được kích hoạt nếu %C
là một phần của biến log-định dạng, và tình trạng có thể là MISS
, BYPASS
, EXPIRED
, STALE
, UPDATING
, REVALIDATED
, hoặc HIT
.
16 - Vị trí địa lý
Control panel này cung cấp một bản tóm tắt về các vị trí địa lý có được từ việc truy cập địa chỉ IP. Mở rộng console này sẽ hiển thị số liệu thống kê tổng hợp cho từng quốc gia xuất xứ.
Bạn đã xem xét các bảng có sẵn trong trang tổng quan, bây giờ bạn sẽ tạo báo cáo ở các định dạng khác nhau.
Bước 5 - Tạo báo cáo
Ngoài việc hiển thị dữ liệu trong terminal , GoAccess cũng cho phép bạn tạo báo cáo HTML, JSON hoặc CSV. Đảm bảo rằng bạn đang ở trong folder chính trước khi chạy bất kỳ lệnh nào trong phần này:
- cd ~
Để xuất báo cáo dưới dạng HTML tĩnh, hãy chỉ định file HTML làm đối số cho cờ -o
. Cờ này cũng chấp nhận tên file kết thúc bằng .json
hoặc .csv
.
- sudo goaccess /var/log/apache2/access.log -o stats.html
stats.html
sẽ xuất hiện trong folder user của bạn.
- ls
Outputgoaccess-1.4 goaccess-1.4.tar.gz snap stats.html
Bạn có thể sao chép file này vào folder user trên máy local của bạn bằng cách sử dụng scp
. Chạy lệnh này từ máy local của bạn chứ không phải server từ xa:
- scp user@your_server_ip:stats.html ~/stats.html
Khi file đã được sao chép xong, bạn có thể mở file trong trình duyệt của bạn bằng lệnh open
trên macOS:
- open ~/stats.html
Hoặc nếu bạn đang sử dụng bản phân phối Linux trên máy local của bạn :
- xdg-open ~/stats.html
Bạn đã tạo một báo cáo HTML và xem báo cáo này trong trình duyệt của bạn .
Kết luận
Trong bài viết này, ta đã trình bày về công cụ dòng lệnh GoAccess và thảo luận về cách sử dụng nó để phân tích log server . Mặc dù ta chỉ xem xét cách GoAccess được dùng với log Apache, công cụ này cũng hỗ trợ các định dạng log khác như Nginx, Amazon S3, Elastic Load Balancing và CloudFront.
Bạn có thể kiểm tra toàn bộ tài liệu GoAccess hoặc chạy man goaccess
trong terminal của bạn .
Các tin liên quan
Xây dựng ứng dụng web CRUD với Python và Flask - Phần thứ nhất2020-09-15
Phông chữ có thể thay đổi trên web bằng CSS
2020-09-01
Làm thế nào để tạo một Web Scraper đồng thời với Puppeteer, Node.js, Docker và Kubernetes
2020-08-19
Cách tạo ứng dụng web tiến bộ với Angular
2020-07-09
Cách cài đặt Django Web Framework trên Ubuntu 20.04
2020-07-06
Cách tạo chế độ xem để phát triển web Django
2020-05-14
Cách tạo chế độ xem để phát triển web Django
2020-05-14
Cách tạo ứng dụng web bằng Flask trong Python 3
2020-04-16
Cách tạo web server trong Node.js bằng module HTTP
2020-04-10
Mã thông báo web JSON (JWT) trong Express.js
2020-02-19