Pepper Metrics是我與同事開發的一個開源工具(github.com/zrbcool/pep…),其經過收集jedis/mybatis/httpservlet/dubbo/motan的運行性能統計,並暴露成prometheus等主流時序數據庫兼容數據,經過grafana展現趨勢。其插件化的架構也很是方便使用者擴展並集成其餘開源組件。
請你們給個star,同時歡迎你們成爲開發者提交PR一塊兒完善項目。git
Pepper Metrics項目從核心上來講,基於Tom Wilkie的RED理論,即對每一個服務 (這裏的服務特指進程中的某種調用,好比調用一次數據庫查詢)進行RED指標收集,包括:github
上面簡述了Pepper Metrics項目的核心思想及方法論依據,而從技術上來講,Pepper Metrics項目構建了一套完整的可插拔插件體系,使應用能夠基於選用的組件(如RPC通訊框架dubbo,motan、ORM對象模型關係映射框架mybatis、標準的HTTP Servlet組件、Redis操做庫jedis、等)選擇現有的插件擴展直接具有上述指標的:數據庫
各個組件說明mybatis
- Profiler, 核心部分,用於啓動按期調度任務,並經過ExtensionLoad加載全部的ScheduledRun擴展,按照指定週期發起調度。同時內部維護Stats的構造器Profiler.Builder
- Scheduler, 虛擬概念,在Profiler做爲一個定時任務存在
- ExtensionLoader, 很是重要的組件,經過Java SPI機制加載插件,使項目的各個模塊能夠靈活插拔,也是項目架構的基石
- ScheduledRun, 擴展點:pepper metrics core會定時調度,傳遞全部的Stats,實現插件可使用Stats當中收集到的性能數據,目前已實現的爲scheduled printer組件
- MeterRegistryFactory,擴展點:基於不一樣的micrometer的Registry實現抽象並屏蔽各個數據庫的差別
- Pepper Metrics X, 具體的集成,咱們的目標是度量一切,目前計劃實現的爲:jedis,motan,dubbo,servlet,mybatis等最經常使用組件