Mới đây, “thèm” được giá hời nên tôi đã đổi máy chủ sang máy chủ VPS Alibaba Cloud International Edition Hong Kong. Cảm giác lớn nhất sau khi chuyển đến đây không phải là tốc độ được cải thiện - vì VPS kdatacenter Hàn Quốc ban đầu sử dụng cũng rất nhanh khi truy cập trên mạng viễn thông - nhưng hiệu suất của máy chủ Alibaba Cloud VPS thực sự tốt so với các máy chủ VPS khác cũng vậy. 1GB thì hơi yếu.

Tôi vừa sử dụng một công cụ để quét tải hệ thống của VPS Alibaba Cloud Hong Kong và tải hệ thống cứ tăng lên. Đôi khi tôi thấy rằng tôi không thể mở nó khi tôi đang viết một bài báo ở chế độ nền. Khi mở nhật ký máy chủ, tôi tìm thấy rất nhiều IP bất thường, chẳng hạn như quét cổng, chèn SQL, tệp sao lưu trang web "thiếu", và kiểm tra căng thẳng AB... Tóm lại, có rất nhiều IP bất thường. Hành vi truy cập của con người.

Phân tích hành vi IP trong nhật ký là một công việc mệt mỏi, đặc biệt khi nhật ký vượt quá hàng trăm MB và việc mở chúng dưới dạng tệp văn bản rất chậm. Bài viết này sẽ chia sẻ hai công cụ phân tích nhật ký máy chủ tuyệt vời: ngxtop và GoAccess. ngxtop phân tích các tệp nhật ký Nginx và hiển thị chúng trong thời gian thực bằng giao diện tương tự như lệnh top.

ngxtop có thể phân tích các tệp nhật ký trước đó và theo dõi nhật ký máy chủ trong thời gian thực. Bạn có thể nhanh chóng tìm ra các địa chỉ IP được truy cập nhiều nhất trong nhật ký, lỗi 403/500/404, thứ hạng trang được yêu cầu, v.v. trong cổng giống như sử dụng lệnh Top. . ngxtop là một công cụ nhẹ, trong khi GoAccess giống một công cụ thống kê nhật ký mạnh mẽ hơn.

GoAccess không chỉ phong phú về đồ họa và văn bản mà còn nhanh chóng, với tốc độ phân tích bản ghi nhật ký là 8W mỗi giây và websocket làm mới số liệu thống kê cứ sau 10 giây. GoAccess không chỉ có giao diện dòng lệnh mà còn có thể tạo trang web Html, cho phép bạn xem trực quan số lượng khách truy cập trong nhật ký, tệp được yêu cầu, lỗi 404 và các lỗi khác, vị trí người dùng, trình duyệt, hệ điều hành, URL nguồn, Mã trạng thái HTTP, v.v.

Công cụ phân tích nhật ký máy chủ: ngxtop và GoAccess - giám sát thời gian thực và quản lý trực quan để nhanh chóng tìm ra nguồn ngoại lệ

Tóm lại, ngxtop và GoAccess là hai công cụ mạnh mẽ để phân tích nhật ký máy chủ như Apache và Nginx. Khi bạn thành thạo hai phần mềm này, các IP nguy hiểm “tiềm ẩn” cho máy chủ có thể bị lộ. Là quản trị viên web, việc học cách sử dụng thêm một phần mềm có nghĩa là bạn có thể tiết kiệm chi phí máy chủ khác, chẳng hạn như:

  1. Sử dụng Huginn để nắm bắt các cập nhật tài khoản công khai RSS và WeChat từ bất kỳ trang web nào - tạo nền tảng đọc thông tin một cửa
  2. Linux VPS gắn Google Drive và Dropbox-thực hiện đồng bộ hóa và sao lưu dữ liệu máy chủ VPS
  3. Ba công cụ miễn phí giúp bạn phát hiện tính xác thực của máy chủ VPS - Phương pháp kiểm tra tốc độ và hiệu suất máy chủ VPS

PS: Cập nhật ngày 21 tháng 10 năm 2017, Các bạn quan tâm đến việc sử dụng VPS của Alibaba Cloud Hong Kong có thể đọc bài đánh giá của tôi trước: Alibaba Cloud International Version Hong Kong Computer Room Speed ​​and Performance Evaluation - Fast but Disk IO và bộ nhớ Đó là nút cổ chai. Nếu bạn cũng muốn theo dõi tính ổn định của mạng máy chủ VPS, bạn có thể sử dụng công cụ này: Cài đặt và cấu hình hút thuốc - Công cụ giám sát hiệu suất mạng nguồn mở miễn phí để triển khai chính/phụ trực quan.

1. Cài đặt và sử dụng ngxtop

1.1  cài đặt ngxtop

Trang chủ dự án:

  1. HTTPS://GitHub.com/Lebinhong/Đỉnh nhỏ đó

ngxtop phù hợp với nhật ký máy chủ Nginx. ngxtop có thể được cài đặt bằng lệnh sau:

Fedora:yum install python-pip
CentOS/RHEL需先安装EPEL,安装完后:yum install python-pip
Debian/Ubuntu:apt-get install python-pip

pip install ngxtop

Hoặc bạn có thể cài đặt trực tiếp từ nguồn:

wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip
unzip ngxtop-master.zip
cd ngxtop-master
python setup.py install

1.2  cách sử dụng ngxtop

Cách sử dụng cơ bản của ngxtop như sau:

gxtop [选项]
ngxtop [选项] (print|top|avg|sum) <变量>
ngxtop info

Các tùy chọn có các tham số sau:

-l : Chỉ định đường dẫn đầy đủ của tệp nhật ký (Nginx hoặc Apache2)

-f : định dạng nhật ký

–no-follow: Xử lý tệp nhật ký hiện đang được ghi thay vì xử lý nhật ký mới được thêm vào tệp nhật ký theo thời gian thực

-t : tần suất cập nhật

-n: hiển thị số dòng

-o : quy tắc sắp xếp (mặc định là số lượng truy cập)

-a …, –a …: Thêm các biểu thức (thường là các biểu thức tổng hợp như tổng, trung bình, tối thiểu, tối đa, v.v.) vào đầu ra.

-v: xuất thông tin chi tiết

-i: Chỉ xử lý các bản ghi phù hợp với quy tắc

-c <file> hoặc –config <file> chỉ định tệp cấu hình nginx và tự động phân tích định dạng nhật ký

-i <filter-express> hoặc –filter <filter-express> Các bộ lọc thỏa mãn biểu thức sẽ được xử lý

-p <filter-express> hoặc –pre-filter <filter-express> biểu thức trong bộ lọc để kiểm tra giai đoạn phân tích trước.

Các biến của ngxtop là: remote_addr, remote_user, time_local, request, request_path, status, body_bytes_sent, http_referer, http_user_agent. Nó chủ yếu được sử dụng để phân tích địa chỉ IP, đường dẫn yêu cầu, trạng thái HTTP, người giới thiệu, user_agent, v.v.

1.3  ví dụ về ngxtop

Bạn có thể sử dụng thông tin ngxtop để kiểm tra địa chỉ nhật ký máy chủ cục bộ và đường dẫn của tệp cấu hình. Tuy nhiên, nó chỉ có thể hiển thị một số tệp nhật ký mặc định và một số tệp nhật ký tùy chỉnh sẽ không được hiển thị.

Tìm hiểu mười URL yêu cầu hàng đầu về lỗi 404. Mã lệnh :

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow top request_path --filter 'status == 404'

Hiệu quả như sau:

Tìm hiểu mười địa chỉ IP được truy cập nhiều nhất. Mã lệnh :

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr

Hiệu quả như sau:

Tìm hiểu mười địa chỉ IP lưu lượng truy cập hàng đầu. Mã lệnh :

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --order-by 'avg(bytes_sent) * count'

Tìm mã lỗi trên 400 và hiển thị yêu cầu, trạng thái và http_referer. Mã lệnh :

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow -i 'status >= 400' print request status http_referer

Tìm 10 giá trị byte_sent trung bình hàng đầu với mã trạng thái 200 và request_path bắt đầu bằng wzfou. Mã lệnh :

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow avg bytes_sent --filter 'status == 200 and request_path.startswith("wzfou")'

Thông qua các lệnh trên, về cơ bản bạn có thể nhanh chóng khóa địa chỉ IP của một số yêu cầu bất thường. Theo mặc định, ngxtop sẽ hiển thị 10 bản ghi đầu tiên. Bạn có thể thêm tham số –n xxx để kiểm soát số lượng hiển thị. Lệnh như sau:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr -n 20

ngxtop thực hiện giám sát nhật ký máy chủ. Để hiển thị giám sát nhật ký Nginx trong thời gian thực, bạn chỉ cần tham số –no-follow. Lệnh như sau:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --group-by remote_addr

Hiệu quả như sau:

2. Cài đặt và sử dụng GoAccess

2.1  Cài đặt GoAccess

Trang web chính thức của GoAccess:

  1. HTTPS://go access.IO/

GoAccess hỗ trợ phân tích nhật ký máy chủ như Apache, Nginx, Amazon S3, Elastic Load Balancing và CloudFront. Lệnh cài đặt như sau:

apt-get install libncursesw5-dev libgeoip-dev
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar -xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

Tùy theo nhu cầu của bản thân mà bạn có thể điều chỉnh các tùy chọn cấu hình khi cài đặt GoAccess. như sau:

--enable-debug Biên dịch bằng cờ gỡ lỗi và tắt tối ưu hóa trình biên dịch.
--enable-utf8 Hỗ trợ ký tự rộng rãi. Phụ thuộc vào mô-đun Ncursesw.
--enable-geoip=<legacy|mmdb> Hỗ trợ định vị địa lý. Phụ thuộc vào mô-đun MaxMind GeoIP. di sản sẽ sử dụng cơ sở dữ liệu GeoIP gốc. mmdb sẽ sử dụng cơ sở dữ liệu GeoIP2 nâng cao.
--enable-tcb=<memhash|btree> Nội các Tokyo hỗ trợ lưu trữ. memhash sẽ sử dụng cơ sở dữ liệu băm trong bộ nhớ của Nội các Tokyo. btree sẽ sử dụng cơ sở dữ liệu B+Tree trên đĩa của Nội các Tokyo.
–disable-zlib Tắt việc sử dụng tính năng nén zlib trên cơ sở dữ liệu B+Tree.
--disable-bzip Vô hiệu hóa việc sử dụng tính năng nén bzip2 trên cơ sở dữ liệu B+Tree.
--with-getline khiến sử dụng bộ đệm dòng mở rộng động để phân tích các yêu cầu dòng đầy đủ, nếu không thì bộ đệm có kích thước cố định (4096) sẽ được sử dụng.
--with-openssl Cho phép liên lạc giữa GoAccess và máy chủ WebSocket của nó để hỗ trợ OpenSSL.

2.2  Cách sử dụng GoAccess

Cú pháp GoAccess như sau:

goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]

Các thông số thường dùng được mô tả như sau:

-f –log-file=<logfile>

Chỉ định đường dẫn đến tệp nhật ký đầu vào. Nếu một tệp đầu vào được chỉ định trong tệp cấu hình, nó sẽ được ưu tiên hơn một tệp được chỉ định trên dòng lệnh thông qua tham số -f.

-l –log-debug=<tên file>

Gửi tất cả thông tin gỡ lỗi đến tệp được chỉ định. Các tùy chọn cấu hình cần được chỉ định --enable-debug

-p –config-file=<configfile>

Chỉ định sử dụng tệp cấu hình tùy chỉnh. Nếu tham số này được đặt, mức độ ưu tiên của nó sẽ cao hơn tệp cấu hình chung (nếu có).

–invalid-requests=<tên file>

Ghi lại các yêu cầu không hợp lệ vào tệp được chỉ định.

--no-global-config

Vô hiệu hóa việc tải các tập tin cấu hình chung. Các thư mục có thể có phải là /usr/etc/, /etc/ hoặc /usr/local/etc/, trừ khi được chỉ định khi chạy ./configure --sysconfdir=/dir.

-a –agent-danh sách

Mở danh sách Tác nhân người dùng. Khi bật lên, tốc độ phân tích cú pháp sẽ giảm xuống.

-d –with-output-resolver

Bật độ phân giải IP khi xuất báo cáo HTML hoặc JSON.

-e –exclude-ip <IP|Phạm vi IP>

Loại trừ địa chỉ IPv4 hoặc IPv6. Sử dụng trình kết nối để thể hiện các phân đoạn IP (bắt đầu).

-H –http-protocol=<yes|no>

Chuyển đổi giao thức yêu cầu HTTP. Trường yêu cầu sẽ được tạo chứa giao thức yêu cầu + yêu cầu thực.

-M –http-method=<yes|no>

Chuyển đổi phương thức yêu cầu HTTP. Một trường yêu cầu sẽ được tạo có chứa phương thức yêu cầu + yêu cầu thực.

-o –output=<json|csv>

Chuyển hướng tệp đã cho sang đầu ra tiêu chuẩn, sử dụng hậu tố để xác định định dạng đầu ra:

-q –no-query-string

Bỏ qua chuỗi truy vấn được yêu cầu. Đó là: www.google.com/page.htm?query => www.google.com/page.htm
Lưu ý: Việc xóa chuỗi truy vấn sẽ giảm đáng kể mức tiêu thụ bộ nhớ, đặc biệt đối với các yêu cầu về dấu thời gian.

-r –no-term-resolver

Vô hiệu hóa độ phân giải IP trong đầu ra thiết bị đầu cuối.

–444-as-404

Xử lý trạng thái không chuẩn 444 là 404.

–4xx-to-unique-count

Thêm số lỗi máy khách 4xx vào số lượng khách truy cập duy nhất.

–tất cả các tập tin tĩnh

Đếm các tệp tĩnh chứa chuỗi truy vấn.

–date-spec=<ngày|giờ>

Đặt định dạng hiển thị ngày, một là định dạng ngày tiêu chuẩn (mặc định) và một là định dạng có giờ được thêm vào ngày.
Chỉ hợp lệ trong bảng khách. Hữu ích cho việc phân tích dữ liệu khách truy cập ở cấp độ hàng giờ. Ví dụ về định dạng hiển thị: 18/Dec/2010:19

--giải mã kép

Giải mã một giá trị được mã hóa kép. Bao gồm UserAgent, Yêu cầu và Người giới thiệu.

–enable-panel=<PANEL>

Mở bảng được chỉ định. Danh sách bảng điều khiển:

–hour-spec=<giờ|phút>

Đặt định dạng hiển thị thời gian, một là định dạng thời gian tiêu chuẩn (mặc định) và một là định dạng có số phút được thêm vào thời gian (cứ sau 10 phút).
được sử dụng cho bảng phân phối thời gian. Hữu ích cho việc phân tích lưu lượng truy cập tăng đột biến trong khoảng thời gian cụ thể.

–bỏ qua trình thu thập thông tin

Bỏ qua trình thu thập thông tin.

–ignore-panel=<PANEL>

Bỏ qua bảng điều khiển được chỉ định. Danh sách bảng điều khiển:

–ignore-referer=<referer>

Bỏ qua nguồn thống kê. Ký tự đại diện được hỗ trợ. Ví dụ: *.domain.com ww?.domain.*

–ignore-status=<TÌNH TRẠNG>

Bỏ qua việc phân tích cú pháp hoặc hiển thị một hoặc nhiều mã trạng thái. Nếu có nhiều mã trạng thái, hãy sử dụng tham số này để chỉ định từng mã một.

–num-tests=<số>

Đặt số dòng kiểm tra, nghĩa là kiểm tra nhật ký truy cập bằng định dạng nhật ký/ngày/giờ đã cho. Giá trị mặc định là 10 dòng. Nếu được đặt thành 0, trình phân tích cú pháp sẽ không thực hiện bất kỳ thử nghiệm nào và sẽ phân tích trực tiếp toàn bộ tệp. Nếu một dòng khớp với định dạng nhật ký/ngày/giờ nhất định trước khi đạt đến số, trình phân tích cú pháp sẽ coi tệp nhật ký là hợp lệ, nếu không GoAccess sẽ trả về EXIT_FAILURE và hiển thị các thông báo lỗi liên quan.

–xử lý và thoát

Phân tích nhật ký và không xuất dữ liệu khi thoát. Chủ yếu được sử dụng khi bạn chỉ muốn thêm dữ liệu vào cơ sở dữ liệu đĩa mà không xuất báo cáo.

–real-os

Hiển thị tên hệ điều hành thực. Ví dụ: Windows XP, Snow Leopard.

–sort-panel=<PANEL,FIELD,ORDER>

S sắp xếp các tấm trong quá trình tải lần đầu. Sắp xếp các tùy chọn được phân tách bằng dấu phẩy. Các tùy chọn sử dụng định dạng: PANEL, METRIC, ORDER

–tập tin tĩnh <phần mở rộng>

Thêm hậu tố tập tin tĩnh. Ví dụ: .mp3. Tên hậu tố có phân biệt chữ hoa chữ thường.

-g --std-geoip

Cơ sở dữ liệu GeoIP tiêu chuẩn, dung lượng bộ nhớ thấp.

–cơ sở dữ liệu địa lý <geocityfile>

Đặt đường dẫn cơ sở dữ liệu GeoIP. Ví dụ: GeoLiteCity.dat. Nó cần được tải xuống cục bộ từ maxmind.com. Hỗ trợ có sẵn cho cả IPv4 và IPv6. Lưu ý: --geoip-city-data là bí danh của --geoip-database.
Lưu ý: Nếu sử dụng GeoIP2, bạn cần tải xuống cơ sở dữ liệu thành phố/quốc gia từ MaxMind và thiết lập qua --geoip-database.

Định dạng nhật ký GoAccess. GoAccess cũng có một tham số dùng để đặt định dạng nhật ký máy chủ: –log-format <logformat>. Định dạng nhật ký tham số được theo sau bởi ký tự khoảng trắng hoặc dấu phân cách tab (t), được sử dụng để chỉ định định dạng chuỗi nhật ký.

Nếu bạn đang sử dụng tên định dạng nhật ký được xác định trước trong bảng bên dưới, nó có thể được sử dụng trực tiếp dưới dạng biến trong định dạng nhật ký/ngày/giờ của GoAccess.

COMBINED     | 联合日志格式
VCOMBINED    | 支持虚拟主机的联合日志格式
COMMON       | 通用日志格式
VCOMMON      | 支持虚拟主机的通用日志格式
W3C          | W3C 扩展日志格式
SQUID        | Native Squid 日志格式
CLOUDFRONT   | 亚马逊 CloudFront Web 分布式系统
CLOUDSTORAGE | 谷歌云存储
AWSELB       | 亚马逊弹性负载均衡
AWSS3        | 亚马逊简单存储服务 (S3)

2.3  Cách đặt định dạng nhật ký

Trước tiên, hãy xem log_format của bạn là gì. Lệnh log_format như sau:

Cú pháp: chuỗi tên log_format …;
Giá trị mặc định: log_format kết hợp “…”;
Phần cấu hình: http

tên đại diện cho tên định dạng và chuỗi đại diện cho định dạng tương đương. log_format có định dạng nhật ký kết hợp mặc định không cần thiết lập, tương đương với định dạng nhật ký kết hợp của Apache, như hiển thị bên dưới:

log_format  combined  '$remote_addr - $remote_user  [$time_local]  '
                                   ' "$request"  $status  $body_bytes_sent  '
                                   ' "$http_referer"  "$http_user_agent" ';

Tất nhiên, bạn cũng có thể thêm thông tin mà nhật ký máy chủ cần lấy theo nhu cầu của riêng bạn. Các biến sau được phép ở định dạng nhật ký:

remote_addr, $http_x_forwarded_for 记录客户端IP地址
remote_user 记录客户端用户名称
request 记录请求的URL和HTTP协议
status 记录请求状态
body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
bytes_sent 发送给客户端的总字节数。
connection 连接的序列号。
connection_requests 当前通过一个连接获得的请求数量。
msec 日志写入时间。单位为秒,精度是毫秒。
pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
http_referer 记录从哪个页面链接访问过来的
http_user_agent 记录客户端浏览器相关信息
request_length 请求的长度(包括请求行,请求头和请求正文)。
request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
time_iso8601 ISO8601标准格式下的本地时间。
time_local 通用日志格式下的本地时间。

Sau đây là ví dụ về cài đặt log_format:

http {
 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                        '"$status" $body_bytes_sent "$http_referer" '
                                        '"$http_user_agent" "$http_x_forwarded_for" '
                                        '"$gzip_ratio" $request_time $bytes_sent $request_length';
 
 log_format srcache_log '$remote_addr - $remote_user [$time_local] "$request" '
                                '"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
                                '[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';
 
 open_log_file_cache max=1000 inactive=60s;
 
 server {
 server_name ~^(www.)?(.+)$;
 access_log logs/$2-access.log main;
 error_log logs/$2-error.log;
 
 location /srcache {
 access_log logs/access-srcache.log srcache_log;
 }
 }
}

Đây là sự tương ứng giữa định dạng nhật ký GoAccess và định dạng nhật ký máy chủ:

%t 匹配time-format格式的时间字段

%d 匹配date-format格式的日期字段

%h host(客户端ip地址,包括ipv4和ipv6)

%r 来自客户端的请求行

%m 请求的方法

%U URL路径

%H 请求协议

%s 服务器响应的状态码

%b 服务器返回的内容大小

%R HTTP请求头的referer字段

%u 用户代理的HTTP请求报头

%D 请求所花费的时间,单位微秒

%T 请求所花费的时间,单位秒

%^ 忽略这一字段

Ví dụ sửa đổi nhật ký GoAccess:

log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for $request_time $upstream_response_time';

Tệp cấu hình mặc định của GoAccess goaccess.conf được đặt trong đường dẫn /usr/local/etc. Định dạng mặc định là: log-format %h %^[%d: %t %^] "%r" %s %b "%R" "%u". Quan sát định dạng nhật ký máy chủ ở trên và thấy rằng có nhiều thời gian phản hồi hơn $request_time và thời gian phản hồi ngược dòng $upstream_response_time.

Chúng ta có thể sửa đổi nó như sau:

原来:log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
修改:log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^ %^ %T

Ba phần tử cuối cùng %^ %^ %T, %^ có nghĩa là bỏ qua, %T có nghĩa là "thời gian phản hồi tính bằng giây, chính xác đến mili giây". Bằng cách sửa đổi định dạng của GoAccess, nó tương ứng với định dạng nhật ký máy chủ của chúng tôi.

2.4  Ví dụ về GoAccess

Nếu máy chủ của bạn sử dụng định dạng nhật ký chung, định dạng nhật ký chung, bao gồm máy chủ ảo, định dạng W3C và Amazon CloudFront (tải xuống phân tán), v.v., thì không cần sửa đổi định dạng nhật ký mà chỉ cần sử dụng trực tiếp. Cả LNMP và Oneinstack đều sử dụng định dạng KẾT HỢP.

GoAccess phân tích lệnh log trong terminal:

goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED

Trong lệnh trên, -f chỉ định nhật ký /path/to/log cần phân tích; định dạng nhật ký –log-format, định dạng mặc định của LNMP là: COMBINED. Hiệu quả sau khi chạy như sau:

Các phím nóng hoạt động như sau:

Trang trợ giúp chính F1 hoặc h.

F5Vẽ lại cửa sổ chính.

qThoát khỏi chương trình, cửa sổ hiện tại hoặc mô-đun bị lỗi.

o hoặc ENTER mở rộng mô-đun đã chọn hoặc mở một cửa sổ.

0-9Shift + 0 kích hoạt mô-đun đã chọn.

jCuộn xuống trong mô-đun mở rộng.

kCuộn lên trong mô-đun mở rộng.

cĐặt hoặc thay đổi bảng màu.

^ fCuộn tới một màn hình trong mô-đun hiện tại.

^ bCuộn lùi một màn hình trong mô-đun hiện tại.

TABmô-đun chuyển đổi (chuyển tiếp).

SHIFT + TABChuyển đổi mô-đun (ngược lại).

s Sắp xếp các tùy chọn của mô-đun đang hoạt động.

/ tìm kiếm trong tất cả các mô-đun (hỗ trợ biểu thức chính quy).

nTìm vị trí nơi sự kiện sẽ diễn ra tiếp theo.

gDi chuyển đến tùy chọn đầu tiên hoặc đầu màn hình.

GDi chuyển đến tùy chọn cuối cùng hoặc cuối màn hình.

Nếu bạn muốn xem mười địa chỉ IP được truy cập nhiều nhất, hãy nhấn phím số 5 để mở chi tiết mô-đun. Như được hiển thị bên dưới:

Một số mô-đun tương ứng kỹ thuật số khác như sau:

Nhấn phím 1 để nhắm mục tiêu "Lượt truy cập mỗi ngày"

Nhấn phím 2 để điều hướng đến "URL được yêu cầu nhiều nhất"

Nhấn phím 3 để điều hướng đến "Tệp tĩnh được yêu cầu nhiều nhất"

Nhấn phím 4 để điều hướng đến "404 được yêu cầu nhiều nhất"

Nhấn phím 5 để điều hướng đến "IP người dùng được yêu cầu nhiều nhất"

Nhấn phím 6 để điều hướng đến "Hệ điều hành của người dùng"

Nhấn phím 7 để điều hướng đến "Trình duyệt của người dùng"

Nhấn phím 8 để điều hướng đến Thống kê hàng giờ

Đầu ra GoAccess. Lệnh như sau:

Tạo báo cáo HTML:

# goaccess access.log -a -o report.html

Tạo báo cáo JSON:

# goaccess access.log -a -d -o report.json

Tạo tệp CSV:

# goaccess access.log --no-csv-summary -o report.csv

GGoAccess rất linh hoạt và hỗ trợ phân tích và lọc theo thời gian thực. Ví dụ: bạn cần chẩn đoán nhanh sự cố bằng cách theo dõi nhật ký thời gian thực:

# tail -f access.log | goaccess -

Thậm chí tốt hơn, bạn cũng có thể sử dụng tail -f để làm việc với công cụ khớp mẫu, chẳng hạn như: grep, awk, sed, v.v.

# tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -

Hoặc bạn có thể phân tích cú pháp tệp từ đầu khi mở ống và áp dụng bộ lọc cùng một lúc:

# tail -f -n +0 access.log | grep --line-buffered 'Firefox' | goaccess -o out.html --real-time-html -

Ví dụ:

Xuất GoAccess sang Html và sau đó truy cập nó bằng trình duyệt. Bạn có thể sử dụng lệnh sau:

goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/howsvps.com/wzfou.html

Hiệu quả của việc truy cập nó bằng trình duyệt như sau (bấm vào để phóng to):

Các biểu đồ do GoAccess xuất ra rất đẹp và bạn cũng có thể xem các tùy chọn chi tiết trong biểu đồ. Để biết chi tiết, bạn cũng có thể xem Bản demo trên trang web chính thức: https://rt.goaccess.io/

Xuất GoAccess sang Html và làm mới nó trong thời gian thực Lệnh như sau:

goaccess -d -f /data/wwwlogs/howsvps.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/howsvps.com/wzfou.html --real-time-html --port=9870 --daemonize

Ở trên cho thấy rằng sau khi daemon khởi động GoAccess, nó sử dụng Websocket để thiết lập kết nối dài. Nó lắng nghe cổng 7890 theo mặc định. Bạn có thể chỉ định số cổng thông qua tham số --port.

Sau khi chỉ định số cổng, hãy nhớ mở nó trong tường lửa VPS của bạn:

iptables -A INPUT -p tcp -m tcp --dport 9870 -j ACCEPT

3. Tóm tắt

ngxtop phù hợp với nhu cầu tìm kiếm đơn giản, trong khi GoAccess tập trung vào phân tích tổng thể và thậm chí có thể được sử dụng làm số liệu thống kê. Nếu trang web của bạn sử dụng SSL, khi GoAccess xuất trang HTML để theo dõi thời gian thực, hãy nhớ định cấu hình khóa ssl-certssl- trong tệp cấu hình goaccess.conf mục .

Tất nhiên, chúng ta cũng có thể sử dụng crontab để định kỳ yêu cầu GoAccess tạo các trang HTML thống kê, tương đương với việc giám sát nhật ký máy chủ trực tuyến theo thời gian thực. Mã như sau (tạo trang HtmL cứ sau 5 phút):

*/5 * * * * goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/wzfou.com/wzfou.html

Đối với những người không biết cách đặt định dạng nhật ký GoAccess, bạn có thể sử dụng trực tiếp công cụ chuyển đổi trực tuyến : https://github.com/stockrt/nginx2goaccess. Đặt hàng:

用法: ./nginx2goaccess.sh '<log_format>'

./nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'

Kết quả đầu ra có thể được sử dụng trực tiếp trong cài đặt định dạng nhật ký GoAccess:

- Generated goaccess config:

time-format %T
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u"

Để lại một câu trả lời