????????最近工作上有個(gè)需求,需要把prometheus 采集到的數(shù)據(jù)上報(bào)到kafka消息隊(duì)列,看了下官方實(shí)現(xiàn),prometheus 支持remote_write / remote_read 的方式擴(kuò)展,可以在此基礎(chǔ)上做文章。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的平壩網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
? ? ? ? github 上面有個(gè)現(xiàn)成的插件,看了一下,主要存在以下一些問(wè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)者方式寫(xiě)數(shù)據(jù)(數(shù)據(jù)量大的情況下,性能可能跟不上)
? ? ? ? 于是自己動(dòng)手寫(xiě)一個(gè)插件,練練手。
? ? ? ? 代碼比較簡(jiǎn)單,就是以插件的方式部署適配器,接收prometheus 產(chǎn)生的數(shù)據(jù)并通過(guò)異步kafka 生產(chǎn)者模式,將數(shù)據(jù)輸送給kafka。
? ? ? ? 大致邏輯是這樣:? ? ? ??
????????1、從配置文件中獲取kafka相關(guān)配置? ? ? ??
????????2、本地監(jiān)聽(tīng)9201 端口提供http 服務(wù)供prometheus 寫(xiě)入數(shù)據(jù)? ? ? ??
????????3、從/write API 獲取到prometheus監(jiān)控?cái)?shù)據(jù)后,將數(shù)據(jù)寫(xiě)入到channel? ? ? ??
????????4、起一個(gè)kafka 異步生產(chǎn)者,從channel里面讀取監(jiān)控?cái)?shù)據(jù),并寫(xiě)入到kafka
? ? ? ? 代碼具體代碼:
? ? ? ? https://gitee.com/pmghong/prometheus-kafka-adapter