2015-01-08 2 views
4

Как узнать, какой процент данных в потоке Kinesis читатель уже обработал? Я знаю, что у каждого читателя есть порядковый номер контрольной точки для каждого шага, и я также могу получить значение StartSequenceNumber каждого осколка из потока описания, однако я не знаю, насколько далеко в моих данных читатель в данный момент (я не знать последний порядковый номер осколка).Состояние читателя потока кинезитов

Я думал о том, чтобы получить самый последний итератор для каждого осколка и получить порядковый номер последней записи, однако это не работает, если нет новых данных, так как я получил последний итератор.

Любые идеи или инструменты для этого?

Спасибо!

+0

Знаете ли вы, сколько записей было отправлено в поток? –

ответ

1

Предлагаю вам выполнить индивидуальные показатели или метрики в ваших приложениях для отслеживания этого.

Например, вы можете добавить время отправки сообщения в сообщение Kinesis и обработать сообщение, записать разницу во времени в качестве пользовательской метрики AWS CloudWatch. Это указывает на то, насколько близко ваш потребитель находится перед потоком.

Вы также можете записать количество нажатых сообщений (при нажатии на приложение) и сообщения, полученные от потребителя Kinesis. Если вы сравните их с диаграммой на CloudWatch, вы увидите, что кривые примерно следуют друг за другом, указывая на то, что потребитель делает хорошую работу, чтобы не отставать от рабочей нагрузки.

Вы могли бы также попробовать мониторинга вашего Kinesis потребителя, чтобы увидеть, как часто она лениво ждет записей (то есть, никаких результатов не возвращаются Kinesis, предполагая, что в передней части потока и все записи обрабатываются)

Также обратите внимание, что нет способа отслеживать «процент», обработанный в потоке, поскольку сообщения Kinesis истекают через 24 часа (поэтому общее количество сообщений постоянно перекатывается). Также нет прямой (API) функции для подсчета количества сообщений внутри вашего потока (если вы не записали это, как указано выше).

1

Если вы используете KCL, вы можете сделать это, сравнив IncomingRecords с встроенными метриками CloudWatch Kinesis с RecordsProcessed, который является настраиваемой метрикой, опубликованной KCL.

Затем вы выбираете временной диапазон и интервал, скажем, 1 день.

Затем вы получите следующий тип графиков:

enter image description here

Как вы можете видеть, что было гораздо больше записей, чем добавлены обработаны. Посмотрев на значения в каждой точке, вы точно будете знать, находится ли ваш процессор позади или нет.

Смежные вопросы