您好,登錄后才能下訂單哦!
????????最近工作上有個(gè)需求,需要把prometheus 采集到的數(shù)據(jù)上報(bào)到kafka消息隊(duì)列,看了下官方實(shí)現(xiàn),prometheus 支持remote_write / remote_read 的方式擴(kuò)展,可以在此基礎(chǔ)上做文章。
? ? ? ? github 上面有個(gè)現(xiàn)成的插件,看了一下,主要存在以下一些問題:? ? ? ??
????????1、從環(huán)境變量讀取配置(不夠靈活,后續(xù)不好優(yōu)化,不能做到配置熱加載)? ? ? ??
????????2、把client 對(duì)象創(chuàng)建的邏輯放到了http handler里面(每次prometheus 調(diào)用/write 接口,都要new一個(gè)對(duì)象...)? ? ? ??
????????3、使用golang kafka 插件sarama 的同步生產(chǎn)者方式寫數(shù)據(jù)(數(shù)據(jù)量大的情況下,性能可能跟不上)
? ? ? ? 于是自己動(dòng)手寫一個(gè)插件,練練手。
? ? ? ? 代碼比較簡(jiǎn)單,就是以插件的方式部署適配器,接收prometheus 產(chǎn)生的數(shù)據(jù)并通過異步kafka 生產(chǎn)者模式,將數(shù)據(jù)輸送給kafka。
? ? ? ? 大致邏輯是這樣:? ? ? ??
????????1、從配置文件中獲取kafka相關(guān)配置? ? ? ??
????????2、本地監(jiān)聽9201 端口提供http 服務(wù)供prometheus 寫入數(shù)據(jù)? ? ? ??
????????3、從/write API 獲取到prometheus監(jiān)控?cái)?shù)據(jù)后,將數(shù)據(jù)寫入到channel? ? ? ??
????????4、起一個(gè)kafka 異步生產(chǎn)者,從channel里面讀取監(jiān)控?cái)?shù)據(jù),并寫入到kafka
? ? ? ? 代碼具體代碼:
? ? ? ? https://gitee.com/pmghong/prometheus-kafka-adapter
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。