2013-12-17 17 views
12

Tìm kiếm một chút trợ giúp để bắt đầu ... Tôi đã cài đặt Logstash (cũng như ElasticSearch) nhưng tôi đang vật lộn với bộ lọc đầu tiên của mình. Khi thử nghiệm, tôi đã định cấu hình để đọc từ tệp nhật ký được cắt nhỏ chứa 6 dòng, mỗi dòng bắt đầu bằng dấu thời gian như [11/5/13 4: 09: 21: 327 PST] đã theo dõi bởi một loạt các dữ liệu khác.Bắt đầu với bộ lọc logstash

Hiện tại tôi có tập tin conf để đọc tệp này và tôi đang cố gắng lọc bộ lọc rất cơ bản để khớp với các dòng, có thể lấy dấu thời gian và phần còn lại của dữ liệu (từ nơi tôi có thể bắt đầu tách nó ra).

Dưới đây là những gì tôi có:

input { 
    file { 
    type => "chris" 
    path => "/home/chris/Documents/test.log" 
    } 
} 
filter { 
    grok { 
    type => "chris" 
    pattern => "%{GREEDYDATA:logline}" 
    } 
} 
output { 
    stdout {debug => true debug_format => "json"} 
} 

tôi đã loại mong đợi (hy vọng) rằng khi tôi chạy Logstash nó sẽ phù hợp với từng dòng và đầu ra nó, sau đó tôi có thể bắt đầu phá vỡ các đường xuống và lọc điều chỉnh của tôi mô hình nhưng khi tôi không thể có được bit cơ bản đầu tiên này để làm việc tôi là một chút bối rối.

Có ai có tệp conf tương tự mà họ có thể chia sẻ không? Hầu hết các ví dụ tôi có thể tìm thấy là tiên tiến hơn và tôi dường như bị mắc kẹt cố gắng để có được ra khỏi cổng.

Xin cảm ơn,

Chris.

+0

Bạn đang chạy phiên bản Logstash nào? [Grok] (http://logstash.net/docs/1.3.1/filters/grok) chưa có thông số "mẫu" kể từ 1.2 trở lên. – rutter

Trả lời

12

Bắt đầu xóa nội dung của bộ lọc.

Các tài liệu cho phiên bản hiện tại (1.3.2) của logstash Plugin lọc grok đang ở đây http://logstash.net/docs/1.3.2/filters/grok

Đảm bảo bạn đang nhìn vào phiên bản đúng của các tài liệu cho các phiên bản của logstash bạn đã tải về.

Một ví dụ grok lọc sẽ là:

filter { 
    grok { 
    match => [ "message", "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" ] 
    } 
} 

Nhưng điều này dường như không phù hợp với dữ liệu của bạn.

"tin nhắn" là trường mặc định toàn bộ nhật ký của bạn kết thúc bằng do đó có thể là lựa chọn tốt cho bạn.

Phần tiếp theo tạo 5 trường mới, máy khách, phương thức, yêu cầu, byte và thời lượng bằng cách đọc nhật ký và các phần khớp với mẫu Grok được xác định trước, chẳng hạn như IP, WORD, v.v.

Bắt đầu với

filter { 
    grok { 
    match => [ "message", "%{GREEDYDATA:logline}" ] 
    } 
} 

nào sẽ thực sự chỉ lặp lại trong các lĩnh vực tin nhắn vào một lĩnh vực logline riêng biệt, nhưng là nơi nào đó để bắt đầu. Khi bạn thêm nhiều mẫu Grok vào bộ lọc, trường logline sẽ chỉ chứa bất kỳ thứ gì không bị grokked.

Bạn có thể kiểm tra grok mẫu của bạn ở đây http://grokdebug.herokuapp.com/

Bạn có thể sẽ muốn sử dụng bộ lọc grok grok ra dấu thời gian vào lĩnh vực riêng của nó và sau đó sử dụng bộ lọc ngày để thực sự sử dụng như là các bản ghi dấu thời gian .

filter { 
    grok { 
    match => [ "message", "%{TIMESTAMP_ISO8601:syslog_timestamp} %{GREEDYDATA:syslog5424_msg}" ] 
    } 
    date { 
    match => [ "syslog_timestamp", "ISO8601" ] 
    } 
} 

TIMESTAMP_ISO8601 phù hợp với timestamps trong một định dạng rất verbose (http://grokdebug.herokuapp.com/patterns#), điều này có thể không làm việc cho bạn.

ISO8601 có định dạng tương tự được xác định trước cho bộ lọc ngày, bạn có thể cần phải chỉ định định dạng ngày của bạn theo cách thủ công tại đây thay thế. Xem tài liệu: http://logstash.net/docs/1.3.2/filters/date