想看新指標?教你輕鬆寫prober外掛

Obsuite發表於2021-03-04
想看新指標?教你輕鬆寫prober外掛


prober外掛透過API方式採集打點資料,目前已有外掛:


  • elasticsearch

  • github

  • haproxy

  • mongodb

  • mysql

  • nginx

  • prometheus

  • rabbitmq

  • redis

  • tengine

  • zookeeper


prober外掛是使用telegraf 外掛介面封裝而成,你可以:


  • 直接封裝一個telegraf

  • 寫一個telegraf外掛,然後再封裝成prober外掛


接下來用src/modules/monapi/plugins/demo為例,介紹外掛的開發。


Telegraf外掛 開發


安全提示


需要實現一個這樣的介面型別:


想看新指標?教你輕鬆寫prober外掛
想看新指標?教你輕鬆寫prober外掛


下面是demo外掛的實現:


想看新指標?教你輕鬆寫prober外掛
想看新指標?教你輕鬆寫prober外掛


這樣就有了一個telegraf的外掛, 接下來將它封裝成 prober 外掛。


外掛中Gather方法中的acc是一個介面,具體的例項由執行環境提供的, 在prober中執行外掛時,acc的實現在

src/modules/prober/manager/accumulator.go


Prober 

prober會定期從monapi獲取collectRule列表,檢查更新自己的外掛例項。


  • create rule collector

  • update rule collector

  • delete rule collector


其中,update rule是由delete old,create new來實現的。


monapi之所以需要載入外掛,是因為需要獲取外掛的引數描述,這樣才能渲染出合適的UI介面,方便使用者輸入。 這是demo的引數描述:


想看新指標?教你輕鬆寫prober外掛


有關ui的資訊描述,放在了structField的tag中,詳細的tag如下:


想看新指標?教你輕鬆寫prober外掛


這樣,mapapi拿到結構體後,就可以知道如何渲染,填充結構體裡的引數,然後將使用者輸入的資料存入資料庫後,分發到各個prober上執行。


prober獲取規則後,透過外掛的TelegrafInput方法,將rule轉換成telegraf.Input例項。


想看新指標?教你輕鬆寫prober外掛


測試


src/modules/monapi/plugins/demo/demo_test.go


想看新指標?教你輕鬆寫prober外掛
想看新指標?教你輕鬆寫prober外掛


部署


內建編譯

  • 修改src/modules/monapi/plugins/all/all.go,新增demo

  • 重新編譯monapi & prober


外掛載入


將自己的外掛編譯成動態庫檔案(.so), 複製到monapi &prober工作目錄下的plugins/


想看新指標?教你輕鬆寫prober外掛
想看新指標?教你輕鬆寫prober外掛


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992332/viewspace-2761175/,如需轉載,請註明出處,否則將追究法律責任。

相關文章