我正在努力了解statsd中量规的概念。请说明它的工作原理,以及一些有用的示例。
doc对我来说不是很清楚
设置测量值。
stat:要设置的量规的名称。值:当前的值 量规。 rate:采样率,0到1之间的一个浮点数。只会发送 记录此时间百分比。 statsd服务器不使用 采样率考虑到量规。小心使用。增量:是否或 不要将其视为增量值或绝对值。见规 输入以获取更多详细信息。
答案 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仪表板的行来感知。而且,您可以通过查看线的形状来分析并获得出现的频率。