2010-10-28 47 views
8

Khắc phục sự cố, phân tích & các tệp nhật ký lọc là một trong những công việc hàng ngày mất thời gian nhất. Vấn đề của tôi là tìm kiếm thông qua một tệp nhật ký, có thể lớn hơn 4 hợp đồng biểu diễn. Đơn giản chỉ cần tải tập tin mất đến 15 phút. Tôi đang chạy một bộ xử lý khá nhanh với 8 hợp đồng biểu diễn bộ nhớ. Sau khi tải tập tin, tôi nghĩa đen chỉ có sự sang trọng của grep và/hoặc kiểm soát + F để quét qua các tập tin. Điều này trở nên tồi tệ hơn khi tôi đang cố gắng tìm kiếm các tệp từ nhiều hệ thống, mỗi cái có trọng lượng hơn một biểu diễn. Đã cố gắng tách biệt các tập tin dựa trên tem thời gian để làm cho chúng nhỏ hơn, nhưng không có niềm vui thực sự.Tìm kiếm các tệp nhật ký lớn

Có một công cụ hoặc thậm chí một quy trình mà tôi có thể sử dụng để khắc phục sự cố mất thời gian hơn (ngoài cách thông thường "chỉ sửa lỗi trước")?

Nhận xét của bạn được đánh giá cao.

+2

Hãy xem tại đây http://www.baremetalsoft.com/index.php –

+0

Bạn đang chạy nền tảng nào? – BobbyShaftoe

+1

Tại sao nhật ký quá lớn: có phải vì thực sự có rất nhiều giao dịch/sự kiện đang diễn ra hoặc là mức chi tiết không cần thiết đang được ghi lại? Ứng dụng có hỗ trợ điều chỉnh độ dài và/hoặc chỉ đạo dữ liệu nhật ký từ các thành phần khác nhau đến các tệp nhật ký khác nhau không? –

Trả lời

9

Bạn đang tải nó bằng cái gì? 4 hợp đồng biểu diễn là một tệp khá lớn, nhưng điều đó sẽ không mất nhiều thời gian để tải vào bộ nhớ.

Đối với các tệp lớn, tôi khuyên bạn nên sử dụng grep trực tiếp và nếu grep không làm việc đó cho bạn, SED và AWK là bạn của bạn. Nếu bạn muốn làm điều đó trong thời gian thực, hãy tìm hiểu về cách sử dụng những công cụ này cùng với các đường ống và tail -f.

Vâng, tôi biết, SED rất đáng sợ lúc đầu. Nó cũng cực kỳ mạnh mẽ. Học nó.

Nếu bạn đang ở trên cửa sổ, bạn có sự thông cảm của tôi. Tôi có thể giới thiệu một vỏ unix?

Nếu bạn sợ các công cụ dòng lệnh, hãy xem xét việc học Perl hoặc Python. Cả hai đều khá giỏi trong việc phân loại tín hiệu từ tiếng ồn trong các tệp lớn như thế này.

+1

tôi sẽ làm điều đó. hãy học AWK & SED. sau đó bạn có thể viết một vài kịch bản và cuộc sống sẽ rất đơn giản! :-) – zerodin

+0

xin lỗi bạn đời! bỏ lỡ điều đó. upvote nó là dành cho ya! – zerodin

1

Baretail là một công cụ tốt để có. Hãy thử một lần. Tôi đã không sử dụng nó cho 4 hợp đồng biểu diễn tập tin nhưng các tập tin đăng nhập của tôi cũng khá lớn và nó hoạt động tốt. http://www.baremetalsoft.com/baretail/index.php

chỉnh sửa: Tôi không thấy người nào đó đã đề xuất thanh chắn.

1

Nếu bạn muốn loại trừ các dòng mà bạn không muốn thấy, bạn có thể grep -v 'I dont wanna see this' > logWithExcludedLines.log. Bạn cũng có thể sử dụng regex grep -vE 'asdf|fdsa' > logWithNoASDForFDSA.log

Phương pháp này hoạt động rất tốt với nhật ký truy cập apache grep -v 'HTTP/1.1 200' > no200s.log (hoặc giống như vậy, không nhớ chuỗi chính xác).

0

Tôi hiện đang làm những việc như vậy bằng cách sử dụng các công cụ dòng lệnh unix (f) grep, awk, cut, join, v.v., cũng có sẵn cho các cửa sổ có cygwin hoặc UnxUtils và vv. những thứ phức tạp hơn. Bạn có thể viết kịch bản để thực hiện các tìm kiếm mở rộng các mục nhập nhật ký trong một số tệp. Nhưng tôi cũng là wondering if there is something better than that - có thể là importing them into a database (cả hai câu hỏi SO)?

Nhân tiện: hãy thay ổ cứng của bạn bằng ổ SSD. Đây là cách cách nhanh hơn! Ngoài ra, nó trả tiền cho tôi để lại các bản ghi gzip-nén trên đĩa, kể từ khi tìm kiếm chúng đĩa là nút cổ chai. Nếu bạn đang tìm kiếm, chẳng hạn, một biểu hiện thường xuyên trong các log và muốn có 100 dòng bối cảnh cho mỗi lần xuất hiện, bạn sẽ làm:

zcat *.log.gz | grep -100 '{regexp}' > {outputfile} 

và tải các outputfile vào thiết bị xem textfile yêu thích của bạn.Nếu bạn đang tìm kiếm các chuỗi cố định, hãy sử dụng fgrep (giống như grep với tùy chọn bổ sung -F) - nhanh hơn nhiều.

Các vấn đề liên quan