Logstash調優——自定義插件

雖然Logstash提供了N多的過濾器插件,但是有木有最切合自己公司業務的插件呢?恰好,你只是做最簡單的業務日誌處理,比如日期、字段刪除、字段替換等工作,那麼Logstash自帶的插件就可滿足。但是,當你的日誌需要外部數據進行豐富,那你怎麼做?是用jdbc_staic、jdbc_stream、elasticsearch呢?可能這些能滿足簡單的日誌豐富,但是複雜的日誌處理,可能就無能爲力。要麼是沒法實現,要麼是性能低的可憐。

如何解決這個問題呢?logstash提供了自定義插件的功能,即就是自己寫一個插件。如果你會Ruby,很好,人家就是天生支持Ruby的。但是現在,人家也提供了Java插件開發的文檔供你參考(畢竟Logstash是運行在JVM上面的麼)。

要使用Java開發一個Logstash插件,就需要耐着性子查看官方的文檔(https://www.elastic.co/guide/en/logstash/current/java-filter-plugin.html)哦。雖然累,一定要看懂,看明白,並且要大膽的寫代碼。

由於,我們公司的項目,需要根據EVENT中某些字段來豐富EVENT,且是一種一對一的映射關係,開始是使用jdbc_staic來實現的,但是性能低的可憐,後來換成了elastic search插件,也沒好到哪裏去。最後就自己寫了插件,性能提升至少有80倍。以前一個EVENT的耗時在80ms,現在基本小於1ms。吞吐量,真的是翻天覆地。

詳細的插件代碼可以參考我的Gitee把,那邊也有介紹https://gitee.com/antch_hw/logstash-filter-java_eastcom_filter-redis.git

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章