统计量规的用例是什么?

时间:2018-08-25 23:10:38

标签: python statsd

我正在努力了解statsd中量规的概念。请说明它的工作原理,以及一些有用的示例。

doc对我来说不是很清楚

  

设置测量值。

     stat:要设置的量规的名称。值:当前的值   量规。 rate:采样率,0到1之间的一个浮点数。只会发送   记录此时间百分比。 statsd服务器不使用   采样率考虑到量规。小心使用。增量:是否或   不要将其视为增量值或绝对值。见规   输入以获取更多详细信息。

1 个答案:

答案 0 :(得分:1)

仪表简单地反映系统的状态,或者根本不希望汇总的某些指标。

让我给你举一些例子。

1)在您的程序中,您可以使用一些特定于语言的API来知道此进程正在使用多少内存。就像在Golang中,我们可以做到:

var stat runtime.MemStats
runtime.ReadMemStats(&stat)
heapAlloc := memStat.HeapAlloc
heapInuse := memStat.HeapInuse
heapObjects := memStat.HeapObjects
statsd.Gauge("machine01.memory.heap.alloc", heapAlloc)
statsd.Gauge("machine01.memory.heap.inuse", heapInuse)
statsd.Gauge("machine01.memory.heap.objects, heapObjects)

为简单起见,您可以在代码调用运行时API时将这些指标视为内存使用情况。因此,您可以使用仪表将其发送到StatsD,因为它们中的每个仪表都可以在10秒内完美地向您显示内存使用情况,这是StatsD中的默认刷新周期。而且,您无需对这些指标使用任何汇总方法,因为汇总(例如sum)没有任何意义。

除了上述情况外,还有很多使用情况,例如CPU使用率,操作系统的系统负载,进程中的线程数,服务器中的联机连接数,当前活动事务数在您的交易系统中。

2)有时,我们还可以使用仪表来跟踪发生事件的时间。喜欢,

res, err := something()
if err != nil {
   statsd.Gauge("machine01.something.error", time.Now().Unix())
}

因此,一旦发生错误,您可以通过查看Graphite仪表板的行来感知。而且,您可以通过查看线的形状来分析并获得出现的频率。