Нужна помощь в понимании 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

Поднял проблему на github

0 ответов

Другие вопросы по тегам