Logstash - Đầu ra được hỗ trợ
Logstash cung cấp nhiều Plugin để hỗ trợ các kho dữ liệu hoặc công cụ tìm kiếm khác nhau. Các sự kiện đầu ra của nhật ký có thể được gửi đến tệp đầu ra, đầu ra tiêu chuẩn hoặc công cụ tìm kiếm như Elasticsearch. Có ba loại đầu ra được hỗ trợ trong Logstash, đó là:
- Đầu ra tiêu chuẩn
- Đầu ra tệp
- Đầu ra rỗng
Bây giờ chúng ta hãy thảo luận chi tiết từng điều này.
Đầu ra tiêu chuẩn (stdout)
Nó được sử dụng để tạo các sự kiện nhật ký đã lọc dưới dạng một luồng dữ liệu đến giao diện dòng lệnh. Đây là một ví dụ về việc tạo tổng thời lượng của một giao dịch cơ sở dữ liệu thành stdout.
logstash.conf
Tệp cấu hình này chứa một plugin đầu ra stdout để ghi tổng sql_duration vào đầu ra tiêu chuẩn.
input {
file {
path => "C:/tpwork/logstash/bin/log/input.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid}
- %{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
if [logger] == "TRANSACTION_END" {
stdout {
codec => line{format => "%{sql_duration}"}
}
}
}
Note - Vui lòng cài đặt bộ lọc tổng hợp, nếu chưa được cài đặt.
>logstash-plugin install Logstash-filter-aggregate
Chạy Logstash
Chúng ta có thể chạy Logstash bằng cách sử dụng lệnh sau.
>logstash –f logsatsh.conf
Input.log
Khối mã sau đây hiển thị dữ liệu nhật ký đầu vào.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
stdout (nó sẽ là dấu nhắc lệnh trong cửa sổ hoặc thiết bị đầu cuối trong UNIX)
Đây là tổng sql_duration 320 + 200 = 520.
520
Đầu ra tệp
Logstash cũng có thể lưu trữ các sự kiện nhật ký bộ lọc vào một tệp đầu ra. Chúng tôi sẽ sử dụng ví dụ được đề cập ở trên và lưu trữ đầu ra trong một tệp thay vì STDOUT.
logstash.conf
Tệp cấu hình Logstash này hướng Logstash lưu trữ tổng sql_duration vào tệp nhật ký đầu ra.
input {
file {
path => "C:/tpwork/logstash/bin/log/input1.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
%{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?"
]
}
if [logger] == "TRANSACTION_START" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] = 0"
map_action => "create"
}
}
if [logger] == "SQL" {
aggregate {
task_id => "%{taskid}"
code => "map['sql_duration'] ||= 0 ;
map['sql_duration'] += event.get('duration')"
}
}
if [logger] == "TRANSACTION_END" {
aggregate {
task_id => "%{taskid}"
code => "event.set('sql_duration', map['sql_duration'])"
end_of_task => true
timeout => 120
}
}
}
output {
if [logger] == "TRANSACTION_END" {
file {
path => "C:/tpwork/logstash/bin/log/output.log"
codec => line{format => "%{sql_duration}"}
}
}
}
Chạy logstash
Chúng ta có thể chạy Logstash bằng cách sử dụng lệnh sau.
>logstash –f logsatsh.conf
input.log
Khối mã sau đây hiển thị dữ liệu nhật ký đầu vào.
INFO - 48566 - TRANSACTION_START - start
INFO - 48566 - SQL - transaction1 - 320
INFO - 48566 - SQL - transaction1 - 200
INFO - 48566 - TRANSACTION_END – end
output.log
Khối mã sau đây hiển thị dữ liệu nhật ký đầu ra.
520
Đầu ra rỗng
Đây là một plugin đầu ra đặc biệt, được sử dụng để phân tích hiệu suất của các Plugin đầu vào và bộ lọc.