prometheus 具有強大的生態系統,同時也已經內置了好多服務發現的支持(file,consul,k8s,ec2,dns,openstack,....)
自己開發自定義的服務發現機制
官方提供了參考的說明文檔,主要的問題是我們需要修改prometheus 的代碼,同時自己進行構建,很多時候我們會失去新特性的支持
很不靈活
與現有內置的服務發現機制做適配
方法就很多了,我們可以通過api 將需要監控的節點信息寫入consul,或者基於文件的服務發現模式寫好標准的文件,使用prometheus 內置
的特性,可以靈活的擴展
使用類似vmagent push 模式的工具
vmagent 是一個很不錯的prometheus 周邊擴展,可以將pull 模式修改為push,這樣我就剋一不用修改prometheus 了,需要做的只是調整agent
pushgateway 也是一個選擇的方案,實際我們可以結合實際使用的工具以及場景,選擇不同的工具,vmagent是一個不錯的選擇,但是如果使用了
vmagent我們就需要使用一個支持prometheus remote 協議的存儲系統了
說明
如果需要進行自定義服務發現的開發,還是比較推薦的基於與內置服務發現適配的模式,這樣方便系統的升級以及保持與上游的同步
參考資料
https://prometheus.io/blog/2018/07/05/implementing-custom-sd/#custom-sd-implementation
https://github.com/prometheus/prometheus/blob/master/prompb/remote.proto
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_read
https://prometheus.io/docs/prometheus/latest/storage/
https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/vmagent
https://github.com/prometheus/pushgateway
https://github.com/prometheus/prometheus/tree/master/documentation/examples/remote_storage/remote_storage_adapter
