97精品国产精品公司,久久www免费人成看片中文,天天谢天天干,日韩精品无码专区资源站

首頁(yè) - 關(guān)于研博 - 技術(shù)筆記 - 速成秘籍:十分鐘掌握一種分布式實(shí)時(shí)監(jiān)控類(lèi)庫(kù)
速成秘籍:十分鐘掌握一種分布式實(shí)時(shí)監(jiān)控類(lèi)庫(kù)
2024.12.16

在我們的平臺(tái)開(kāi)發(fā)到一定階段之時(shí),線上的機(jī)器越來(lái)越多,接口調(diào)用也越來(lái)越頻繁,此時(shí)就需要一些監(jiān)控,從服務(wù)器資源,以及業(yè)務(wù)指標(biāo)監(jiān)控.經(jīng)過(guò)一些相關(guān)文檔的查詢(xún)最終選擇了Metric度量類(lèi)庫(kù)來(lái)作為完成監(jiān)控工作的工具。

引入Metrics

Maven中引入依賴(lài)

<dependency>    
<groupId>io.dropwizard.metrics</groupId>  
  <artifactId>metrics-core</artifactId>   
 <version>${metrics.version}</version>
</dependency>

可通過(guò)官網(wǎng)地址獲取最新版本

 

Metrics基本工具

Metrics類(lèi)庫(kù)提供了五種基本的度量類(lèi)型:

1. Gauges(度量)

2. Counters(計(jì)數(shù)器)

3. Histograms(直方圖數(shù)據(jù))

4. Meters(TPS計(jì)算器)

5. Timers(計(jì)時(shí)器)

MetricsMetricRegistry是中心容器,它是程序中所有度量的容器,所有新的度量工具都要注冊(cè)到一個(gè)MetricRegistry實(shí)例中才可以使用,盡量在一個(gè)應(yīng)用中保持讓這個(gè)MetricRegistry實(shí)例保持單例。

MetricRegistry

通過(guò)@Bean注解配置指標(biāo)容器

@Bean
public MetricRegistry metrics() { 
   return new MetricRegistry();
}

 

Meters 速率計(jì)算器

通過(guò)度量容器獲得可以在調(diào)用的地方統(tǒng)計(jì)接口的請(qǐng)求數(shù)TPS,查詢(xún)的次數(shù)QOS,并且根據(jù)時(shí)間來(lái)進(jìn)行計(jì)算獲取每秒的值。

public String method() {  
      Meter meter = registry.meter("you-meters-name");   
     meter.mark();    
    return "ok";  
  }
-- Meters ----------------------------------------------------------------------request             
count = 21055   
    mean rate = 133.35 events/second  
   1-minute rate = 121.66 events/second  
   5-minute rate = 36.99 events/second???
?15-minute?rate?=?13.33?events/second

 

Counters 計(jì)數(shù)器

public String method() {      
  Counter counter = registry.counter("you-counter-name");   
     counter.inc();    
    return "ok";  
  }
-- Counters --------------------------------------------------------------------
???????requestCount             
count = 21051

以上兩種則是我在近期的工作中所使用到的兩種度量工具,用于統(tǒng)計(jì)接口的TPS或者一些需要計(jì)數(shù)的場(chǎng)景.至于其他三種工具感興趣的朋友可以自行測(cè)試用法與上面兩種用法相同,通過(guò)容器的獲取然后調(diào)用即可觸發(fā)監(jiān)控。

數(shù)據(jù)入庫(kù)

Metrics類(lèi)庫(kù)中提供了四種原生將監(jiān)控信息收集的方式分別是console,JMX,HTTP,Slf4j。

示例

@Bean
public ConsoleReporter consoleReporter(MetricRegistry metrics) { 
   return ConsoleReporter.forRegistry(metrics)    
        .convertRatesTo(TimeUnit.SECONDS)   
        .convertDurationsTo(TimeUnit.MILLISECONDS)   
        .build();
???????}

以上幾種不同的數(shù)據(jù)收集方式都是通過(guò)@Bean的形式將實(shí)例注入到容器之中,其根據(jù)設(shè)定好的時(shí)間自動(dòng)運(yùn)行.不便于我們進(jìn)行數(shù)據(jù)的入庫(kù)管理或計(jì)算。

我在實(shí)際應(yīng)用中實(shí)現(xiàn)了數(shù)據(jù)收集接口,自定義了入庫(kù)邏輯,將收集到的數(shù)據(jù)按照規(guī)定的頻率進(jìn)行入庫(kù),便于平臺(tái)上進(jìn)行展示,或于系統(tǒng)內(nèi)部做相關(guān)業(yè)務(wù)應(yīng)用。

public class DemoReport extends ScheduledReporter {  
  private static final Logger log = LoggerFactory.getLogger(DemoReport.class);  
  /**  
   * Called periodically by the polling thread. Subclasses should report all the given metrics.    
 */  
  @Override  
  public void report(SortedMap<String, Gauge> gauges, SortedMap<String, Counter> counters, SortedMap<String, Histogram> histograms, SortedMap<String, Meter> meters, SortedMap<String, Timer> timers){      
  System.out.println("gauges = " + gauges);     
   System.out.println("counters = " + counters);   
   System.out.println("histograms = " + histograms);     
   System.out.println("meters = " + meters);     
   meters.entrySet().forEach(item -> {      
      String key = item.getKey();
      System.out.println("key = " + key);     
      Meter value = item.getValue(); 
      printMeter(value);   
     });  
      System.out.println("timers = " + timers); 
???????   }

}

 

啟動(dòng)監(jiān)控

當(dāng)以上前置操作完成之后,只需在啟動(dòng)類(lèi)處獲取對(duì)應(yīng)的收集工具實(shí)例,調(diào)用其start方法便能夠進(jìn)行所需的指標(biāo)監(jiān)控。

public static void main(String[] args) {  
     ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);
     ConsoleReporter bean = run.getBean(ConsoleReporter.class);  
?    bean.start(5, TimeUnit.SECONDS);   
???????  }

 

注意項(xiàng)

1.將收集的開(kāi)關(guān)放在啟動(dòng)類(lèi)不便于項(xiàng)目的管理可以通過(guò)配置文件和@PostConstrust注解的搭配將開(kāi)關(guān)放入到配置文件中,亦可以通過(guò)接口調(diào)用的方式實(shí)現(xiàn)開(kāi)關(guān)。

2.Metric類(lèi)庫(kù)中單一的工具是已經(jīng)封裝完成的單例,而MetricRegistry是中心容器,并且所有的工具都需要注冊(cè)到容器中才能使用,所以也應(yīng)該讓其實(shí)例保持單例。

3.在多節(jié)點(diǎn)情況下各個(gè)節(jié)點(diǎn)之間并不互通,需人工的處理各個(gè)節(jié)點(diǎn)間數(shù)據(jù)的邏輯問(wèn)題。

獲取相關(guān)資料
下載地址將會(huì)發(fā)送至您填寫(xiě)的郵箱
相關(guān)新聞
水文SL651協(xié)議解析
2025-01-17
JT/T808 協(xié)議解析
2025-01-10
環(huán)保HJ212-2017協(xié)議介紹開(kāi)發(fā)
2025-01-03
  • 在線客服
  • 電話(huà)咨詢(xún)
  • 微信
  • 短視頻
  • 日韩AV高清无码一二三区| 大香蕉之人妻的诱惑| 亚洲中文字幕视频p| 日韩欧美一级精品久久| 亚洲色图-综合| 密臀在线视频观看视频| 午夜蜜臀Av一区二区三区| 日韩伦理亚洲精品| 国产乱人伦偷精品视频AAA| 亚洲色图无码视频深夜福利 | 日韩大胆自拍| 2021國產精品成人免費視頻| 亚州一区二区三区下载| 久久亚洲精品无码a∨| 精品中文字幕在线观看| 乱人伦人妻中文字幕不卡| 欧美性爱视频在线观看| 久久国产精品-国产精品| 日本欧美操屄视频?| 河东区| 亚洲午夜成人精品无码浴室| 国产高清一区二区三区视频| 人人妻人人爽人人艹| 久久亚洲电影精品| 激情久久激情中文| 无码人妻免费—区二区三| 免费A级毛片无码A∨中文字幕下...| 淫色人妻女| 青青青91精品国产综合在线| 免费无高潮片60分钟观看| 人妻人人揉人人躁人人| 日韩欧美在线视频国产| 亚洲国产成人精品女人久久久久| 婷丁六月综合| 丰满人妻在线| 欧美人与动牲交a欧| 不卡中文一二三区| 深夜蜜桃久久久| 国产成人免费AV不卡| 久久久成人另类| 五月婷婷六月婷|