Logstash入門簡介
介紹
Logstash是一個開源的服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到最喜歡的存儲庫中(我們的存儲庫當然是ElasticSearch)
我們回到我們ElasticStack的架構圖,可以看到Logstash是充當數據處理的需求的,當我們的數據需要處理的時候,會將它發送到Logstash進行處理,否則直接送到ElasticSearch中
用途
Logstash可以處理各種各樣的輸入,從文檔,圖表中=,數據庫中,然後處理完後,發送到
部署安裝
Logstash主要是將數據源的數據進行一行一行的處理,同時還直接過濾切割等功能。
首先到官網下載logstash:https://www.elastic.co/cn/downloads/logstash
選擇我們需要下載的版本:
下載完成後,使用xftp工具,將其丟入到服務器中
#檢查jdk環境,要求jdk1.8+
java -version
#解壓安裝包
tar -xvf logstash-7.9.1.tar.gz
#第一個logstash示例
bin/logstash -e 'input { stdin { } } output { stdout {} }'
其實原來的logstash的作用,就是爲了做數據的採集,但是因爲logstash的速度比較慢,所以後面使用beats來代替了Logstash,當我們使用上面的命令進行啓動的時候,就可以發現了,因爲logstash使用java寫的,首先需要啓動虛擬機,最後下圖就是啓動完成的截圖
測試
我們在控制檯輸入 hello,馬上就能看到它的輸出信息
配置詳解
Logstash的配置有三部分,如下所示
input { #輸入
stdin { ... } #標準輸入
}
filter { #過濾,對數據進行分割、截取等處理
...
}
output { #輸出
stdout { ... } #標準輸出
}
輸入
- 採集各種樣式、大小和來源的數據,數據往往以各種各樣的形式,或分散或集中地存在於很多系統中。
- Logstash 支持各種輸入選擇 ,可以在同一時間從衆多常用來源捕捉事件。能夠以連續的流式傳輸方式,輕鬆地從您的日誌、指標、Web 應用、數據存儲以及各種 AWS 服務採集數據。
過濾
- 實時解析和轉換數據
- 數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕鬆、更快速地分析和實現商業價值。
輸出
Logstash 提供衆多輸出選擇,您可以將數據發送到您要指定的地方,並且能夠靈活地解鎖衆多下游用例。
讀取自定義日誌
前面我們通過Filebeat讀取了nginx的日誌,如果是自定義結構的日誌,就需要讀取處理後才能使用,所以,這個時候就需要使用Logstash了,因爲Logstash有着強大的處理能力,可以應對各種各樣的場景。
日誌結構
2019-03-15 21:21:21|ERROR|1 讀取數據出錯|參數:id=1002
可以看到,日誌中的內容是使用“|”進行分割的,使用,我們在處理的時候,也需要對數據做分割處理。
編寫配置文件
vim mogublog-pipeline.conf
然後添加如下內容
input {
file {
path => "/soft/beats/logs/app.log"
start_position => "beginning"
}
}
filter {
mutate {
split => {"message"=>"|"}
}
}
output {
stdout { codec => rubydebug }
}
啓動
#啓動
./bin/logstash -f ./mogublog-pipeline.conf
然後我們就插入我們的測試數據
echo "2019-03-15 21:21:21|ERROR|讀取數據出錯|參數:id=1002" >> app.log
然後我們就可以看到logstash就會捕獲到剛剛我們插入的數據,同時我們的數據也被分割了
輸出到Elasticsearch
我們可以修改我們的配置文件,將我們的日誌記錄輸出到ElasticSearch中
input {
file {
path => "/soft/beats/logs/app.log"
start_position => "beginning"
}
}
filter {
mutate {
split => {"message"=>"|"}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
}
}
然後在重啓我們的logstash
./bin/logstash -f ./mogublog-pipeline.conf
然後向日志記錄中,插入兩條數據
echo "2019-03-15 21:21:21|ERROR|讀取數據出錯|參數:id=1002" >> app.log
echo "2019-03-15 21:21:21|ERROR|讀取數據出錯|參數:id=1002" >> app.log
最後就能夠看到我們剛剛插入的數據了