Logstash - Giai đoạn đầu ra
Đầu ra là giai đoạn cuối cùng trong đường ống Logstash, gửi dữ liệu bộ lọc từ các bản ghi đầu vào đến một điểm đến được chỉ định. Logstash cung cấp nhiều plugin đầu ra để lưu trữ các sự kiện nhật ký đã lọc vào nhiều công cụ lưu trữ và tìm kiếm khác nhau.
Lưu trữ Nhật ký
Logstash có thể lưu trữ các nhật ký đã lọc trong một File, Elasticsearch Engine, stdout, AWS CloudWatch, vv Các giao thức mạng như TCP, UDP, Websocket cũng có thể được sử dụng trong Logstash để chuyển các sự kiện nhật ký đến hệ thống lưu trữ từ xa.
Trong ngăn xếp ELK, người dùng sử dụng công cụ Elasticsearch để lưu trữ các sự kiện nhật ký. Ở đây, trong ví dụ sau, chúng tôi sẽ tạo các sự kiện nhật ký cho một công cụ Elasticsearch cục bộ.
Cài đặt Plugin đầu ra Elasticsearch
Chúng ta có thể cài đặt plugin đầu ra Elasticsearch bằng lệnh sau.
>logstash-plugin install Logstash-output-elasticsearch
logstash.conf
Tệp cấu hình này chứa một plugin Elasticsearch, plugin này lưu trữ sự kiện đầu ra trong Elasticsearch được cài đặt cục bộ.
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
}
}
mutate {
add_field => {"user" => "tutorialspoint.com"}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
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
Bắt đầu Elasticsearch tại Localhost
Để khởi động Elasticsearch tại localhost, bạn nên sử dụng lệnh sau.
C:\elasticsearch\bin> elasticsearch
Khi Elasticsearch đã sẵn sàng, bạn có thể kiểm tra bằng cách nhập URL sau vào trình duyệt của mình.
http://localhost:9200/
Phản ứng
Khối mã sau hiển thị phản hồi của Elasticsearch tại localhost.
{
"name" : "Doctor Dorcas",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.1.1",
"build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
"build_timestamp" : "2015-12-15T13:05:55Z",
"build_snapshot" : false,
"lucene_version" : "5.3.1"
},
"tagline" : "You Know, for Search"
}
Note - Để biết thêm thông tin về Elasticsearch, bạn có thể nhấp vào liên kết sau.
https://www.tutorialspoint.com/elasticsearch/index.html
Bây giờ, hãy chạy Logstash với Logstash.conf đã đề cập ở trên
>Logstash –f Logstash.conf
Sau khi dán văn bản nói trên vào nhật ký xuất, văn bản đó sẽ được Logstash lưu trữ trong Elasticsearch. Bạn có thể kiểm tra dữ liệu được lưu trữ bằng cách nhập URL sau vào trình duyệt.
http://localhost:9200/logstash-2017.01.01/_search?pretty
Phản ứng
Đây là dữ liệu ở định dạng JSON được lưu trữ trong chỉ mục Logstash-2017.01.01.
{
"took" : 20,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 10,
"max_score" : 1.0,
"hits" : [ {
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOs",
"_score" : 1.0,
"_source":{
"duration":200,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.140Z","loglevel":"INFO",
"logger":"SQL","@version":"1","host":"wcnlab-PC",
"label":"transaction1",
"message":" INFO - 48566 - SQL - transaction1 - 200\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
},
{
"_index" : "logstash-2017.01.01",
"_type" : "logs",
"_id" : "AVlZ9vF8hshdrGm02KOt",
"_score" : 1.0,
"_source":{
"sql_duration":520,"path":"C:/tpwork/logstash/bin/log/input.log",
"@timestamp":"2017-01-01T12:17:49.145Z","loglevel":"INFO",
"logger":"TRANSACTION_END","@version":"1","host":"wcnlab-PC",
"label":"end",
"message":" INFO - 48566 - TRANSACTION_END - end\r",
"user":"tutorialspoint.com","taskid":"48566","tags":[]
}
}
}
}