目錄
- Filebeat processors處理數(shù)據(jù)
- 啟動服務(wù)器
- 二進(jìn)制
- docker
- docker-compose.yml
- 將的 Logstash 管道的輸出指向它
- logstash.conf
Filebeat processors處理數(shù)據(jù)
我們知道 Logstash 及 Filebeat 在 Elasticsearch 數(shù)據(jù)攝入及清理中起到非常大的作用。它們是常用的工具用來對數(shù)據(jù)進(jìn)行處理。我們可以運用 Logstash 豐富的過濾器來處理數(shù)據(jù),我們也可以使用 Filebeat 的 processors 來處理數(shù)據(jù)。
使用這些工具(和其他工具)對管道進(jìn)行編碼是一個高度迭代的過程,特別是在處理 grok 模式以解析非結(jié)構(gòu)化日志時:你獲得一些示例數(shù)據(jù),將其提供給 input,然后你將重復(fù):
- 對管道邏輯進(jìn)行編碼( Logstash 中的過濾器和 Filebeat 中的處理器)
- 檢查輸出,直到日志被正確解析。
我一直覺得這個改變管道和檢查輸出的迭代周期有點慢 — 確保你在 Logstash 和 Filebeat 中都有控制臺輸出,但你最終會混合這些程序的輸出和你的輸出,你會肯定會滾動很多。 當(dāng)然,這兩種工具都有文件輸出,但在處理包含數(shù)百個字段的文檔時很容易迷失方向,因為每個文檔都寫在一行中,沒有漂亮的打印。
我們需要一種方法來立即判斷我們的管道輸出是否正確,打印漂亮且可導(dǎo)航的輸出是我的主要要求,如果我們有的話,我們的開發(fā)迭代會快得多! 這樣的工具不存在。幸運的是,一個開源的項目 Logshark (靈感來自流行的網(wǎng)絡(luò)檢查工具 Wireshark)應(yīng)運而生。
它是一個帶有用 Go 編寫的終端 UI 的 CLI 應(yīng)用程序。它通過啟動一個小型網(wǎng)絡(luò)服務(wù)器來工作,該服務(wù)器通過接受 _bulk 請求模仿 Elasticsearch 的行為,因此你需要做的就是將 Logstash/Filebeat elasticsearch 輸出重定向到該工具。
這個工具在更改生產(chǎn)管道時特別方便,因為你可以向管道添加第二個 elasticsearch 輸出以檢查事件,默認(rèn)情況下它會收集它看到并接受的前 100 個事件,但丟棄其余的,你可以檢查下一個通過點擊 r (reset)來刷新它。
它還會告訴您每秒發(fā)生的事件數(shù)和平均文檔大小,當(dāng)你需要通過調(diào)整 bulk/batch 大小來優(yōu)化吞吐量時,這些信息非常方便,如果你正在從南半球的機器收集日志,這就非常重要發(fā)送到北部的 Elasticsearch 集群。
你可以直接使用二進(jìn)制文件 (<5mb) 或在 docker 上運行它。 UI 可以用于任何可以模擬終端的東西,比如你的常規(guī) Linux 終端、iTerm、tmux、PuTTY 甚至 VSCode。
啟動服務(wù)器
我們可以參考網(wǎng)站 GitHub – ugosan/logshark: Logshark is a debugger for JSON logs. 下載最新的發(fā)布版。
二進(jìn)制
./logshark --host 0.0.0.0 --port 9200 --max 1000
上述命令將啟動一個服務(wù)器。它偵聽 9200 端口,也就是 Elasticsearch 運行的端口。我們需要停止自己的 Elasticsearch 運行,你運行 Logshark 和 Elasticsearch 在同一個機器上的話。我們使用如下的命令來檢查偵聽 9200 的端口。
$ sudo lsof -i -P | grep LISTEN | grep 9200 Password: logshark 69585 liuxg 10u IPv6 0xe92fabcdd6634ab3 0t0 TCP *:9200 (LISTEN)
docker
docker run -p 9200:9200 -it ugosan/logshark -host 0.0.0.0 -port 9200
docker-compose.yml
version: "3.2" services: logshark: image: ugosan/logshark tty: true stdin_open: true
注意:你不應(yīng)使用 “docker-compose up”,而應(yīng)使用 “docker-compose run logshark sh”,因為 docker-compose 不會附加到帶有 “up” 的容器。 docker-compose run -p 9200:9200 logshark -port 9200
將的 Logstash 管道的輸出指向它
就像普通的 elasticsearch 輸出一樣。針對 docker 的情況:
input {} filter {} output { elasticsearch { hosts => ["http://host.docker.internal:9200"] } }
使用 docker 時,你可以使用 host.docker.internal 從另一個容器訪問 logshark 容器
例如
docker run –rm byrnedo/alpine-curl -v -XPOST -d '{"hello":"test"}' http:/ /host.docker.internal:9200。
針對非 docker 部署,我們可以使用如下的 logstash.conf 來進(jìn)行測試:
logstash.conf
input { stdin { } } filter {} output { stdout { codec => rubydebug } elasticsearch { hosts => ["http://localhost:9200"] } }
在上面,我使用 stdin 來輸入我們的文檔。我們使用如下的命令來啟動 Logstash:
./bin/logstash -f logstash.conf
我們在 console 中打入一些我們喜歡的文字:
我們切換到 Logshark 所在的 terminal:
我們可以輸入 l 來改變布局:
我們可以清楚地看到每個輸出。它對我們調(diào)試 pipeline 非常有用。
以上就是Logshark調(diào)試Logstash及Filebeat pipelines使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Logshark調(diào)試Logstash的資料請關(guān)注其它相關(guān)文章!