Categraf 是一個監控采集 Agent,類似 Telegraf、Grafana-Agent、Datadog-Agent,希望對所有常見監控對象提供監控數據采集能力,采用 All-in-one 的設計,不但支持指標采集,也希望支持日志和調用鏈路的數據采集。相比于其他采集器,Categraf 的優勢在于:支持 remote_write 寫入協議,支持將數據寫入 promethues、M3DB、VictoriaMetrics、InfluxDB;指標數據只采集數值,不采集字符串,標簽維持穩態結構;采用 all-in-one 的設計,所有的采集工作用一個 agent搞定;未來也可以把日志和 trace 的采集納入 agent;純 Go 代碼編寫,靜態編譯依賴少,容易分發,易于安裝。
教你編寫自定義Categraf插件:
下面以自定義http_response插件為例;
http_response插件作用:解析http響應,該響應可以是獲取的監控數據,再將響應寫入指定的監控數據庫,如promethues、VictoriaMetrics、InfluxDB等;
http_response插件編寫思路:
- 拉取官方代碼倉庫項目,在插件目錄input文件夾下建http_response文件夾,在http_response文件夾下建立http_response.go
- http_response.go以任意一個官方已有插件go文件為模板粘貼,此處以tomcat插件為例,先將涉及插件名稱的地方改為http_response
- 在解釋器目錄parser文件夾下httpresponse文件夾,在httpresponse文件夾下建立parser.go
- parser.go中解析的http響應數據的方法,并調用SampleList類的PushSample或PushSamples方法推送監控數據
- 在http_response.go中將初始化方法func (ins *Instance) Init() 中調用解釋器即可
- 在配置文件目錄conf下建立inputs.http_response文件夾,在inputs.http_response文件夾下增加http_response.toml
- http_response.toml中增加需要的配置,如
#collect interval
interval = 60[[instances]]
targets = [
"//localhost",
"//localhost:8080/metrics1",
"//localhost:8088/metrics2"
]#append some labels for series
labels = { device_type="vm"} -
在代理注冊agent文件下的metrics_agent.go中導入自定義插件的路徑,如_ "flashcat.cloud/categraf/inputs/http_response"
-
調試插件:可以將不啟用插件的conf下的配置文件刪除或重命名,或將agent下的注冊插件注釋即可
Categraf的官方代碼托管在兩個地方:
- github://github.com/flashcatcloud/categraf
- gitlink://www.gitlink.org.cn/flashcat/categraf