介紹
Logstash:數據處理引擎,可以處理每秒幾萬條的日誌;它支持動態的從各種數據源蒐集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然後存儲到 ES
官網地址:https://www.elastic.co/cn/products/logstash
如圖:
詳解:
下面我們將文本數據同步到ES來做例子,其中版本爲:logstash-5.2.1,elasticsearch-6.2.2
analysis.conf 配置文件內容爲
input {
file {
type => "lualog"
path=> [ "C:/JWD/logs/*" ] #同步文件的IP
start_position => beginning
stat_interval => 1 #設置多長時間檢測文件是否修改 默認是1s
#tags => "test" #添加標籤
#設置多長時間掃描目錄,發現新文件
discover_interval => 15
# 設置監聽間隔 各字段含義(從左至右)分、時、天、月、年,全爲*默認含義爲每分鐘都更新
}
file {
type => "lsdclog"
path=> [ "C:/JWD/server/Debug/Logs/*" ] #同步文件的IP
start_position => beginning
stat_interval => 1 #設置多長時間檢測文件是否修改 默認是1s
#tags => "test" #添加標籤
#設置多長時間掃描目錄,發現新文件
discover_interval => 15
# 設置監聽間隔 各字段含義(從左至右)分、時、天、月、年,全爲*默認含義爲每分鐘都更新
}
}
filter {
json{
source => "message"
}
date {
match => ["addTime", "yyyy.MM.dd HH.mm.ss","UNIX_MS"] #addTime是我日誌中的一個時間字段!
target => "@timestamp"
}
ruby {
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate{
remove_field => ["message","timestamp"]
}
}
output {
if [type] == "lualog"{
elasticsearch {
action => "index"
hosts => ["127.0.0.1:9200"]
index => "ls_%{+YYYYMMdd}_lua_log"
document_type => "ls_%{+YYYYMMdd}_lua_log"
}
}
if [type] == "lsdclog"{
elasticsearch {
action => "index"
hosts =>["127.0.0.1:9200"]
index => "ls_%{+YYYYMMdd}_lsdc_log"
document_type => "ls_%{+YYYYMMdd}_lsdc_log"
}
}
stdout {
codec => json
}
}
1、將C:/JWD/logs/ 目錄下的所有文件同步到本機ES中,索引名爲ls_%{+YYYYMMdd}_lua_log,{+YYYYMMdd}爲當日的日期
2、將C:/JWD/server/Debug/Logs/ 目錄下的所有文件同步到本機ES中,索引名爲ls_%{+YYYYMMdd}_lsdc_log,{+YYYYMMdd}爲當日的日期
3、filter表示只過濾json數據
注意:
1、這邊有個logstash自帶的坑,就是logstas同步日誌的時候,索引是統計8點到第二天8點影響,所以要改索引建立爲凌晨建立時間,如何修改,請看以上配置
2、要同步多個路徑下的文件的時候,可以在input中file的 path=> [ "C:/JWD/logs/*", "C:/JWD/server/Debug/Logs/*"] 配置多個路勁(input中各個參數的意義,請參考:https://yq.aliyun.com/articles/152043?spm=a2c4e.11153940.blogcont154341.23.792e51fekIVnjR)
3、output的時候,如果在hosts =>["127.0.0.1:9200","10.40.0.205:9200"] 配置多個路徑的時候,不是在兩臺服務上各備份一份數據,而是把一份數據存到兩臺服務上,所有每臺服務上的數據都是不完整的