代码之家  ›  专栏  ›  技术社区  ›  Jerry

statsd gauge的用例是什么?

  •  1
  • Jerry  · 技术社区  · 6 年前

    我正在努力理解statsd中规范的概念。请解释它是如何工作的,并举例说明什么时候它可能有用。

    doc 我不太清楚

    仪表。速率:采样速率,介于0和1之间的浮动。只会发送 记录这段时间的百分比。statsd服务器不接受 不认为这是一个delta值或绝对值。看仪表 键入以获取更多详细信息。

    1 回复  |  直到 6 年前
        1
  •  2
  •   pfctgeorge    6 年前

    量表只是反映系统的状态,或者是一些根本不想聚合的度量。

    我给你举几个例子。

    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使用率、操作系统的系统负载、进程中的线程数、服务器中的联机连接数、交易系统中当前的活动事务数。

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

    所以一旦错误发生,你可以通过观察你的石墨仪表板的线条来感知。此外,还可以通过查看线的形状来分析和获取引用的频率。