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
最后就能夠看到我們剛剛插入的數據了