監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集

監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西崗企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站制作,西崗網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

監(jiān)控系統(tǒng)中,日志處理就是采集服務(wù)運(yùn)行時(shí)生成的原始日志,根據(jù)用戶配置的解析規(guī)則,從中提取可用數(shù)據(jù),形成監(jiān)控指標(biāo)的過(guò)程,這個(gè)過(guò)程一般由監(jiān)控系統(tǒng)的日志采集Agent完成。

通用的日志采集Agent一般會(huì)提供多種日志解析方法,常用的有分隔符K:V、正則表達(dá)式等。為了適配某些常用的系統(tǒng)或組件(例如:Nginx、Syslog等),有些日志采集Agent還會(huì)提供一些預(yù)制的日志解析配置,以期達(dá)到開(kāi)箱即用的效果。

百度的業(yè)務(wù)場(chǎng)景十分復(fù)雜,涉及搜索服務(wù)、社區(qū)服務(wù)、金融服務(wù)、AI服務(wù)等,這些業(yè)務(wù)的程序所生產(chǎn)的日志格式存在較大差異,如何統(tǒng)一處理這些不同格式的日志成為一個(gè)重要的問(wèn)題。今天,我們會(huì)從百度Noah監(jiān)控平臺(tái)的角度,討論如何解決這一問(wèn)題。

1K:V日志

監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集

如上圖所示,這是一個(gè)典型的K:V形式組成的日志。

我們可以通過(guò)簡(jiǎn)單的分隔符將日志分隔開(kāi),并根據(jù)K:V的式樣從日志中提取出uri、c_time、idc等監(jiān)控項(xiàng)。

2多行日志

監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集

這是一個(gè)C++程序的Stack信息。需要將多行日志作為一個(gè)Trace信息進(jìn)行完整提取,并且將每一行里面的函數(shù)名、文件名、行號(hào)單獨(dú)提取,統(tǒng)一推送,用于批量實(shí)例的故障定位

這個(gè)例子需要具備兩個(gè)能力,多行日志處理和單行日志內(nèi)提取字符串。

3混合日志

監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集

在這個(gè)例子中,每行日志混合了服務(wù)名、代碼位置用戶自定義數(shù)據(jù)等信息。需要分別用分隔符、K:V和JSON解析的方式進(jìn)行提取。

針對(duì)這些場(chǎng)景,一些開(kāi)源方案(例如Logstash,Collectd)通過(guò)在配置文件中支持此類語(yǔ)義或插件的方式實(shí)現(xiàn)了此類功能。我們參考了這些開(kāi)源實(shí)現(xiàn),結(jié)合百度業(yè)務(wù)的場(chǎng)景,在監(jiān)控采集Agent上通過(guò)日志插件功能實(shí)現(xiàn)日志處理需求。

實(shí)現(xiàn)插件時(shí),需要重點(diǎn)考慮以下幾方面:

1. 通用性和易用性:需要盡可能滿足用戶定制化需求, 并且開(kāi)發(fā)簡(jiǎn)單。

2. 性能:典型的日志采集場(chǎng)景中,需要每秒處理數(shù)MB甚至數(shù)十MB的日志文件,并完成字段切分、正則匹配、數(shù)據(jù)格式轉(zhuǎn)換等操作,需要處理引擎有較強(qiáng)的性能。

3. 可用性和安全性:Agent運(yùn)行在線上生產(chǎn)服務(wù)器上,對(duì)穩(wěn)定和安全有相當(dāng)高的要求。

Agent日志插件實(shí)現(xiàn)

監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集

如何實(shí)現(xiàn)定制化的日志解析邏輯很簡(jiǎn)單。我們封裝了Log解析類,包含獲取單行日志和返回監(jiān)控項(xiàng)解析結(jié)果的接口,供用戶自定義日志解析腳本來(lái)調(diào)用。用戶需要在日志解析腳本中實(shí)現(xiàn)Callback函數(shù),在解析每行日志時(shí),被Agent調(diào)用。

所有的日志處理邏輯完全在腳本中實(shí)現(xiàn),例如,用戶可以在腳本中維護(hù)全局Context,通過(guò)Context中保存的進(jìn)度信息,完成多行日志的處理。

這里還封裝了通用的日志處理工具庫(kù),以Lua內(nèi)置類的形式提供,包含JSON、Debug等工具。

可用性和安全

Agent在所有服務(wù)器上運(yùn)行,可用性安全性是最重要的考量因素。

可用性方面,主要是避免自定義腳本本身的Bug或插件引擎Bug導(dǎo)致采集功能異常。除此之外,需要規(guī)避資源占用超限導(dǎo)致服務(wù)器上其它業(yè)務(wù)受影響。

對(duì)用戶代碼,需要嚴(yán)格規(guī)范資源占用量。執(zhí)行插件的任務(wù),作為一個(gè)單獨(dú)的進(jìn)程,使用Cgroup和Ulimit等機(jī)制限制資源占用,同時(shí)也作為執(zhí)行隔離的手段,規(guī)避單個(gè)腳本或插件引擎的Bug影響所有采集任務(wù)正常執(zhí)行。

另外,在任務(wù)執(zhí)行時(shí)間上,也由Agent加以控制,避免任務(wù)超時(shí)運(yùn)行。

安全性方面,自定義日志解析腳本需要配置中心統(tǒng)一托管,避免被篡改。

Lua本身提供的一些功能也做了屏蔽,例如io.open/io.popen/os.execute/os.remove等高危操作接口,避免從腳本調(diào)用外部程序,或做出刪除系統(tǒng)文件等操作。

增強(qiáng)模式

經(jīng)過(guò)一段時(shí)間的線上運(yùn)行,在某些場(chǎng)景下,日志處理的性能無(wú)法滿足需求。

對(duì)于通用日志采集場(chǎng)景,通過(guò)將Lua替換成Luajit,日志解析吞吐量獲得約4倍的提升,可以覆蓋我們幾乎所有的通用日志采集場(chǎng)景。替換過(guò)程中需要關(guān)注兼容問(wèn)題處理,例如Regexp語(yǔ)意和標(biāo)準(zhǔn)的Lua并不完全相同,lua_ctx最大數(shù)量限制等等。

特殊的業(yè)務(wù)需求場(chǎng)景,需要針對(duì)性地進(jìn)行優(yōu)化。例如,某些業(yè)務(wù)日志的采集過(guò)程中,需要進(jìn)行UNIX時(shí)間戳到RFC格式的轉(zhuǎn)換、IP地址到機(jī)房信息的轉(zhuǎn)換等操作,在Lua腳本中通過(guò)查表或進(jìn)行轉(zhuǎn)換來(lái)實(shí)現(xiàn)需求的效率非常低。對(duì)于這些場(chǎng)景我們使用C++等語(yǔ)言封裝了可以在Lua中直接調(diào)用的類,有效提升此類操作性能超過(guò)一個(gè)數(shù)量級(jí)。這種集成方式也可以用于支持一些定制功能,例如Protobuf和BaiduRPC變量等信息的采集。

性能方面仍有提升的空間。當(dāng)前的日志處理是單進(jìn)程單線程中運(yùn)行日志處理引擎解決需求,擴(kuò)展成為多線程,利用并發(fā)方式可以有效提升吞吐量。

關(guān)于監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)站標(biāo)題:監(jiān)控Agent集成Lua引擎怎么實(shí)現(xiàn)多維度日志采集
轉(zhuǎn)載源于:http://bm7419.com/article10/igdgdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)品牌網(wǎng)站制作、小程序開(kāi)發(fā)網(wǎng)站設(shè)計(jì)公司、網(wǎng)站營(yíng)銷、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司