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)容進(jìn)行詳細(xì)的測試叶雹,以防解析報錯的情況出現(xiàn)。此時大家常用標(biāo)準(zhǔn)輸入來解決這個問題(stdin input)换吧,但是標(biāo)準(zhǔn)輸入對于文字編輯支持不太友好折晦,而且配置文件熱更新的功能也不支持標(biāo)準(zhǔn)輸入。
在這里向大家推薦使用 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ā)送,開始舒爽流暢的配置文件編寫之旅吧讼溺!