Meters用來記錄事件發生的頻率,引用《Java library documentation》:
Meters通過幾種不同的方式來測量事件的發生頻率。平均頻率是事件頻率的平均值。這對細節通常是有用的,但由於它代表了應用程序整個生命週期的總頻率(例如,處理的請求總數除以進程運行的秒數),因此它不能表示最新的情況。幸運的是,Meters還記錄了三種不同的指數加權滑動平均頻率:1,5和15分鐘滑動平均線。就像在正常運行時間或頂端可見的Unix負載平均值一樣。
應用示例
public class RequestProcessor
{
private readonly Meter meter =
Metric.Meter("Errors", Unit.Requests, TimeUnit.Seconds);
public void ProcessRequest()
{
try
{
// do actual processing
}
catch
{
meter.Mark(); // records an error
throw;
}
}
}
Meters還提供跟蹤有限集合中每個條目頻率的能力。例如,您有一個處理一組命令的系統。您想要記錄命令執行的錯誤率。也想知道每種命令的錯誤率。如果命令的數量很大,則手動定義和增加每個Meter可能會很難做。
幸運的是,Meters可以跟蹤你的sub-meters:
public class SetMeterSample
{
private readonly Meter errorMeter = Metric.Meter("Errors", Unit.Errors);
public interface Command { }
public class SendEmail : Command { }
public class ShipProduct : Command { }
public class BillCustomer : Command { }
public class MakeInvoice : Command { }
public class MarkAsPreffered : Command { }
public void Process(Command command)
{
try
{
ActualCommandProcessing(command);
}
catch
{
errorMeter.Mark(command.GetType().Name);
}
}
}
在運行幾個請求之後,文本格式的Meters的輸出如下所示:
Errors
Count = 450 Errors
Mean Value = 35.68 Errors/s
1 Minute Rate = 25.44 Errors/s
5 Minute Rate = 24.30 Errors/s
15 Minute Rate = 24.10 Errors/s
Total Items = 5
Item 0 = 19.56% 88 Errors [BillCustomer]
Count = 88 Errors
Mean Value = 6.98 Errors/s
1Minute Rate = 6.05 Errors/s
5 Minute Rate = 6.01 Errors/s
15 Minute Rate = 6.00 Errors/s
Item 1 = 18.67% 84 Errors [MakeInvoice]
Count = 84 Errors
Mean Value = 6.66 Errors/s
1 Minute Rate = 4.23 Errors/s
5 Minute Rate = 3.89 Errors/s
15 Minute Rate = 3.83 Errors/s
Item 2 = 20.22% 91 Errors [MarkAsPreffered]
Count = 91 Errors
Mean Value = 7.22 Errors/s
1 Minute Rate = 5.38 Errors/s
5 Minute Rate = 5.24 Errors/s
15 Minute Rate = 5.21 Errors/s
Item 3 = 19.78% 89 Errors [SendEmail]
Count = 89 Errors
Mean Value = 7.06 Errors/s
1 Minute Rate = 4.92 Errors/s
5 Minute Rate = 4.67 Errors/s
15 Minute Rate = 4.62 Errors/s
Item 4 = 21.78% 98 Errors [ShipProduct]
Count = 98 Errors
Mean Value = 7.77 Errors/s
1 Minute Rate = 4.86 Errors/s
5 Minute Rate = 4.50 Errors/s
15 Minute Rate = 4.43 Errors/s
正如你所看到的,總體錯誤率被記錄下來,但也記錄了每個命令的錯誤率。