2015-08-20 16 views
7

Tôi đang làm việc trên một giải pháp cho tập hợp tệp nhật ký tập trung từ các máy chủ Centxs 6.x của chúng tôi. Sau khi cài đặt Elasticsearch/Logstash/Kibana (ELK) stack Tôi đã xem qua một plugin omelasticsearch Rsyslog có thể gửi tin nhắn từ Rsyslog đến Elasticsearch ở định dạng logstash và bắt đầu tự hỏi tại sao tôi cần Logstash.Logstash vs Rsyslog để tập hợp tệp nhật ký

Logstash có rất nhiều trình cắm đầu vào khác nhau bao gồm cả plugin chấp nhận thông báo Rsyslog. Có một lý do tại sao tôi sẽ sử dụng Logstash cho trường hợp sử dụng của tôi, nơi tôi cần phải thu thập nội dung của các tệp nhật ký từ nhiều máy chủ? Ngoài ra, có một lợi ích của việc gửi tin nhắn từ Rsyslog đến Logstash thay vì gửi chúng trực tiếp đến Elasticsearch?

Trả lời

3

Tôi sẽ sử dụng Logstash ở giữa nếu có điều gì đó tôi cần từ đó rsyslog không có. Ví dụ, nhận GeoIP từ một địa chỉ IP.

Nếu, mặt khác, tôi sẽ cần nhận được nhật ký syslog hoặc nội dung tệp được lập chỉ mục trong Elasticsearch, tôi sẽ sử dụng rsyslog trực tiếp. Nó có thể làm đệm (disk + memory), lọc, bạn có thể chọn như thế nào tài liệu sẽ như thế nào (bạn có thể đặt mức độ nghiêm trọng văn bản thay vì số, ví dụ), và nó có thể phân tích cú pháp dữ liệu phi cấu trúc. Nhưng lợi thế chính là hiệu suất, mà rsyslog tập trung vào.Dưới đây là bản trình bày với một số con số (và mẹo và thủ thuật) về Logstash, rsyslog và Elasticsearch: http://blog.sematext.com/2015/05/18/tuning-elasticsearch-indexing-pipeline-for-logs/

2

Nếu bạn đi thẳng từ máy chủ đến elasticsearch, bạn có thể lấy các tài liệu cơ bản trong (giả sử nguồn là json, v.v.). Đối với tôi, sức mạnh của logstash là thêm giá trị vào nhật ký bằng cách áp dụng logic nghiệp vụ để sửa đổi và mở rộng nhật ký.

Dưới đây là một ví dụ: syslog cung cấp mức độ ưu tiên (0-7). Tôi không muốn có một biểu đồ hình tròn nơi các giá trị là 0-7, vì vậy tôi tạo một trường mới chứa các tên đẹp ("xuất hiện", "gỡ lỗi", v.v.) có thể được sử dụng để hiển thị.

Chỉ một ví dụ ...

+0

Sau khi tìm hiểu cách hoạt động của rsyslog, tôi có thể nói rằng logic kinh doanh có thể được triển khai dễ dàng trong cấu hình rsyslog. Đối với ví dụ cụ thể của bạn, bạn có thể sử dụng thuộc tính rsyslog syslogseverity-text thay vì syslogseverity. – alecswan

2

Tôi muốn giới thiệu logstash. Điều đó sẽ dễ thiết lập hơn, nhiều ví dụ hơn và chúng được thử nghiệm để vừa với nhau.

Ngoài ra, có một số lợi ích, trong việc đăng xuất, bạn có thể lọc và sửa đổi nhật ký của mình.

  1. Bạn có thể mở rộng các bản ghi với dữ liệu hữu ích: tên máy chủ, dấu thời gian, ...
  2. loại Cast, chuỗi int, vv (hữu ích cho đúng chỉ số đàn hồi)
  3. Lọc ra các bản ghi bởi một số quy tắc

Hơn nữa, bạn có thể thiết lập kích thước lô để tối ưu hóa lưu thành độ co giãn. Một tính năng khác, nếu xảy ra sự cố và có số lượng nhật ký điên mỗi giây mà đàn hồi không thể xử lý, bạn có thể thiết lập nhật ký để lưu một số sự kiện hoặc sự kiện không thể lưu được.

+2

Cảm ơn! Rsyslog có thể làm # 1 - [bài viết này] (http://www.rsyslog.com/output-to-elasticsearch-in-logstash-format-kibana-friendly) cho biết cách báo cáo tên máy chủ và dấu thời gian. Nó cũng có thể làm # 3 - [trang này] (http://www.rsyslog.com/doc/v8-stable/configuration/basic_structure.html#rulesets-and-rules) cho thấy cách cấu hình các quy tắc. Tôi không nghĩ rằng tôi có một trường hợp sử dụng cho # 2 - loại đúc. Chúng tôi không có số lượng log khổng lồ mỗi giây. Vì vậy, tôi đang cố gắng để đánh giá thương mại tắt của cài đặt và quản lý một khách hàng thêm (logstash) trên máy ảo của tôi và lợi ích tôi nhận được từ nó. Suy nghĩ? Liên kết? Cảm ơn một lần nữa! – alecswan

+0

Vâng, điều đó thật thú vị, có vẻ như rsyslog có thể xử lý việc đệm cũng như mở rộng/lọc. Có lẽ đó là một cách tốt để đi và có vẻ như rsyslog + elastic có thể đi cùng nhau tốt. Nếu rsyslog hoạt động tốt, hãy thử. Logstash đòi hỏi khá nhiều bộ nhớ ram và có một số vấn đề với logstash, nó không hoàn hảo. –

2

Không phải là tùy chọn khả thi nếu bạn thực sự muốn dựa vào hệ thống để hoạt động dưới tải và có sẵn cao.

Chúng tôi thấy rằng sử dụng rsyslog để gửi đến một vị trí tập trung, lưu trữ nó bằng redis của kafka và sau đó sử dụng logstash để làm phép thuật của nó và gửi đến Elasticsearch là lựa chọn tốt nhất.

Đọc blog của chúng tôi về nó here - http://logz.io/blog/deploy-elk-production/

(Disclaimer - Ta là sản phẩm VP cho logz.io và chúng tôi cung ELK như một dịch vụ)

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