性能監控Java Metrics 度量包

      網友投稿 738 2022-05-30

      前言

      簡介

      舉例說明

      總結

      前言

      簡介

      舉例說明

      總結

      前言

      前幾天因為需要,折騰了一下 Java Metrics。發現之前的文章中并沒有寫過這個。

      本著要把所有看到的性能相關的話題都要涉及的目的,在這里也要寫一下。

      簡介

      Metrics的官網首頁簡單的很,里面只有這么段描述:

      Metrics is a Java library which gives you unparalleled insight into what your code does in production.

      Metrics provides a powerful toolkit of ways to measure the behavior of critical components in your production environment.With modules for common libraries like Jetty, Logback, Log4j, Apache HttpClient, Ehcache, JDBI, Jersey and reporting backends like Graphite, Metrics provides you with full-stack visibility.

      也就是說這個工具包可以讓你在生產環境中產生度量的一些數據,并且支持不同的輸出方式。

      它可以度量代碼中關鍵組件,響應時間、計數器等都可以采集,也可以取操作系統信息。

      它的基本類型有如下幾種:

      看下官網的文檔結構,就知道它能干多少事了,英文不錯的,可以看下 https://metrics.dropwizard.io/4.0.0/。

      舉例說明

      來看一個 Meter 的例子:

      /** * Meter * 作用:度量速率(例如,tps) * Meters會統計最近1分鐘(m1),5分鐘(m5),15分鐘(m15),還有全部時間的速率(速率就是平均值)。 */ public class TestMeter { public static void main(String[] args) throws InterruptedException { /** * 實例化一個MetricRegistry,是一個metrics的容器,維護一個MAP */ final MetricRegistry registry = new MetricRegistry(); //因為該類的一個屬性final ConcurrentMap metrics,在實際使用中做成單例就好 /** * 實例化ConsoleReporter,輸出 */ ConsoleReporter reporter = ConsoleReporter.forRegistry(registry) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .build(); reporter.start(3, TimeUnit.SECONDS); //從啟動后的3s后開始(所以通常第一個計數都是不準的,從第二個開始會越來越準),每隔3秒從MetricRegistry鐘poll一次數據 //實例化一個Meter并注冊到容器中去 Meter meterTps = registry.meter(MetricRegistry.name(TestMeter.class, "request", "tps")); //將該Meter類型的指定name的metric加入到MetricsRegistry中去 System.out.println("執行與業務邏輯"); //模擬數據 while (true) { meterTps.mark(); //總數以及m1,m5,m15的數據都+1 Thread.sleep(500); } } }

      上面完整的示例代碼都有注釋,就不一一解釋了。輸出如下:

      -- Meters ---------------------------------------------------------------------- com.zee.metrics.zeemetrics.TestMeter.request.tps count = 12 mean rate = 2.00 events/second 1-minute rate = 2.00 events/second 5-minute rate = 2.00 events/second 15-minute rate = 2.00 events/second

      這就可以統計這個請求在這段時間內訪問了多少次,也就是 TPS。但是也不能老在 console 里看呀。

      性能監控之 Java Metrics 度量包

      還是放到圖形化的界面中看比較好,這里用的是 influxDB+Grafana,在 influxDB 中創建一個 database。

      [gaolou@7dgroup2 ~]$ influx Connected to http://localhost:8086 version 1.6.0 InfluxDB shell version: 1.6.0 > create database mydb; > use mydb; Using database mydb > show MEASUREMENTS >

      其中的 MEASUREMENTS 是空的。

      把數據輸出進去。

      @Bean public Meter requestMeter(MetricRegistry metrics) { return metrics.meter("request"); } @Bean(name = "influxdbReporter") public ScheduledReporter influxdbReporter(MetricRegistry metrics) throws Exception { return InfluxdbReporter.forRegistry(metrics) .protocol(InfluxdbProtocols.http("1.1.1.1", 8086, "admin", "admin", "mydb")) .convertRatesTo(TimeUnit.SECONDS) .convertDurationsTo(TimeUnit.MILLISECONDS) .filter(MetricFilter.ALL) .skipIdleMetrics(false) .build(); }

      select * from request 就看到產生了如下內容。

      再配置下 grafana 中的 data source

      在 dashboard 中加下 panel,選擇 influxdb 數據源,看到列表,選擇想要看的數據表,再在 field 中選擇想要看的列,保存。

      然后在 dashboard 里就可以看到數據了。

      總結

      這個邏輯,在操作中并不困難。但是,從我自己的行業經驗上來看。在研發時就讓他們把要看到的數據做好監控的規劃,最后運維時能如此清晰地展示出來,并最終對判斷生產問題有用,這個過程的溝通成功會非常的高。

      主要是看公司的組織結構是什么樣,如果是全棧的結構會比較容易

      如果是研發運維是分開的團隊,并且相互配合的不好,會相當的痛苦。

      在之前的項目中,有運維問我怎么才能監控到業務性能,我想了下那個公司的背景之后,沉吟良久說了聲:難。

      性能可做的東西并不少,前提是看格局有多大。

      Java JVM 應用性能調優

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:MybatisPlus多數據源配置
      下一篇:Linux系列之安裝Swagger UI教程
      相關文章
      国产av天堂亚洲国产av天堂| 亚洲一级片免费看| 自拍偷自拍亚洲精品第1页| 国产精品亚洲专区无码牛牛| 一本色道久久88—综合亚洲精品| 亚洲国产精品网站久久| 亚洲人成电影在线天堂| 亚洲国产精品一区第二页| 亚洲小说区图片区另类春色| 久久亚洲精品无码播放| 2022中文字字幕久亚洲| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产一区二区三区亚洲综合| 亚洲av午夜国产精品无码中文字| 亚洲人av高清无码| 亚洲av日韩专区在线观看| 亚洲AV网一区二区三区 | 亚洲精华液一二三产区| 亚洲av色香蕉一区二区三区蜜桃| 亚洲欧美成aⅴ人在线观看| 亚洲精品宾馆在线精品酒店| 亚洲av无码片vr一区二区三区 | 亚洲中文无码永久免费| 噜噜综合亚洲AV中文无码| 国产亚洲蜜芽精品久久| 亚洲精品尤物yw在线影院| 中文字幕久久亚洲一区| 国产亚洲色婷婷久久99精品| 亚洲精品成人无限看| 亚洲成A人片在线观看WWW| 亚洲国产精品第一区二区| 久久综合亚洲色一区二区三区| 精品无码一区二区三区亚洲桃色 | 国产成人综合久久精品亚洲| 亚洲AV无码一区二区三区在线观看| 亚洲国产成人久久笫一页| 亚洲一区精品无码| 亚洲好看的理论片电影| 亚洲性无码av在线| 亚洲爆乳精品无码一区二区| 日韩色日韩视频亚洲网站|