Logstash 是 Elastic Stack 中功能最強大的 ETL 工具,相較于 beats 家族,雖然它略顯臃腫,但是強在功能豐富、處理能力強大。大家在使用的過程中肯定也體驗過其啟動時的慢吞吞,那么有什么辦法可以減少等待 Logstash 的啟動時間,提高編寫其處理配置文件的效率呢?本文給大家推薦一個小技巧,幫助大家解決如下兩個問題,讓大家更好地與這個笨重的大家伙相處。
- 減少 Logstash 重啟的次數(shù),也就節(jié)省寶貴的時間
- 方便快捷地向 Logstash 輸入需要處理的內(nèi)容
1. 打開 reload 配置開關(guān)
Logstash 啟動的時候可以加上 -r 的參數(shù)來做到配置文件熱加載,效果是:
- 當(dāng)你修改了配置文件后,無需重啟 Logstash 即可讓新配置文件生效。
它的含義如下:

當(dāng)你寫好配置文件,比如 test.conf ,啟動命令如下:
bin/logstash -f test.conf -r
啟動完畢,修改 test.conf 的內(nèi)容并保存后,過 1 秒鐘,你會發(fā)現(xiàn) Logstash 端有類似如下日志輸出(注意紅色框標(biāo)記的部分),此時說明 reload 的成功。

如果你修改的配置文件有錯誤,會看到報錯的日志,你可以根據(jù)錯誤提示修改。

至此,第一個問題解決!
2. 使用 HTTP INPUT
編寫配置文件的另一個痛點是需要針對不同格式的輸入內(nèi)容進行詳細的測試,以防解析報錯的情況出現(xiàn)。此時大家常用標(biāo)準輸入來解決這個問題(stdin input),但是標(biāo)準輸入對于文字編輯支持不太友好,而且配置文件熱更新的功能也不支持標(biāo)準輸入。
在這里向大家推薦使用 http input 插件,配置如下:
input{
http{
port => 7474
codec => "json"
}
}
然后大家再用自己喜歡的 http 請求工具,比如 POSTMan、Insomnia 等向 http://loclahost:7474發(fā)送待測試內(nèi)容即可,如下是 Insomnia 的截圖。

至此,第二個問題也解決了。
3. 總結(jié)
相信看到這里,大家一定是躍躍欲試了,趕緊打開電腦,找到 Logstash,然后編輯 test.conf,輸入如下內(nèi)容:
input{
http{
port => 7474
codec => "json"
}
}
filter{
}
output{
stdout{
codec => rubydebug{
metadata => true
}
}
}
然后執(zhí)行啟動命令:
bin/logstash -f test.conf -r
打開 Insomnia ,輸入要測試的內(nèi)容,點擊發(fā)送,開始舒爽流暢的配置文件編寫之旅吧!
