1. Logstash là gì?

Logstash là 1 trong engine mã mối cung cấp mở cho phép thu thập dữ liệu theo thời gian thực. Logstash vào vai trò "data shipper" - trạm trung gửi của dữ liệu.

Trong ELK stack, Logstash được kết phù hợp với Elasticsearch với Kibana:

*

Để setup Logstash chúng ta thực hiện tại như sau:

Bước 1: tải về và bung file Logstash từ https://www.elastic.co/downloads/logstash.

Bạn đang xem: Logstash là gì

Bước 2: sẵn sàng một file logstash.conf (các chúng ta cũng có thể đặt tên khác) để trong folder của Logstash.

Ví dụ:

input stdin output elasticsearch hosts => <"localhost:9200"> stdout codec => rubydebug Các chúng ta có thể đọc thêm về tệp tin logstash.conf tại đây.

Bước 3: Chạy lệnh bin/logstash -f logstash.conf để khởi đụng Logstash.

Logstash API mặc định chạy làm việc cổng 9600.

Đây là đầu ra sau khỉ khởi hễ Logstash:

Pipeline gồm tất cả 3 stage (giai đoạn): input đầu vào → filter → output.

Input: vào stage này, dữ liệu từ những source sẽ tiến hành Logstash gửi thành những event. Từng một input stage vẫn chạy phía bên trong thread riêng rẽ của mình, với ghi các sự kiện vào trong một queue trung trung tâm nằm trong bộ lưu trữ (mặc định) hoặc ổ cứng. Vào queue này, các event sẽ được gói gọn thành các batch.Filter: trong stage này, những worker thread đã lấy những batch thoát khỏi queue. Sau đó tùy theo filter mà chỉnh sửa nội dung của những event.Output: vào stage này, các worker thread sẽ chuyển các event tới những destination.

Input và output còn cung cấp codec có thể chấp nhận được encode với decode dữ liệu mà không cần thiết phải thông qua filter. Trong một pipeline, chúng ta cũng có thể sử dụng một hoặc kết hợp nhiều input/filter/output/codec.

Ví dụ: trong một khối hệ thống Microservice, bọn họ sẽ sử dụng Logstash để tích lũy log từ những service (input), kế tiếp thống duy nhất thành 1 chuẩn chỉnh (filter) với chuyển đến Elasticsearch để tập trung và so sánh log (output).

Có một để ý là, giả dụ các sự kiện được lưu bên trong bộ lưu giữ thì khi Logstash bị dừng một cách chợt ngột, các event sẽ biến mất. Để tránh chạm chán phải triệu chứng này, chúng ta có thể chuyển sang lưu sự kiện trong ổ cứng. Các bạn có thể tham khảo thêm tại đây.

3. Plugin

Trong từng stage của pipeline, bọn họ sẽ tích hòa hợp một hoặc các plugin. Plugin hoàn toàn có thể hiểu là những tiện ích mà lại Logstash cung cấp để bọn họ thu thập và giải pháp xử lý dữ liệu dễ ợt và linh động hơn.

Mỗi plugin lại có không ít setting nhằm cấu hình. Setting cũng có name và value.

Ví dụ: chúng ta thường thực hiện plugin tệp tin trong input đầu vào stage để thu thập dữ liệu từ tệp tin log.

input file path => "/path/to/20190914.log" start_position => beginning ignore_older => 0 Trong plugin file, chúng ta đã cấu hình 3 setting là path, start_position với ignore_order.

4. Event

Trong phần trước bọn họ đã nhắc đến event. Vậy thực chất event là gì?

Event là một đối tượng người sử dụng chính vào Logstash, được dùng để làm đóng gói dữ liệu. Event bao hàm dữ liệu cội được gửi tới Logstash + các dữ liệu khác vày Logstash tạo ra trong filter stage.

Ví dụ: lúc Logstash phát âm một file log, mỗi dòng trong tệp tin log sẽ được đóng gói thành một event.

{ "

5. Event field

Mỗi một event bao hàm nhiều field. Field gồm name và value. Như nghỉ ngơi ví dụ phần trước, bọn họ có các field là: path, message,
timestamp và host.

5.1. Field reference

Cú pháp cơ phiên bản để truy vấn một field là .

Để tham chiếu tới một nested field, họ chỉ định full path trỏ cho tới field đó: .

Ví dụ:

Với event:

"agent": "Mozilla/5.0 (compatible; MSIE 9.0)", "ip": "192.168.24.44", "request": "/index.html" "response": "status": 200, "bytes": 52353 , "ua": "os": "Windows 7" Để truy cập field os, chúng ta sử dụng .

5.2. Sprintf format

Sprintf format là tính năng có thể chấp nhận được truyền field reference vào trong string.

Cú pháp 1: %field name

Cú pháp 2: dành riêng cho nested field: %

5.3. Conditional

if EXPRESSION ... Else if EXPRESSION ... Else ...EXPRESSION nghỉ ngơi đây có thể là một phép so sánh hoặc logic, ...

Các toán tử hoàn toàn có thể sử dụng là:

equality: ==, !=, , >, , >=regexp: =~, !~inclusion: in, not inboolean: and, or, nand, xorunary: !

Ví dụ:

output # Send production errors khổng lồ pagerduty if == "ERROR" & == "production" pagerduty ... Chú ý: field reference, sprintf format cùng conditional tiếp sau đây không thể thực hiện trong input.

5.4.
metadata field

Kể trường đoản cú phiên bản Logstash 1.5 về bên sau, trong mỗi sự kiện có một field sệt biệt có tên là
metadata xuất hiện trong event).

Ví dụ:

input stdin filter { mutate add_field => "show" => "This data will be in the output" mutate { add_field => "<
metadata> stdout codec => rubydebug Nhập dòng text chạy thử log, họ sẽ thấy console output như sau:

test log "
metadata> stdout codec => rubydebug metadata => true Console output lúc này:

test log "
metadata" => "no_show" => "This data will not be in the output" , "show" => "This data will be in the output", "host" => "example", "
version" => "1", "message" => "test log"

6. Những kiểu dữ liệu của field/setting value

Dưới phía trên mình vẫn liệt kê một số kiểu tài liệu thường gặp mặt của field/setting value:

6.1. String

start_position => "beginning"6.2. NumberBao bao gồm cả số integer và floating point.

Xem thêm: 2 Bước Quy Đồng Mẫu Số Lớp 5 Và Cách Giải, Quy Đồng Mẫu Số Các Phân Số Lớp 5 Và Cách Giải

port => 336.3. Booleanssl_enable => true6.4. CodecDanh sách codec: https://www.elastic.co/guide/en/logstash/current/codec-plugins.html

codec => "json"6.5. Arrayids => <1, 2>names => <"bob", "jane">users => 1, name => bob, id => 2, name => jane>6.6. HashHash là 1 trong tập những cặp key-value có định dạng là "field" => "value". Bắt buộc chú ý, những cặp key-value này không ngăn cách nhau bởi vì dấu phẩy.

match => "field1" => "value1" "field2" => "value2" ...6.7. URImy_uri => "http://foo:bar