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ồmgccbiên dịch cho C, C +, và ngôn ngữ lập trình khác, vàmakecho 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.
-  ohoặcENTERđể mở rộng module đã chọn.
-  jvà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-9và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
 

