РЕДАКТИРОВАТЬ: Я думаю, что я понял проблему.Только время начала должно оставаться неизменным до тех пор, пока накопленное число не будет сброшено, поэтому в моем случае начало дня будет сброшено после полуночи, но время окончания всегда будет текущим временем.Я все еще тестирую это, поэтому я закрою этот вопрос, как только получу больше результатов.
РЕДАКТИРОВАТЬ2: Таким образом, с установленным интервалом времени, который начинается в начале каждого дня и заканчивается в момент отправкиГрафики по-прежнему отображают всплеск при каждом вызове client.create_time_series.Вот пример того, что я ищу (не обращайте внимания на правую ось, цифры должны быть выше, но мои навыки работы с фотошопом не велики): И вот что я сейчас получаю:
Прежде чем я объясню ошибку, вот что я пытаюсь достичь с помощью этой пользовательской метрики мониторинга.Моя программа время от времени регистрирует количество обработанных данных, и я хочу видеть общее число обработанных каждый день.Поэтому я подумал, что кумулятивная метрика - правильный выбор, когда интервал сбрасывается каждый день.Проблема в том, что я не уверен, как этого добиться.
Вот что я делаю.Каждый раз, когда обрабатываются некоторые новые данные, я добавляю их к метрике, используя client.create_time_series(project_name, [series])
, где [series]
содержит один point.value.int64_value
числа данных, обработанных в это время.Теперь у меня проблема с интервалом.Я думал, что интервал должен быть временем начала и конца каждого дня, который, как я думал, будет иметь начало метрики с 0 в конце дня.Итак, я сделал это:
point = series.points.add()
point.value.int64_value = num
startDay = time.mktime(datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0).timetuple())
endDay = time.mktime(datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=0).timetuple())
point.interval.start_time.seconds = int(startDay)
point.interval.start_time.nanos = int((startDay - point.interval.start_time.seconds) * 10**9)
point.interval.end_time.seconds = int(endDay)
point.interval.end_time.nanos = int((endDay - point.interval.end_time.seconds) * 10**9)
client.create_time_series(project_name, [series])
И я получаю эту ошибку:
400 Field timeSeries[0].points[0].interval.end had an invalid value of \"2018-10-04T16:59:59-07:00\": The end time is too far in the future. A point cannot be written more than 5 minutes into the future.
Если я установлю временной интервал только на текущее время, я просто получу кучу всплесков в моемграфик для каждой отправленной метрики.Я хочу видеть одну строку, которая накапливается в течение 1 дня, с 00:00:00 до 23:59:59, а затем снова сбрасывается в 00:00:00.Я хочу, чтобы я мог видеть, сколько данных обрабатывается за один день по отношению к каждому второму дню, чтобы я мог видеть, есть ли какие-либо отклонения в моем процессе.
Так что я думаю, что, возможно, неправильно понял, какнакопительные метрические работы.Есть ли лучший способ добиться того, что я пытаюсь сделать?