<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Pepper Metrics運(yùn)行時(shí)性能收集工具

          聯(lián)合創(chuàng)作 · 2023-09-27 08:11

          Architecture

          Pepper Metrics項(xiàng)目從核心概念上來(lái)說(shuō),基于Tom Wilkie的RED理論,即對(duì)每個(gè)服務(wù) (這里的服務(wù)特指進(jìn)程中的某種調(diào)用,比如調(diào)用一次數(shù)據(jù)庫(kù)查詢)進(jìn)行RED指標(biāo)收集,并持久化到數(shù)據(jù)庫(kù),并通過(guò)dashboard進(jìn)行展示,輔助進(jìn)行性能趨勢(shì)分析。

          Concept

          Arch

          各個(gè)組件說(shuō)明

          • Profiler, 核心部分,用于啟動(dòng)定期調(diào)度任務(wù),并通過(guò)ExtensionLoad加載所有的ScheduledRun擴(kuò)展,按照指定周期發(fā)起調(diào)度。同時(shí)內(nèi)部維護(hù)Stats的構(gòu)造器Profiler.Builder
          • Scheduler, 虛擬概念,在Profiler作為一個(gè)定時(shí)任務(wù)存在
          • ExtensionLoader, 非常重要的組件,通過(guò)Java SPI機(jī)制加載插件,使項(xiàng)目的各個(gè)模塊可以靈活插拔,也是項(xiàng)目架構(gòu)的基石
          • ScheduledRun, 擴(kuò)展點(diǎn):pepper metrics core會(huì)定時(shí)調(diào)度,傳遞所有的Stats,實(shí)現(xiàn)插件可以使用Stats當(dāng)中收集到的性能數(shù)據(jù),目前已實(shí)現(xiàn)的為scheduled printer組件
          • Pepper Metrics X, 具體的集成,我們的目標(biāo)是度量一切,目前計(jì)劃實(shí)現(xiàn)的為:jedis,motan,dubbo,servlet,mybatis等最常用組件

          Getting started

          以Mybatis集成為例,更多其他請(qǐng)參考:User Guide

          • 增加maven依賴
          <dependencies>
              <!-- pepper metrics dependencies -->
              <dependency>
                  <groupId>top.zrbcool</groupId>
                  <artifactId>pepper-metrics-mybatis</artifactId>
                  <version>1.0.11</version>
              </dependency>
              <!-- pepper-metrics datasource use prometheus by default -->
              <dependency>
                  <groupId>top.zrbcool</groupId>
                  <artifactId>pepper-metrics-ds-prometheus</artifactId>
                  <version>1.0.11</version>
              </dependency>
          </dependencies>
          • 配置Pepper Metrics定制的Mybatis插件使集成生效
          <configuration>
              <typeAliases>
                  ...
              </typeAliases>
              <!-- 加入如下配置 -->
              <plugins>
                  <plugin interceptor="com.pepper.metrics.integration.mybatis.MybatisProfilerPlugin" />
              </plugins>
              <mappers>
                  ...
              </mappers>
          </configuration>
          • 日志輸出效果:
          18:27:28 [perf-mybatis:20190822182728] ---------------------------------------------------------------------------------------------------------------------------------------------------------
          18:27:28 [perf-mybatis:20190822182728] | Metrics                                                                     Concurrent Count(Err/Sum)   P90(ms)   P99(ms)  P999(ms)   Max(ms)     Qps | 
          18:27:28 [perf-mybatis:20190822182728] | com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId                  0         0/1950       0.6       1.4       2.5       3.5    32.5 | 
          18:27:28 [perf-mybatis:20190822182728] | sample.mybatis.mapper.CityMapper.selectCityById                                      0         0/1950       0.8       2.4      56.6      56.6    32.5 | 
          18:27:28 [perf-mybatis:20190822182728] ---------------------------------------------------------------------------------------------------------------------------------------------------------
          • Prometheus指標(biāo)輸出效果(默認(rèn)的實(shí)現(xiàn),可以修改為其他數(shù)據(jù)庫(kù))
           ? curl localhost:9146/metrics
          # HELP app_mapper_summary_seconds_max  
          # TYPE app_mapper_summary_seconds_max gauge
          app_mapper_summary_seconds_max{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",} 0.051129036
          app_mapper_summary_seconds_max{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",} 0.011559611
          # HELP app_mapper_summary_seconds  
          # TYPE app_mapper_summary_seconds summary
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",quantile="0.9",} 5.5296E-4
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",quantile="0.99",} 0.001765376
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",quantile="0.999",} 0.052424704
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",quantile="0.99999",} 0.052424704
          app_mapper_summary_seconds_count{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",} 3040.0
          app_mapper_summary_seconds_sum{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",} 1.45711331
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",quantile="0.9",} 4.4032E-4
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",quantile="0.99",} 0.001308672
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",quantile="0.999",} 0.002881536
          app_mapper_summary_seconds{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",quantile="0.99999",} 0.012056576
          app_mapper_summary_seconds_count{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",} 3040.0
          app_mapper_summary_seconds_sum{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",} 0.772147736
          # HELP app_mapper_concurrent_gauge  
          # TYPE app_mapper_concurrent_gauge gauge
          app_mapper_concurrent_gauge{class="com/pepper/metrics/sample/mybatis/mapper/CityMapper.xml",operation="sample.mybatis.mapper.CityMapper.selectCityById",} 0.0
          app_mapper_concurrent_gauge{class="com/pepper/metrics/sample/mybatis/mapper/HotelMapper.xml",operation="com.pepper.metrics.sample.mybatis.mapper.HotelMapper.selectByCityId",} 0.0
          

          Maven dependency

          以Mybatis為例,更多其他請(qǐng)參考:User Guide

          <dependencies>
              <!-- pepper metrics dependencies -->
              <dependency>
                  <groupId>top.zrbcool</groupId>
                  <artifactId>pepper-metrics-mybatis</artifactId>
                  <version>1.0.11</version>
              </dependency>
              <!-- pepper-metrics datasource use prometheus by default -->
              <dependency>
                  <groupId>top.zrbcool</groupId>
                  <artifactId>pepper-metrics-ds-prometheus</artifactId>
                  <version>1.0.11</version>
              </dependency>
          </dependencies>

          Next steps

          Theory

          Building

          mvn clean package install
          
          瀏覽 13
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  看逼网站 | 黄色AV毛片 | www.AV在线视频 | 中文字幕亚洲无码视频 | 男女激情操逼一区福利网站 |