.net应用监控类库Metrics.NET之Counters

计数器由64位整数表示,可以递增或递减

通过调用静态Metric类或MetricsContext子类上的适当方法注册计数器。有关详细信息,请参见《metrics grouping & organization》。

简单计数器样例

public class Cache
{
    private static readonly Counter counter =
        Metric.Counter("ItemsInCache", Unit.Items);

    private void AddItems(object[] items)
    {
        counter.Increment(items.Length);
    }

    private void AddItem(object item)
    {
        counter.Increment();
    }

    private void RemoveItem(object item)
    {
        counter.Decrement();
    }
}

给一个集合计数

计数器还提供跟踪有限集合中每个条目的计数器的能力。例如,您有一个处理一组命令的系统。Process方法中,您需要计算已处理命令的总数,但也希望每个命令类型都有一个计数器。如果命令的数量很大,则手动定义和增加每个计数器可能会很难做。

幸运的是,计数器可以跟踪你的子计数器:

public class SetCounterSample
{
    private readonly Counter commandCounter = 
        Metric.Counter("Command Counter", Unit.Custom("Commands"));

    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)
    {
        this.commandCounter.Increment(command.GetType().Name);

        // do actual command processing
    }
}

在运行几个请求之后,文本格式的计数器的输出如下所示:

    Command Counter

             Count = 2550 Commands

       Total Items = 5

            Item 0 = 20.90%   533 Commands [BillCustomer]

            Item 1 = 19.22%   490 Commands [MakeInvoice]

            Item 2 = 19.41%   495 Commands [MarkAsPreffered]

            Item 3 = 20.98%   535 Commands [SendEmail]

            Item 4 = 19.49%   497 Commands [ShipProduct]

正如你所看到的,总计数被记录下来(2550个命令已经被执行),但也记录了每个命令的总数和百分比。

译自:https://github.com/Recognos/Metrics.NET/wiki/Counters

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章