Нужна помощь в понимании statsd
Я использую statsd и datadog и рубиновую библиотеку statsd-tool. Моя конечная цель - отслеживать количество зарегистрированных пользователей.
Поэтому я выбираю тип метрики для измерения, и в своем приложении rails я увеличивал метрику при входе в систему и уменьшал при выходе из системы, например customer.session.count:+1|g
,
Но чтобы соответствовать уже существующим вошедшим в систему пользователям, я написал небольшую команду curl, которая использует datadog api
установить значение датчика на указанное значение.
Проблема в том, что когда кто-то входит в систему или выходит из системы, значение падает до -1
или же +1
,
Я не могу понять как.
Теория, которая у меня есть, - это то, что датчик посылает последнее значение, когда оно не обновляется в течение следующего интервала очистки. Но когда мы используем команду curl отдельно, она обновляется, но затем, когда включается рубин, невозможно узнать ранее обновленное значение, когда значение датчика будет отправлено агентом data-dog, потому что агент data-dog в постановочная коробка не знает значения. Таким образом, чтобы заставить его работать, либо должен быть код Ruby, который делает эквивалент сценария curl, либо разверните код, а затем вручную выполните настройку curl в стадии подготовки и, наконец, в рабочей коробке. Имеет ли эта теория смысл?
Это запрос 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'
Рубиновые коды:
#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