Các công cụ dòng lệnh để phân tích các tệp nhật ký Apache [đã đóng]


16

Tôi có một loạt các tệp nhật ký Apache mà tôi muốn phân tích. Tôi đang tìm kiếm một công cụ không yêu cầu thiết lập nhiều; một cái gì đó mà tôi có thể chạy một bản ghi thông qua dòng lệnh, mà không làm hỏng trên các máy chủ web trực tiếp của chúng tôi.

Có khuyến nghị nào không?


Và hệ điều hành bạn sẽ sử dụng là ...
Izzy

Linux hoặc MacOSX ...
mmattax

1
"Phân tích" không nói nhiều. Bạn đang cố làm gì vậy? Tìm kiếm một chuỗi, số giòn?
David

goaccess.prosoftcorp.com miễn phí và tuyệt vời, đã tìm thấy nó ở đây: webmasters.stackexchange.com/questions/4852/
mẹo

Câu trả lời:


7

Trong khi các công cụ trên đều tuyệt vời, tôi nghĩ tôi biết những gì người hỏi đang hỏi. Tôi thường đau đớn rằng tôi không thể lấy thông tin ra khỏi nhật ký truy cập theo cách tôi có thể với các tệp khác.

Đó là do định dạng nhật ký truy cập ngu ngốc:

127.0.0.1 - - [16/Aug/2014:20:47:29 +0100] "GET /manual/elisp/index.html HTTP/1.1" 200 37230 "http://testlocalhost/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0"

Tại sao họ sử dụng [] cho ngày và "" cho những thứ khác? họ có nghĩ rằng chúng ta sẽ không biết một ngày ở trường 4 không? Thật là bực bội vô cùng.

Công cụ tốt nhất hiện nay cho việc này là gawk:

gawk 'BEGIN { FPAT="([^ ]+)|(\"[^\"]+\")|(\\[[^\\]]+\\])" } { print $5 }'

trên dữ liệu trên đây sẽ cung cấp cho bạn:

"GET /manual/elisp/index.html HTTP/1.1"

Nói cách khác, FPAT cung cấp cho bạn khả năng lấy ra các trường của nhật ký apache như thể chúng là các trường thực tế thay vì chỉ các thực thể được phân tách bằng dấu cách. Đây luôn là những gì tôi muốn. Sau đó tôi có thể phân tích thêm một chút với một đường ống.

Làm cho công việc FSPAT được xác định tại đây: http://www.gnu.org/software/gawk/manual/html_node/Splmit-By-Content.html

Do đó, bạn có thể thiết lập một bí danh để tạo ra một chú chim ưng có thể phân tích nhật ký apache:

alias apacheawk="gawk -vFPAT='([^ ]+)|(\"[^\"]+\")|(\\\\[[^\\\\]]+\\\\])' " apacheawk '$6 ~ /200/ { print $5 } | sort | uniq

làm điều này cho tôi:

"GET / HTTP/1.1"
"GET /manual/elisp/index.html HTTP/1.1"
"GET /manual/elisp/Index.html HTTP/1.1"
"GET /scripts/app.js HTTP/1.1"
"GET /style.css HTTP/1.1"

và tất nhiên gần như mọi thứ khác đều có thể.

Thưởng thức!


1
2 nhận xét: Ngày không thực sự ở trường 4 nhưng trong trường 4 + 5 ^^ (không có sự thay đổi từ GMT, ngày có ít giá trị). Và access_log có hầu hết các dạng 12 trường (thực ra, có thể có hơn 12 trường, vì thứ 12 là tác nhân http, có thể chứa nhiều khoảng trắng trong tên của nó .. 11 trường đầu tiên rất dễ phân tích, và trường thứ 12 (và có thể nhiều hơn) còn lại phải là tác nhân http). Vì vậy, bạn có thể chỉ: awk '($9 == 200) {print $6,$7,$8}'hiển thị điều tương tự như trong ví dụ của bạn. Không cần sử dụng FPAT ở đó (mặc dù phương pháp này có thể hữu ích trong các trường hợp khác)
Olivier Dulac

Tôi nghĩ rằng bạn đang chỉ trích quá mức. Ngày nằm trong trường 4 nếu bạn cho rằng trường bị giới hạn bởi []. Hầu hết thời gian một tệp nhật ký nằm trong một múi giờ, vì vậy vùng này không cần thiết. Điểm thể hiện ví dụ không phải là chỉ ra rằng một cái gì đó hoàn toàn có thể theo cách này, mà là để hiển thị mánh khóe chung.
Ferrier nic

1
Tôi rất ngạc nhiên ... Tôi hoàn toàn không "chỉ trích", chỉ đưa ra 2 nhận xét (và nói rằng thực sự phương pháp bạn sử dụng có thể hữu ích trong các trường hợp khác, nhưng ở đây không cần thiết) ...
Olivier Dulac

6

wtop là mát mẻ. Có những tiện ích khác nữa. Thông thường, tôi sẽ phân tích các bản ghi bằng cách sử dụng bash, sed và awk.


wtop, và đặc biệt là logrep phân tích nhật ký của họ rất tuyệt, khi bạn điều chỉnh .conf theo định dạng nhật ký của mình, nó sẽ cung cấp một cách nhanh chóng để có được những gì bạn cần (url trên cùng, lưu lượng truy cập, v.v.)
quả vào


1

Bạn muốn loại đầu ra nào?

Nếu bạn là bạn chỉ muốn đếm mọi thứ thì grep một cái gì đó logfile.txt | wc -l hoạt động tuyệt vời. Nếu bạn muốn đồ thị đẹp ... không quá nhiều.


Đối với các cửa sổ, lệnh find bắt chước grep ở một mức độ nào đó.
Chris Nava

0

Nếu bạn có một máy trạm windows mà bạn có thể sử dụng thì logparser là công cụ được lựa chọn!


0

analog hoạt động tốt và không đòi hỏi nhiều thiết lập. logwrangler là một gói hoạt động với analog để tạo đầu ra đẹp hơn và cũng yêu cầu thiết lập ít.


0

Thay vì sử dụng một công cụ dòng lệnh, tôi sẽ cố gắng thử Trình xem nhật ký của Apache. Đây là một công cụ miễn phí có thể theo dõi và phân tích Tệp nhật ký Apache. Nó có thể tạo ra một số biểu đồ và báo cáo khá thú vị khi đang bay.

Thêm thông tin từ http://www.apacheviewer.com

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.