Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Скачать 7.59 Mb.
|
270 Глава 10 • Мониторинг Kafka которое.отдельному.сообщению.приходится.ожидать.в.производителе.после.от- правки.его.приложением.и.до.фактической.генерации.его.для.Kafka..После.того. как.приложение.посредством.метода. send .вызовет.клиент-производитель.для.от- правки.сообщения,.производитель.будет.ждать,.пока.не.произойдет.одно.из.двух. событий: наберется.такое.количество.сообщений,.которого.будет.достаточно.для.напол- нения.пакета,.в.соответствии.с.параметром.конфигурации. batch.size ; с.момента.отправки.прошлого.пакета.пройдет.достаточный.промежуток.време- ни,.соответствующий.параметру.конфигурации. linger.ms Любое.из.этих.двух.событий.приведет.к.закрытию.клиентом-производителем.фор- мируемого.в.текущий.момент.пакета.и.отправке.его.брокерам..Проще.всего.сформу- лировать.это.можно.следующим.образом:.для.загруженных.тем.будет.применяться. первое.условие,.а.для.медленных.тем.—.второе..Показатель. record-queue-time-avg показывает,.сколько.времени.занимает.генерация.сообщений,.а.следовательно,. будет.полезен.при.настройке.этих.двух.параметров.конфигурации.с.целью.удов- летворения.требований.вашего.приложения.к.времени.задержки. Показатели уровня брокера и темы Помимо.общих.показателей.производителей.существуют.компоненты.показате- лей.с.ограниченным.набором.атрибутов.для.подключения.к.отдельным.брокерам. Kafka,.а.также.для.каждой.темы,.для.которой.генерируется.сообщение..Эти.по- казатели.в.некоторых.случаях.удобно.использовать.при.отладке,.но.вряд.ли.их. следует.отслеживать.постоянно..Все.атрибуты.этих.компонентов.аналогичны. описанным.ранее.атрибутам.компонентов.общих.показателей.производителей,. и.смысл.их.точно.такой.же,.за.исключением.того,.что.они.относятся.к.отдельному. брокеру.или.теме. Наиболее.полезный.из.показателей.производителей,.относящихся.к.отдельным. брокерам,.—. request-latency-avg ..Дело.в.том,.что.значение.этого.показателя.прак- тически.всегда.постоянно.(при.стабильной.работе.пакетной.отправки.сообщений),. параметр.может.отражать.проблемы.с.подключением.к.конкретным.брокерам.. Остальные.атрибуты,.например,. outgoing-byte-rate .и. request-latency-avg ,.меня- ются.в.зависимости.от.разделов,.для.которых.данный.брокер.является.ведущим.. Это.значит,.что.«должное».значение.настоящих.показателей.в.каждый.момент. времени.может.быть.различным.в.зависимости.от.состояния.кластера.Kafka. Показатели.тем.интереснее,.чем.показатели.брокеров,.но.они.могут.принести. пользу.только.при.использовании.производителей,.работающих.с.более.чем.одной. темой..Кроме.того,.применять.их.на.постоянной.основе.можно,.только.если.произ- водитель.не.работает.с.большим.числом.тем..Например,.MirrorMaker.может.гене- рировать.сотни,.если.не.тысячи.тем..Отслеживать.все.их.показатели.очень.трудно,. а.задать.для.каждого.разумное.пороговое.значение.для.оповещения.практически. Мониторинг клиентов 271 нереально..Как.и.показатели.для.отдельных.брокеров,.показатели.для.отдельных. тем.лучше.всего.задействовать.при.поиске.причин.конкретной.проблемы..Атри- буты. record-send-rate .и. record-error-rate ,.например,.можно.использовать.для. выяснения.того,.к.какой.теме.относятся.отмененные.сообщения.(или.подтверж- дения.того,.что.они.имеются.во.всех.темах)..Кроме.того,.существует.показатель. byte-rate .—.общая.частота.сообщений.темы.(в.байтах.в.секунду). Показатели потребителей Аналогично.новому.клиенту-производителю.новый.клиент-потребитель.в.Kafka. объединяет.множество.показателей.в.атрибуты.всего.лишь.нескольких.компо- нентов.показателей..Из.этих.показателей,.как.и.для.клиента-производителя,.ис- ключены.процентные.показатели.для.задержки.и.скользящие.средние.скорости/ частоты..В.потребителе.в.силу.того,.что.логика.потребления.сообщений.сложнее. простой.отправки.сообщений.брокерам.Kafka,.есть.несколько.дополнительных. показателей.(табл..10.16). Таблица 10.16. Управляемые компоненты показателей потребителя Kafka Название Управляемый компонент (MBean) JMX В.целом. по.потребителю kafka.consumer:type=consumer-metrics,client-id=CLIENTID Диспетчер. извлечения kafka.consumer:type=consumer-fetch-manager-metrics,client-id=CLIENTID Для.отдельной. темы kafka.consumer:type=consumer-fetch-manager-metrics,client- id=CLIENTID,topic=TOPICNAME Для.отдельного. брокера kafka.consumer:type=consumer-node-metrics,client-id=CLIENTID,node- id=node-BROKERID Координатор kafka.consumer:type=consumer-coordinator-metrics,client-id=CLIENTID Показатели диспетчера извлечения В.клиенте-потребителе.компонент.показателя.по.потребителю.в.целом.приносит. меньше.пользы,.поскольку.интересующие.нас.данные.расположены.не.там,.а.в.ком- понентах.диспетчера.извлечения..В.нем.есть.показатели,.относящиеся.к.низко- уровневым.операциям.сети,.а.в.компоненте.диспетчера.извлечения.—.показатели. скоростей.в.байтах,.а.также.частот.запросов.и.записей..В.отличие.от.показателей. клиента-производителя,.предоставляемые.потребителем.показатели.полезны.для. изучения,.но.по.ним.не.имеет.смысла.устанавливать.оповещения. Один.из.атрибутов.показателей.диспетчера.извлечения,.по.которому.имеет.смысл. настроить.мониторинг.и.оповещение,.—. fetch-latency-avg ..Как.и.с.помощью. аналогичного. request-latency-avg .в.клиенте-производителе,.с.его.помощью. 272 Глава 10 • Мониторинг Kafka можно.выяснить,.сколько.времени.занимает.выполнение.запросов.на.извлече- ние.к.брокерам..Проблема.с.оповещением.на.основе.этого.показателя.состоит. в.том,.что.длительность.задержки.определяется.параметрами. fetch.min.bytes и. fetch.max.wait.ms .конфигурации.потребителя..У.медленной.темы.время.задерж- ки.будет.хаотически.меняться,.так.как.иногда.брокер.будет.отвечать.быстро.(когда. сообщения.доступны),.а.иногда.не.будет.отвечать.в.течение. fetch.max.wait.ms .(ко- гда.доступных.сообщений.нет)..При.потреблении.тем.с.более.постоянным.и.на- сыщенным.трафиком.сообщений.может.оказаться.полезно.отслеживать.этот. показатель. Постойте-ка! Никакого отставания? Лучший совет по поводу потребителей — отслеживать их отставание. Так поче- му же мы не рекомендуем мониторинг атрибута records-lag-max компонента диспетчера извлечения? Этот показатель отражает текущее отставание в виде числа сообщений для наиболее отстающего раздела. Здесь наблюдается двойная проблема: указанный атрибут показывает отставание только для одного раздела и зависит от правильного функционирования потре- бителя. Если другого выхода нет, можно воспользоваться им для отслеживания отставания и настроить на его основе оповещение. Но рекомендуется исполь- зовать внешние средства мониторинга отставания, как описывается в разделе «Мониторинг отставания» далее в этой главе. Чтобы.узнать.объемы.обрабатываемого.клиентом-потребителем.трафика.сообще- ний,.необходимо.отслеживать.показатели. bytes-consumed-rate .или. records- consumed-rate ,.а.лучше.и.тот.и.другой..Они.описывают.потребляемый.данным. экземпляром.клиента.трафик.сообщений.в.байтах.в.секунду.и.сообщениях.в.секун- ду.соответственно..Некоторые.пользователи.задают.оповещение.при.минимальных. пороговых.значениях.этих.показателей,.чтобы.получать.уведомление.о.выполне- нии.потребителем.недостаточного.объема.работ..Однако.делать.это.следует. осторожно..Kafka.нацелена.на.разделение.клиентов-потребителей.и.клиентов- производителей.и.предоставляет.им.возможность.работать.независимо.друг.от. друга..Скорость.чтения.сообщений.потребителем.зачастую.зависит.от.того,.рабо- тает.ли.производитель.должным.образом,.так.что.отслеживание.их.на.потребителе. означает.определенные.допущения.относительно.состояния.потребителя..Это.мо- жет.привести.к.ложным.оповещениям.в.клиентах-потребителях. Не.помешает.также.хорошо.представлять.себе.соотношения.байтов.сообщений. и.запросов,.и.диспетчер.извлечения.предоставляет.данные.для.этого..Показатель. fetch-rate .сообщает.число.выполняемых.потребителем.запросов.на.извлечение. в.секунду..Показатель. fetch-size-avg .—.средний.размер.этих.запросов.на.из- влечение.в.байтах..Наконец,.показатель. records-per-request-avg .дает.среднее. число.сообщений.в.каждом.запросе.на.извлечение..Обратите.внимание.на.то,.что. у.потребителя.нет.аналога.показателя. record-size-avg .производителя,.с.помо- Мониторинг клиентов 273 щью.которого.можно.узнать.средний.размер.сообщения..Если.для.вас.это.важно,. его.можно.вычислить.на.основе.других.доступных.показателей.или.перехватить. в.вашем.приложении.после.получения.сообщений.от.клиентской.библиотеки.по- требителя. Показатели уровня брокера и темы Показатели,.предоставляемые.клиентом-потребителем.по.каждому.из.соединений. брокера.и.каждому.из.потребляемых.тем,.как.и.в.случае.с.клиентом-производите- лем,.удобны.для.отладки.проблем.с.потреблением,.но.отслеживать.их.регулярно,. вероятно,.смысла.нет..Как.и.в.случае.с.диспетчером.извлечения,.атрибут. request- latency-avg .компонентов.для.показателей.уровня.брокера.пригоден.лишь.в.не- которых.ситуациях.в.зависимости.от.объема.трафика.сообщений.потребляемых. тем..Показатели. incoming-byte-rate .и. request-rate .представляют.собой.разбиение. показателей.диспетчера.извлечения,.относящихся.к.потребленным.сообщениям,.на. показатели,.выраженные.в.байтах.в.секунду.и.запросах.в.секунду.соответственно.. Их.можно.использовать.для.поиска.причин.проблем.соединения.потребителя. с.конкретным.брокером. Предоставляемые.клиентом-потребителем.показатели.уровня.темы.оказывают- ся.полезны.при.чтении.более.чем.одной.темы..В.противном.случае.они.ничем. не.будут.отличаться.от.показателей.диспетчера.извлечения.и.окажутся.просто. избыточными..В.то.же.время,.если.клиент.потребляет.очень.много.тем.(Kafka. MirrorMaker,.например),.изучать.данные.этих.показателей.будет.непросто..Если. вы.решите.их.собирать,.то.наиболее.важные.из.них.—. bytes-consumed-rate ,. records-consumed-rate .и. fetch-size-avg ..Показатель. bytes-consumed-rate .от- ражает.объемы.прочитанных.из.конкретной.темы.сообщений.в.байтах.в.секунду,. а. records-consumed-rate .—.ту.же.информацию.в.виде.количества.сообщений..По- казатель. fetch-size-avg .представляет.собой.средний.размер.запроса.на.извлечение. для.данной.темы.в.байтах. Показатели координатора потребителя Как.описывалось.в.главе.4,.клиенты-потребители.обычно.работают.в.составе. группы.потребителей..Эта.группа.выполняет.определенные.координационные. действия,.например,.присоединение.новых.участников.и.отправку.брокерам.кон- трольных.сигналов.для.поддержания.состояния.членства.в.группе..Координатор. потребителя.представляет.собой.часть.клиента-потребителя,.отвечающую.за.эти. действия,.и.у.него.есть.свои.показатели..Как.и.других.показателей,.их.очень.много,. но.отслеживать.на.постоянной.основе.имеет.смысл.лишь.несколько.ключевых. Главная.проблема,.с.которой.сталкиваются.потребители.в.результате.выполнения. действий.по.координации,.—.приостановка.потребления.на.время.синхронизации. группы.потребителей..Так.происходит,.когда.экземпляры.потребителей.группы. 274 Глава 10 • Мониторинг Kafka договариваются.о.том,.кто.какие.разделы.будет.потреблять..Время,.которое.это.мо- жет.занять,.зависит.от.числа.потребляемых.разделов..Координатор.предоставляет. атрибут.показателя. sync-time-avg .—.среднее.время.согласования.в.миллисекундах.. Не.помешает.также.информация.из.атрибута. sync-rate ,.представляющего.собой. число.операций.согласования.группы.в.секунду..При.постоянном.составе.группы. потребителей.он.практически.всегда.будет.равен.нулю. Потребителю.для.записи.данных.о.ходе.потребления.сообщений.в.контрольных. точках.приходится.фиксировать.смещения.автоматически.через.равные.промежут- ки.времени.или.вручную,.инициируя.создание.контрольных.точек.из.кода.прило- жения..По.сути,.такая.фиксация.представляет.собой.запросы.на.генерацию.(хотя. тип.запроса.у.них.свой),.поскольку.фиксация.смещения.—.это.просто.сообщение,. генерируемое.в.специальную.тему..У.координатора.потребителя.имеется.атрибут. commit-latency-avg .—.показатель.среднего.времени,.расходуемого.на.фиксацию. смещения..Рекомендуется.отслеживать.это.значение.так.же,.как.отслеживается. время.задержки.запроса.в.производителе..При.желании.можно.выработать.для. себя.эталонное.ожидаемое.значение.этих.показателей.и.задать.разумные.пороговые. значения,.чтобы.получить.уведомление.при.их.превышении. Еще.один.полезный.показатель.координатора.—. assigned-partitions ..Он.пред- ставляет.собой.число.разделов,.назначенных.для.потребления.клиенту-потре- бителю.как.отдельному.участнику.группы.потребителей..Сравнение.значений. этого.показателя.от.различных.клиентов-потребителей.данной.группы.позволяет. оценить.распределение.нагрузки.по.всей.группе..Его.можно.применить.для.поиска. перекосов,.вызванных.проблемами.в.алгоритме,.используемом.координатором.для. распределения.разделов.по.участникам.группы. Квоты Apache.Kafka.умеет.притормаживать.запросы.клиентов.ради.предотвращения.ситу- ации,.когда.один.клиент.перегружает.весь.кластер..Эту.возможность,.выражаемую. в.терминах.объема.трафика,.который.клиент.с.конкретным.идентификатором. может.отправлять.конкретному.брокеру.(в.байтах.в.секунду),.можно.настроить. как.для.клиентов-потребителей,.так.и.для.клиентов-производителей..Существу- ют.параметр.конфигурации.брокера,.задающий.значение.по.умолчанию.для.всех. клиентов,.а.также.возможность.динамического.переопределения.его.на.уровне. клиентов..Когда.брокер.решает,.что.клиент.превысил.квоту,.он.замедляет.его.по- средством.задержки.ответа.ему.на.достаточное.время. Брокеры.Kafka.не.используют.в.ответах.коды.ошибок.для.индикации.того,.что. клиент.притормаживается..Это.значит,.что.суть.происходящего.не.будет.понятна. приложению,.если.оно.не.отслеживает.длительности.притормаживания.клиентов.. Список.показателей,.которые.необходимо.отслеживать,.приведен.в.табл..10.17. Мониторинг отставания 275 Таблица 10.17. Показатели, требующие отслеживания Клиент Название компонента Потребитель bean.kafka.consumer:type=consumer-fetch-manager-metrics,client-id=. CLIENTID,attribute.fetch-throttle-time-avg Производитель bean.kafka.producer:type=producer-metrics,client-id=CLIENTID,.attribute. produce-throttle-time-avg По.умолчанию.квоты.на.брокерах.Kafka.отключены,.но.мониторинг.указанных. показателей.вполне.допустим.независимо.от.того,.используете.вы.сейчас.квоты. или.нет..Их.мониторинг.—.рекомендуемая.практика,.поскольку.в.какой-то.момент. в.будущем.они.могут.оказаться.включены.и.легче.сразу.начать.с.их.мониторинга,. а.не.добавлять.показатели.потом. Мониторинг отставания Самое.важное,.что.требуется.отслеживать.потребителям.Kafka,.—.это.отставание. потребителя..Оно.измеряется.количеством.сообщений.и.представляет.собой. разницу.между.последним.сгенерированным.в.конкретный.раздел.сообщением. и.последним.сообщением,.обработанным.потребителем..Обычно.оно.оценивается. на.предыдущем.этапе,.при.мониторинге.клиента-потребителя,.но.это.один.из.тех. случаев,.когда.возможности.внешнего.мониторинга.намного.превышают.возмож- ности.самого.клиента..Как.упоминалось.ранее,.в.клиенте-потребителе.существует. показатель.отставания,.но.использовать.его.неудобно..Он.отражает.данные.только. по.одному.разделу.—.тому,.который.отстает.больше.всего,.так.что.не.дает.инфор- мации.о.том,.насколько.на.самом.деле.отстает.потребитель..Кроме.того,.он.требует. нормального.функционирования.потребителя,.поскольку.тот.сам.вычисляет.его. при.каждом.запросе.на.извлечение..Если.потребитель.работает.некорректно.или. отключен,.показатель.будет.или.неточен,.или.вообще.недоступен. Предпочтительный.метод.мониторинга.отставания.потребителя.—.использование. внешнего.процесса,.который.может.отслеживать.состояние.как.раздела.на.брокере. (путем.наблюдения.за.последним.сгенерированным.сообщением),.так.и.потреби- теля.(путем.наблюдения.за.последним.смещением,.зафиксированным.группой. потребителей.для.данного.раздела)..Это.дает.объективную.картину,.своевременно. обновляемую.вне.зависимости.от.состояния.самого.потребителя..Подобная.про- верка.должна.проводиться.для.всех.разделов,.которые.читает.группа.потребителей.. Если.потребители.большие,.например.MirrorMaker,.это.может.означать.десятки. тысяч.разделов. В.главе.9.приводилась.информация.по.использованию.утилит.командной.строки. для.получения.информации.о.группах,.включая.зафиксированные.смещения.и.от- ставание..Подобный.мониторинг.отставания,.однако,.связан.с.рядом.проблем.. 276 Глава 10 • Мониторинг Kafka Во-первых,.необходимо.знать,.каков.допустимый.уровень.отставания.для.каждого. раздела..Для.темы,.получающей.100.сообщений.в.час,.необходимо.иное.пороговое. значение,.чем.для.темы,.получающей.10.000.сообщений.в.секунду..Во-вторых,.вы. должны.иметь.возможность.считывать.все.показатели.отставания.в.систему.мо- ниторинга.и.устанавливать.по.ним.оповещения..Если.ваша.группа.потребителей. потребляет.100.000.разделов.из.1500.тем,.задача.будет.не.из.легких. Один.из.способов.снижения.сложности.мониторинга.групп.потребителей.—.ис- пользование.Burrow..Это.приложение.с.открытым.исходным.кодом,.разработанное. компанией.LinkedIn,.обеспечивает.мониторинг.состояния.потребителей.путем. сбора.информации.об.отставании.для.всех.групп.потребителей.кластера.и.подсче- та.единого.показателя.состояния.для.каждой.группы,.информирующего,.функци- онирует.ли.она.должным.образом,.отстает.или.вообще.остановила.работу..Для.это- го.ему.не.требуются.пороговые.значения,.полученные.при.мониторинге.хода. обработки.сообщений.группой.потребителей,.хотя.можно.получить.отставание.по. сообщениям.в.виде.конкретного.числа..В.технологическом.блоге.LinkedIn.( http:// www.bit.ly/2sanKZb ).приводится.обстоятельное.обсуждение.обоснований.и.методо- логии.работы.Burrow..Развертывание.Burrow.—.простой.способ.обеспечения.мо- ниторинга.всех.потребителей.кластера.или.нескольких.кластеров,.его.можно.легко. интегрировать.с.уже.имеющимися.у.вас.системами.мониторинга.и.оповещения. Если.же.других.вариантов.нет,.показатель. records-lag-max .позволит.получить. хотя.бы.неполную.картину.состояния.потребителя..Однако.мы.настоятельно.ре- комендуем.использовать.внешнюю.систему.мониторинга,.например,.Burrow. Сквозной мониторинг Еще.одна.рекомендуемая.для.использования.разновидность.мониторинга,.по- могающая.выяснить,.нормально.ли.функционирует.кластер.Kafka,.—.сквозной. мониторинг..Он.позволяет.взглянуть.на.состояние.кластера.Kafka.с.точки.зрения. клиента..У.клиентов-производителей.и.клиентов-потребителей.есть.показатели,. говорящие.о.наличии.проблем.с.кластером.Kafka,.но.можно.только.догадываться,. из-за.чего.увеличилась.задержка.—.из-за.проблем.с.клиентом,.сетью.или.самой. Kafka..Кроме.того,.если.вы.отвечаете.за.работу.только.кластера.Kafka,.а.не.кли- ентов,.вам.придется.отслеживать.и.функционирование.клиентов.тоже..На.самом. деле.вам.нужно.знать: можно.ли.генерировать.сообщения.для.кластера.Kafka; можно.ли.потреблять.сообщения.из.кластера.Kafka. В.идеальном.мире.можно.было.бы.отслеживать.все.это.для.каждой.темы.отдельно.. Однако.в.большинстве.случаев.неразумно.раздувать.трафик.тем.за.счет.искус- ственной.добавки..Можно,.однако,.по.крайней.мере.получить.ответы.на.данные. вопросы.для.каждого.из.брокеров.кластера,.и.именно.это.делает.Kafka.Monitor. |