解決方案:【干貨】借鑒開(kāi)源框架自研日志收集系統 | 豈安低調分享
優(yōu)采云 發(fā)布時(shí)間: 2022-11-26 04:22解決方案:【干貨】借鑒開(kāi)源框架自研日志收集系統 | 豈安低調分享
紡織品
觀(guān)點(diǎn)
箱
信息
我們
億安科技最真誠的商業(yè)安全公眾號
主:
踩浪無(wú)影無(wú)蹤 宜安科技高級架構師
十余年數據研發(fā)經(jīng)驗,擅長(cháng)數據處理領(lǐng)域的數據處理,如爬蟲(chóng)、搜索引擎、大數據應用高并發(fā)等。他曾擔任建筑師,研發(fā)經(jīng)理和其他職位。曾主導開(kāi)發(fā)大型爬蟲(chóng)、搜索引擎及大數據廣告DMP系統,目前負責宜安科技數據平臺的開(kāi)發(fā)與建設。
項目背景
公司項目需要
" target="_blank">采集
和管理分布在多臺計算機上的日志。作者使用了logstac和flume等開(kāi)源項目。最后,他開(kāi)發(fā)了一套基于Java語(yǔ)言的日志采集
系統Bloodhound。以下是從項目關(guān)注的角度對開(kāi)源系統和自研的分析。
1. 開(kāi)源日志采集系統功能
Logstash 和 Flume 都是成熟的日志采集平臺,結構清晰,插件豐富,文檔通俗易懂,示例代碼很多。其中,Logstash 專(zhuān)注于字段的預處理,Flume 專(zhuān)注于不同網(wǎng)絡(luò )拓撲下的日志交付,并通過(guò) Agent 開(kāi)放各種網(wǎng)絡(luò )節點(diǎn)。
2. 日志采集
系統的注意事項
開(kāi)發(fā)語(yǔ)言的選擇
該公司的開(kāi)發(fā)團隊主要集中在Java、Python上。另一方面,Logstash 的插件使用 Ruby,從團隊的角度來(lái)看,它的可擴展性較差。將插件添加到logstash是很痛苦的,使用幾個(gè)月后,感覺(jué)性能低,啟動(dòng)速度變慢。
性能注意事項
? 水槽的性能比較低,主要有以下幾點(diǎn):
?。?)單線(xiàn)程。
每個(gè)水槽代理分為源、通道、*敏*感*詞*和其他插件。每個(gè)插件僅啟用單線(xiàn)程。如果任務(wù)是寫(xiě)入數據庫等IO操作,則不可避免地會(huì )拖累性能。
?。?) 源的計時(shí)器機制
源線(xiàn)程檢測新的更新,繼續讀取并推送到通道,當處理完所有更新時(shí),線(xiàn)程退出。啟動(dòng)計時(shí)器線(xiàn)程。定期重新啟動(dòng) 3 秒鐘,依此類(lèi)推。在這個(gè)過(guò)程中,Java 的多線(xiàn)程通知機制沒(méi)有得到充分利用,每次啟動(dòng)都有一些調度、排隊、檢測和任務(wù)初始化過(guò)程。影響性能。
?。?)水槽交易機制
Flume本身已經(jīng)過(guò)優(yōu)化,允許批量提交事件。但本質(zhì)上,您仍然需要測試*敏*感*詞*處理結果,然后提交或回放。
管理注意事項
如果將代理的任務(wù)處理字符串、源>通道>sink理解為一個(gè)任務(wù)(這個(gè)任務(wù)是一個(gè)抽象的概念,在Flume中沒(méi)有這個(gè)概念),那么從業(yè)務(wù)鏡頭的角度來(lái)看,Flume就是一個(gè)單任務(wù)采集
系統。如果需要同時(shí)處理兩個(gè)任務(wù),則必須啟動(dòng)兩個(gè) Flume 代理進(jìn)程。隨著(zhù)采集任務(wù)數量的增加,管理成本勢必大幅增加。
" />
?。ㄋ厶幚恚憾噙M(jìn)程處理多任務(wù))。
?。▽ぱC犬處理:?jiǎn)芜M(jìn)程多任務(wù)處理)。
此外,我們還有監控需求、統計需求、任務(wù)管理等。這些任務(wù)需要連接到我們的Grafana平臺。綜合考慮后,我們選擇了自主研發(fā)的日志采集系統。
尋血獵犬系統
項目名稱(chēng)的來(lái)源
來(lái)自維基百科:
尋血獵犬是一種大型氣味獵犬,最初是為了狩獵鹿、野豬而飼養的,自中世紀以來(lái)用于追蹤人類(lèi)。據信它是曾經(jīng)飼養在比利時(shí)圣休伯特修道院的獵犬的后裔,講法語(yǔ)的人稱(chēng)之為圣休伯特的Chien de Saint-Hubert。
這個(gè)品種以其能夠在很遠的距離上辨別人類(lèi)氣味而聞名,即使在幾天后也是如此。它異常敏銳的嗅覺(jué)與強大而頑強的追蹤本能相結合,產(chǎn)生了理想的氣味獵犬,它被世界各地的警察和執法部門(mén)用來(lái)追蹤逃跑的囚犯、失蹤人員、迷路的孩子和迷路的寵物。
“
嗅覺(jué)最靈敏的獵犬意味著(zhù)它可以從各種原創(chuàng )
數據中提取初步有價(jià)值的信息,包括交通。
“
項目要求
項目架構
系統分層
核心框架層
為了充分利用Flume的功能,我們還將Bloodhound分為三層:源>通道>匯。這個(gè)設計是為了充分利用 Flume 中豐富的插件資源,請參考下面的配置文件。
時(shí)序圖
源圖層
源是數據輸入,通常是文件、消息系統等。在示例中,Source 是 Redis,Source 是單獨運行的線(xiàn)程,從 Redis 中指定的隊列中獲取輸入,并在讀取完成后將其推送到 Channel。當通道中的隊列已滿(mǎn)時(shí),源線(xiàn)程將進(jìn)入等待狀態(tài)。
通道層
渠道
充當連接源和通道的透視按鈕,其主要功能如下:
通道層的主要方法有:popEvents、addEvents、notifyEvents、sendMetrics等。
" />
匯層
*敏*感*詞*層是可運行的,接受事件,由通道調度,并執行最終登陸邏輯。
以上三層中,通道層有 MemoryChannel 和 FileChannel,如果任務(wù)更重要,則應選擇 FileChannel,這樣可以保證進(jìn)程中斷后事件不會(huì )丟失。內存通道管理具有相對較高的性能的隊列。Source and Sink可以在Flume中大量重用插件代碼。
任務(wù)管理器
任務(wù)管理器,因此顧名思義,是管理整個(gè)日志采集
系統的管理模塊。
1. 任務(wù)管理
任務(wù)注冊界面
一個(gè)任務(wù)可以通過(guò)任務(wù)注冊接口提交到全流程,通過(guò)HTTP Post方法提供注冊并啟動(dòng)新任務(wù),如圖配置所示。
數據提交接口
默認情況下,Source 是拉取模式,從文件、隊列中提取日志。它還支持 HTTP 提交。數據提交接口需要傳遞兩個(gè)參數,jobName 和事件。
2. 任務(wù)監控
查看任務(wù)執行情況
查看由核心框架層提供的 Grafana 中各個(gè)任務(wù)的執行。
查看任務(wù)運行
提供列表,查看任務(wù)狀態(tài),啟動(dòng),停止任務(wù)。
系統運維層
流程管理
使用主管來(lái)管理流程。
調度
使用計劃任務(wù)根據每種業(yè)務(wù)情況管理任務(wù)。在任務(wù)管理中調用任務(wù)啟動(dòng)、停止等。這一塊和日志采集核心關(guān)系不大,就不贅述了。
筆者做過(guò)很多需要使用日志采集
的項目,也用過(guò)logstash、flume等開(kāi)源系統,總體上覺(jué)得開(kāi)源系統比較成熟,有大量的插件和事務(wù)管理。但是,它并沒(méi)有與自己的業(yè)務(wù)系統緊密結合。自研框架工作量大,坑多,優(yōu)勢較好與業(yè)務(wù)融合。
你會(huì )對什么感興趣
⊙ [作者]。
⊙ [測試]。
⊙ [CPO 系列]。
01 - 信息采集
⊙ [反欺詐]。
分享:優(yōu)采云
" target="_blank">采集 " target="_blank">偽原創(chuàng )
優(yōu)采云
采集
后如何偽造原件?用優(yōu)采云
采集
的文章可以使用老鐵智能偽原創(chuàng )工具進(jìn)行批量偽原創(chuàng )文章的操作,無(wú)需自己修改,偽原創(chuàng )文章可以直接使用,非常方便。非常值得下載體驗,有需要的朋友千萬(wàn)不要錯過(guò)!
" />
1.老鐵智能偽原裝工具,讓您的替代更DIY,更個(gè)性化。
2.將一篇有同義詞的文章替換成另一篇全新的偽原創(chuàng )文章,替換速度快。
3、使用準確有力的詞庫快速替換文章,使文章達到偽原創(chuàng )的目的。
" />
4.讓你的替補更DIY更個(gè)性化,是站長(cháng)朋友更新網(wǎng)站數據的好幫手。提供“替換鏈接”的貼心功能,有效增加SEO反向鏈接;進(jìn)入文章后,點(diǎn)擊
開(kāi)始洗得到不同的文章,或點(diǎn)擊加強洗得到不同的效果。如果對洗滌后的洗滌不滿(mǎn)意,也可以再次洗滌結果,效果更好。同義詞替換:可以替換文章中的同義詞,也可以將洗過(guò)的稿件的文本同義替換,具體操作自行組合。


