日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Yammer Metrics,一种监视应用程序的新方法

發(fā)布時間:2023/12/3 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Yammer Metrics,一种监视应用程序的新方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當(dāng)您運行諸如Web應(yīng)用程序之類的長期應(yīng)用程序時,最好了解一些關(guān)于它們的統(tǒng)計信息,例如,服務(wù)的請求數(shù),請求持續(xù)時間或活動請求數(shù)。
但是還有一些更通用的信息,例如內(nèi)部集合的狀態(tài),代碼的某些部分被執(zhí)行了多少次,運行狀況檢查(例如數(shù)據(jù)庫可用性)或與外部系統(tǒng)的任何類型的連接。
所有這些工具化都可以通過使用本機JMX或使用模塊化項目(例如Metrics)來實現(xiàn)度量標(biāo)準提供了一種強大的方法來衡量關(guān)鍵組件的行為,并將其報告給各種系統(tǒng),例如JConsole , 系統(tǒng)控制臺 , Ganglia , Graphite , CSV或通過Web服務(wù)器提供。 要安裝Metrics ,我們僅需添加指標(biāo)依賴項。 在此示例中,我們將使用Maven。

<dependencies><dependency><groupId>com.yammer.metrics</groupId><artifactId>metrics-core</artifactId><version>2.2.0</version></dependency> </dependencies>

現(xiàn)在是時候向我們的代碼中添加一些指標(biāo)了。 在指標(biāo)中,我們可以使用6種類型的指標(biāo):

  • 量規(guī) :離散值的瞬時測量。
  • 計數(shù)器 :可以遞增和遞減的值。 可以在隊列中使用,以監(jiān)視掛起作業(yè)的剩余數(shù)量。
  • 儀表 :測量一段時間內(nèi)事件的發(fā)生率。 您可以指定費率單位,事件范圍或事件類型。
  • 直方圖 :測量數(shù)據(jù)流中值的統(tǒng)計分布。
  • 計時器 :測量執(zhí)行一段代碼所需的時間及其持續(xù)時間的分布。
  • 健康檢查 :顧名思義,它集中了我們服務(wù)對外部系統(tǒng)的健康檢查。

因此,讓我們編寫一個非常簡單的應(yīng)用程序(實際上它是一個控制臺應(yīng)用程序),它將查詢發(fā)送到Google搜索系統(tǒng)。 我們將測量請愿數(shù)量,發(fā)送給Google的字符數(shù)量,搜索到的最后一個單詞以及一個計時器,以測量發(fā)送請求和接收響應(yīng)的速度。

將應(yīng)用度量的主要類稱為MetricsApplication ,它負責(zé)連接到Google并發(fā)送輸入的單詞。

public class MetricsApplication {Counterprivate final Counter numberOfSendCharacters = Metrics.newCounter(MetricsApplication.class, 'Total-Number-Of-Characters');Meterprivate final Meter sendMessages = Metrics.newMeter(MetricsApplication.class, 'Sent-Messages', 'Send', TimeUnit.SECONDS);Timerprivate final Timer responseTime = Metrics.newTimer(MetricsApplication.class, 'Response-Time');private LinkedList<String> historyOfQueries = new LinkedList<String>();{GaugeMetrics.newGauge(MetricsApplication.class, 'lastQuery', new Gauge<String>() {@Overridepublic String value() {return historyOfQueries.getLast();}});}public void sendQuery(String message) throws FailingHttpStatusCodeException, MalformedURLException, IOException {updateMetrics(message);TimerContext timerContext = responseTime.time();sendQueryToGoogle(message);timerContext.stop();}private void sendQueryToGoogle(String message) throws FailingHttpStatusCodeException, MalformedURLException, IOException {WebClient webClient = new WebClient();HtmlPage currentPage = webClient.getPage('http:www.google.com');Get the query input textHtmlInput queryInput = currentPage.getElementByName('q');queryInput.setValueAttribute(message);Submit the form by pressing the submit buttonHtmlSubmitInput submitBtn = currentPage.getElementByName('btnG');currentPage = submitBtn.click();}private void updateMetrics(String message) {numberOfSendCharacters.inc(message.length());sendMessages.mark();historyOfQueries.addLast(message);}}

我們可以看到的第一件事是計數(shù)器實例。 此計數(shù)器將計算應(yīng)用程序整個生命周期中發(fā)送給Google的字符數(shù)(同時您也不要停止它)。

下一個屬性是一個計量器,用于測量一段時間內(nèi)發(fā)送查詢的速率。 然后,我們有了一個計時器, 它對sendQueryToGoogle方法調(diào)用及其隨時間的分布進行評分。 最后是一個LinkedList,用于存儲所有發(fā)送的查詢。 該實例將用于返回執(zhí)行的最后一個查詢,并用于量規(guī)返回最后插入的元素。

注意,在每個度量中,我們都設(shè)置了一個類,該類將用作jconsole中的文件夾。 此外,提供了一個標(biāo)簽以用作文件夾內(nèi)的名稱。

讓我們看一下具有先前配置的jconsole的屏幕截圖,并執(zhí)行三個搜索:

默認情況下,所有指標(biāo)都可以通過JMX看到。 但是我們當(dāng)然可以將測量結(jié)果報告給控制臺 , http服務(wù)器 , Ganglia或Graphite 。

還要注意,在此示例中,我們將業(yè)務(wù)代碼和指標(biāo)代碼混合在一起。 如果您打算使用
生產(chǎn)代碼中的指標(biāo)我建議您盡可能將指標(biāo)邏輯放入AOP中。

我們已經(jīng)了解了一種無需直接使用JMX即可監(jiān)視我們的應(yīng)用程序的簡便方法。 還請記住, Metrics附帶了一些內(nèi)置指標(biāo),用于檢測HttpClient , JDBI , Jetty , Jersey , Log4j , Logback或Web應(yīng)用程序 。

參考: Yammer Metrics,這是一種由JCG合作伙伴 Alex Soto 監(jiān)控您的應(yīng)用程序的新方法,位于One Jar To Rule Them All博客中。

翻譯自: https://www.javacodegeeks.com/2012/12/yammer-metrics-a-new-way-to-monitor-your-application.html

總結(jié)

以上是生活随笔為你收集整理的Yammer Metrics,一种监视应用程序的新方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。