需要帮助了解statsd

时间:2017-01-05 06:36:10

标签: ruby-on-rails ruby statsd datadog

我正在使用statsd和datadog以及statsd-instrument ruby​​库。我的最终目标是跟踪登录用户的数量。

所以我选择度量标准类型,在我的rails应用程序中,我在登录时递增了指标,在注销时递减,如customer.session.count:+1|g

但是为了匹配已经存在的登录用户,我写了一个小的curl命令,它使用datadog api将量表的值设置为指定的值。

问题是,当有人登录或退出时,该值会降至-1+1

我无法理解。

我的理论是, 当在下一个刷新间隔内未更新时,仪表发送是最新值。但是当我们单独使用curl命令时它会更新,但是当ruby启动时,当data-dog代理发送计量值时,无法知道先前更新的值,因为数据狗代理在登台箱不知道价值。因此,为了使其工作,要么必须使用相当于curl脚本的Ruby代码,要么部署代码,然后在分段中手动执行curl操作,最后在生产框中执行。这个理论有意义吗?

这是卷曲请求:

currenttime=$(date +%s)

curl -X POST -H "Content-Type: application/json" \
  -d "{ \"series\":
            [{\"metric\": \"customer.session.count\",
              \"points\": [[$currenttime, 11042739]],
              \"type\": \"gauge\",
              \"host\":\"s-customer-owner-01\"
            }]
          }" \
 'https://app.datadoghq.com/api/v1/series?api_key=some_key'

Ruby代码:

#login#create

def create
  user = User.find_by(id: params[:user_id])
  if user
    StatsD.gauge('customer.session.count', '+1')
    json: user.to_json, status: 200
  else
    json: {}, status: 401
  end
end

用于注销

# tokens#revoke

def revoke
  token = Token.find_by(user_id: get_id_from_token)
  status = 400
  if token
    StatsD.gauge('customer.session.count', -1)
    status = 200
  end
  json: {}, status: status
end

Raised an issue on github

0 个答案:

没有答案