中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Metrics中怎么監控應用程序的性能

發布時間:2021-08-05 17:25:15 來源:億速云 閱讀:148 作者:Leah 欄目:大數據

本篇文章為大家展示了Metrics中怎么監控應用程序的性能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一 度量類型

Metrics提供5種基本的度量類型:Gauges, Counters, Histograms, Meters和 Timers

Gauge

Gauge是最簡單的度量類型,只有一個簡單的返回值,他用來記錄一些對象或者事物的瞬時值。

比如,我們類型為Gauge的計數器來記錄某個服務目前開通的城市個數

Metric.Gauge("Service Cities Count", () => Cities.Count, new Unit("個"));

Counters

Counter是一個簡單64位的計數器,他可以增加和減少。

比如我們可以定義兩個Counter類型的計數器,用來統計所有服務請求數目,和目前正在處理的請求總數。

/// <summary>
/// keep the total count of the requests/// </summary>private readonly Counter totalRequestsCounter = Metric.Counter("Requests", Unit.Requests);/// <summary>
/// count the current concurrent requests/// </summary>private readonly Counter concurrentRequestsCounter = Metric.Counter("SampleMetrics.ConcurrentRequests", Unit.Requests);

這樣,在我們請求處理開始的時候,同時將這兩個計數器自增。

this.concurrentRequestsCounter.Increment(); // increment concurrent requests counterthis.totalRequestsCounter.Increment(); // increment total requests counter

當某一個請求處理完成之后,將目前正在處理的請求減一

this.concurrentRequestsCounter.Decrement(); // decrement number of concurrent requests

這種計數器也可以用來統計諸如當前有多少人在線,或者服務器中有多少處于有效期內的session

Meters

Meter是一種只能自增的計數器,通常用來度量一系列事件發生的比率。他提供了平均速率,以及指數平滑平均速率,以及采樣后的1分鐘,5分鐘,15分鐘速率。

比如需要統計請求的速率,比如統計平均每分鐘內有多少次請求進來。只需要定義一個metric

/// <summary>
/// measure the rate at which requests come in/// </summary>private readonly Meter meter = Metric.Meter("Requests", Unit.Requests,TimeUnit.Seconds);

在處理請求的地方,調用Mark方法即可。

this.meter.Mark(); // signal a new request to the meter

再比如,要測量服務出錯的概率,比如每小時出錯多少次。可以定義一個metric。

/// <summary>
/// measure the rate of service exception/// </summary>private readonly Meter errorMeter = Metric.Meter("Error", Unit.Errors, TimeUnit.Hours);

這樣,在處理請求的時候,如果出現異常了,調用一下errorMeter的Mark方法即可。

this.errorMeter.Mark();// signal a new error to the meter

Histograms

Histrogram是用來度量流數據中Value的分布情況,Histrogram可以計算最大/小值、平均值,方差,分位數(如中位數,或者95th分位數),如75%,90%,98%,99%的數據在哪個范圍內。

比如,我們想度量,所有傳進來服務的請求參數的長度分布。那么,可以定義一個histogram。

/// <summary>
/// keep a histogram of the input data of our request method 
/// </summary>private readonly Histogram histogramOfData = Metric.Histogram("ResultsExample", Unit.Items);

然后在請求的地方,調用其Update方法來更新值。

this.histogramOfData.Update(request.length, methodName); // update the histogram with the input data

Timer

Timer是Histogram跟Meter的一個組合,比如要統計當前請求的速率和處理時間。

就可以定義一個Timer:

/// <summary>
/// measure the time rate and duration of requests/// </summary>private readonly Timer timer = Metric.Timer("Requests", Unit.Requests);

在使用的時候,調用timer的NewContext即可。

using (this.timer.NewContext(i.ToString())) // measure until disposed{
    ...
}

二 度量數據的輸出

收集了這么多數據之后,我們需要把數據時實的動態展示或者保存起來。Metric提供了多種的數據報告接口。包括自帶的Metrics.NET.FlotVisualization, 以及輸出到專業的系統監控Graphite,輸出到開源,分布式,時間序列的中InfluxDB,或者輸出到ElasticSearch中。配置起來也非常簡單。比如如果要直接在http頁面上展現,只需要在初始化的時候,設置合適的EndPoint即可:

Metric.Config
    .WithHttpEndpoint("http://localhost:1234/metrics/")
    .WithAllCounters()
    .WithInternalMetrics()
    .WithReporting(config => config
        .WithConsoleReport(TimeSpan.FromSeconds(30))

然后在瀏覽器中輸入 http://localhost:1234/metrics/,就可以看到各種采集的準實時各種度量信息:

Metrics中怎么監控應用程序的性能

上面自帶的性能DashBoard略顯簡陋。 通常,我們一般會將這些實時采集的數據存儲到分布式時序數據庫InfluxDB中,然后利用開源的圖表控件Grafana來實時展現這些數據,比如,可以制作想下面這樣的,動態的性能準實時監控系統:


上述內容就是Metrics中怎么監控應用程序的性能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平度市| 夏河县| 江都市| 长阳| 桃园县| 崇义县| 安吉县| 石林| 正宁县| 郑州市| 精河县| 桂林市| 沈阳市| 吴川市| 积石山| 随州市| 托克逊县| 张北县| 霍州市| 星子县| 广州市| 威远县| 布拖县| 美姑县| 大关县| 冕宁县| 华蓥市| 重庆市| 乐山市| 临沂市| 集安市| 喀喇| 阳新县| 梁山县| 微博| 杭锦旗| 广汉市| 泗洪县| 苏尼特右旗| 永昌县| 资兴市|