Apache Kafka. Потоковая обработка и анализ данных. Apache Kafka. Потоковая обработка и анализ данныхСерия Бестселлеры OReilly
Скачать 7.59 Mb.
|
263 количество.файлов.сегментов.журнала.на.диске.для.данного.раздела..Он.удобен. для.отслеживания.ресурсов,.как.и.показатель.размера.разделов. Таблица 10.13. Показатели запроса Название Управляемый компонент (MBean) JMX Размер.раздела kafka.log:type=Log,name=Size,topic=TOPICNAME,partition=0 Количество.сегментов. журнала kafka.log:type=Log,name=NumLogSegments,topic=. TOPICNAME,partition=0 Начальное.смещение. журнала kafka.log:type=Log,name=LogEndOffset,topic=. TOPICNAME,partition=0 Конечное.смещение. журнала kafka.log:type=Log,name=LogStartOffset,topic=. TOPICNAME,partition=0 Показатели.конечного.и.начального.смещения.журнала.представляют.собой.мак- симальное.и.минимальное.смещения.сообщений.в.данном.разделе.соответственно.. Следует.отметить,.однако,.что.разница.между.этими.числами.не.обязательно.соот- ветствует.числу.сообщений.в.разделе,.поскольку.сжатие.журналов.может.вызвать. появление.«пропущенных».смещений,.удаленных.из.раздела.в.результате.посту- пления.более.новых.сообщений.с.тем.же.ключом..При.некоторых.конфигурациях. для.разделов.может.оказаться.полезен.мониторинг.этих.смещений..Один.из.по- добных.сценариев.использования.—.обеспечение.более.точного.соответствия.меток. даты/времени.смещениям,.благодаря.чему.клиенты-потребители.легко.могут.от- катывать.смещения.на.конкретный.момент.(хотя.благодаря.появившемуся.в.Kafka. 0.10.1.индексному.поиску.по.времени.это.потеряло.свое.значение). Показатели недореплицированных разделов Существует показатель уровня раздела, говорящий о том, является ли раздел недореплицированным. В целом он не слишком полезен в повседневной работе из-за очень большого числа требующих отслеживания параметров. Намного легче контролировать количество недореплицированных разделов в масштабах брокера, используя утилиты командной строки (описаны в главе 9) для выявления конкретных недореплицированных разделов. Мониторинг JVM Помимо.показателей.для.брокера.Kafka.следует.контролировать.стандартный. набор.показателей.для.всех.серверов.и.самой.виртуальной.машины.Java.(JVM).. Благодаря.этому.вы.сможете.получить.оповещение.о.возникших.проблемных.си- туациях,.например,.росте.активности.сборщика.мусора,.отрицательно.влияющей. на.производительность.брокера..Благодаря.им.вы.также.сможете.понять.причину. изменения.показателей.далее.по.конвейеру,.в.брокере. 264 Глава 10 • Мониторинг Kafka Сборка мусора Для.JVM.критически.важно.наблюдать.за.процессом.сборки.мусора.(GC)..Какие. именно.Java-компоненты.необходимо.отслеживать.для.получения.этой.инфор- мации,.очень.зависит.от.используемого.JRE.(Java.Runtime.Environment),.а.также. конкретных.настроек.GC..В.табл..10.14.показано,.какие.компоненты.использовать. в.случае.JRE.Oracle.Java.1.8.со.сборкой.мусора.G1. Таблица 10.14. Показатели сборки мусора G1 Название Управляемый компонент (MBean) JMX Полных.циклов.GC java.lang:type=GarbageCollector,name=G1.Old.Generation Молодых.циклов.GC java.lang:type=GarbageCollector,name=G1.Young.Generation Обратите.внимание.на.то,.что.в.терминах.сборки.мусора.«старый».(Old).и.«пол- ный».(Full).—.одно.и.то.же..Для.каждого.из.этих.показателей.необходимо.от- слеживать.два.атрибута.—. CollectionCount .и. CollectionTime CollectionCount представляет.собой.число.циклов.GC.соответствующего.типа.(полный.или.моло- дой).с.момента.запуска.JVM.. CollectionTime .—.это.продолжительность.времени. (в.миллисекундах),.потраченного.на.этот.тип.сборки.мусора.с.момента.запуска. JVM..Будучи.по.своей.сути.счетчиками,.эти.показатели.могут.использоваться.си- стемой.показателей.для.вывода.конкретного.числа.циклов.и.времени,.потраченных. на.сборку.мусора.за.единицу.времени..Их.можно.применять.также.для.получения. средней.длительности.цикла.GC,.хотя.при.нормальном.функционировании.это. особой.пользы.не.приносит. У.каждого.из.этих.показателей.есть.атрибут. LastGcInfo ..Это.составное.значение,. имеющее.пять.полей.и.содержащее.информацию.о.последнем.цикле.GC.для.опи- санного.компонентом.типа.сборки.мусора..Самое.важное.из.этих.полей.—.значение. duration ,.указывающее.длительность.последнего.цикла.GC.(в.миллисекундах).. Остальные.значения.атрибута.( GcThreadCount ,. id ,. startTime .и. endTime ).носят. информационный.характер.и.не.особо.полезны..Важно.отметить,.что.увидеть. длительность.всех.циклов.GC.с.помощью.этого.атрибута.нельзя.в.силу.нерегуляр- ности,.в.частности,.молодых.циклов.GC. Мониторинг операционной системы из Java JVM.может.предоставить.некоторую.информацию.об.операционной.системе.с.по- мощью.компонента. java.lang:type=OperatingSystem ..Однако.это.неполная.инфор- мация,.не.отражающая.все,.что.необходимо.знать.о.системе,.на.которой.работает. брокер..В.ее.составе.есть.два.полезных.атрибута,.данные.по.которым.можно.собрать. тут,.но.непросто.получить.в.операционной.системе:. MaxFileDescriptorCount и. OpenFileDescriptorCount MaxFileDescriptorCount .представляет.собой.максимально. допустимое.для.JVM.число.открытых.дескрипторов.файлов.. OpenFileDescriptorCount соответствует.числу.открытых.в.данный.момент.дескрипторов..Дескрипторы.будут. Показатели брокеров Kafka 265 открываться.для.каждого.сегмента.журнала.и.сетевого.подключения,.и.их.число. станет.быстро.расти..Если.сетевые.подключения.не.закрываются.должным.образом,. то.их.количество,.разрешенное.для.брокера,.быстро.исчерпается. Мониторинг ОС JVM.не.способна.предоставить.всю.необходимую.нам.информацию.об.операцион- ной.системе..Поэтому.необходимо.собирать.показатели.не.только.от.брокера,.но. и.от.самой.операционной.системы..Большинство.систем.мониторинга.предостав- ляют.агенты,.способные.собрать.намного.больше.информации.об.операционной. системе,.чем.вам.может.теоретически.понадобиться..Основное,.что.нужно.отсле- живать,.—.использование.ресурсов.CPU,.оперативной.памяти,.дисков,.дисковых. операций.ввода/вывода.и.сети. Что.касается.использования.CPU,.то.необходимо.как.минимум.следить.за.усред- ненной.загрузкой.системы..Этот.показатель.представляет.собой.отдельное.зна- чение,.отражающее.относительную.загрузку.процессоров..Кроме.того,.он.может. пригодиться.для.получения.загрузки.CPU,.разбитой.по.типам..В.зависимости. от.метода.сбора.данных.и.конкретной.операционной.системы.вам.могут.быть.до- ступны.все.или.часть.процентных.отношений.следующих.категорий.загрузки.CPU. (с.помощью.приведенных.аббревиатур): us .—.процессорное.время,.потраченное.в.пользовательском.адресном.пространстве; sy .—.процессорное.время,.потраченное.в.адресном.пространстве.ядра; ni .—.процессорное.время,.потраченное.на.фоновые.процессы; id .—.время.бездействия.процессора; wa .—.время.ожидания.процессором.дисков; hi .—.процессорное.время,.потраченное.на.обработку.аппаратных.прерываний; si .—.процессорное.время,.потраченное.на.обработку.программных.прерываний; st .—.процессорное.время,.потраченное.на.ожидание.гипервизора. Что такое системная нагрузка Многим известно, что системная нагрузка — это степень использования CPU системы, но немногие знают, как она измеряется. Средняя нагрузка — число ра- ботоспособных процессов, ожидающих выполнения процессором. Linux включает в их число также потоки выполнения, находящиеся в состоянии непрерываемого сна (uninterruptible sleep state), например, ожидающие выполнения дисковых операций. Нагрузка представлена в виде трех чисел: среднего количества за последнюю минуту, последние 5 минут и 15 минут. В системе с одним CPU зна- чение 1 означает, что система загружена на 100 % и какой-нибудь поток всегда ожидает выполнения. В системе с несколькими CPU соответствующее 100%-ной загрузке значение будет равно числу CPU в системе. Например, если в системе 24 процессора, то средняя нагрузка, равная 24, соответствует 100%-ной загрузке. 266 Глава 10 • Мониторинг Kafka Брокер.Kafka.использует.для.обработки.запросов.значительные.ресурсы.CPU.. Поэтому.при.мониторинге.Kafka.важно.отслеживать.загрузку.CPU..Учет.опера- тивной.памяти.менее.важен.для.самого.брокера,.поскольку.Kafka.обычно.запуска- ется.с.относительно.небольшим.размером.кучи.JVM..Он.использует.для.функций. сжатия.относительно.небольшое.количество.памяти.вне.кучи,.но.бо'льшая.часть. системной.памяти.оставляется.для.кэша..Тем.не.менее.лучше.отслеживать.ис- пользование.оперативной.памяти,.чтобы.другие.приложения.не.мешали.брокеру.. Стоит.также.наблюдать.за.объемом.общей.и.свободной.памяти.подкачки,.чтобы. убедиться,.что.эта.память.не.задействуется. Что.касается.Kafka,.диск,.безусловно,.важнейшая.подсистема..Все.сообщения. сохраняются.на.него,.так.что.производительность.Kafka.сильно.зависит.от.про- изводительности.дисков..Очень.важно.отслеживать.использование.пространства. и.индексных.дескрипторов.(индексные.дескрипторы.—.это.объекты.метаданных. файлов.и.каталогов.в.файловых.системах.Unix).на.дисках,.чтобы.не.исчерпать.дис- ковое.пространство..Это.особенно.важно.для.разделов,.в.которых.хранятся.данные. Kafka..Необходимо.также.следить.за.статистикой.операций.дискового.ввода/выво- да,.чтобы.гарантировать.эффективное.использование.дисков..Следите.по.крайней. мере.за.статистикой.дисков,.на.которых.хранятся.данные.Kafka:.числом.операций. записи.и.чтения.в.секунду,.средними.размерами.очередей.на.чтение.и.запись,. средним.временем.ожидания.и.эффективностью.использования.диска.в.процентах. Наконец,.следите.за.использованием.сети.на.брокерах..Этот.показатель.представ- ляет.собой.просто.входящий.и.исходящий.сетевой.трафик,.обычно.указываемый. в.битах.в.секунду..Не.забывайте,.что.каждый.входящий.в.брокер.Kafka.бит.означает. соответствующее.коэффициенту.репликации.темы.число.битов.исходящих.данных. при.отсутствии.потребителей..В.зависимости.от.количества.потребителей.входя- щий.сетевой.трафик.может.оказаться.на.порядки.больше.исходящего..Не.забывайте. об.этом.при.задании.пороговых.значений.для.оповещения. Журналирование Любое.обсуждение.мониторинга.будет.неполным.без.упоминания.журналирова- ния..Подобно.множеству.приложений,.брокер.Kafka.мгновенно.забьет.диск.жур- нальными.сообщениями,.если.только.ему.разрешить..Чтобы.извлечь.из.журналов. полезную.информацию,.необходимо.включить.правильные.механизмы.журнали- рования.на.нужных.уровнях..Простая.запись.всех.сообщений.на.уровне. INFO .даст. множество.важной.информации.о.состоянии.брокера..Полезно.будет,.однако,.от- делить.несколько.механизмов.журналирования,.чтобы.получить.более.компактный. набор.файлов.журналов. Существует.два.механизма.журналирования,.записывающих.информацию.в.от- дельные.файлы.на.диске..Первый.—. kafka.controller .на.уровне. INFO ,.он.служит. для.получения.информации.конкретно.о.контроллере.кластера..В.каждый.момент. времени.только.один.брокер.может.быть.контроллером,.следовательно,.записывать. Мониторинг клиентов 267 в.эти.журналы.данные.будет.всегда.только.один.брокер..Его.информация.включает. данные.о.создании.и.изменении.темы,.изменении.состояния.брокера,.а.также.такие. операции.кластера,.как.выбор.предпочтительной.реплики.и.перемещения.разде- лов..Второй.механизм.журналирования.—. kafka.server.ClientQuotaManager ,.тоже. уровня. INFO ..Он.используется.для.отображения.сообщений,.связанных.с.квотами. на.операции.генерации.и.потребления..Это.полезная.информация,.но.в.главном. файле.журнала.брокера.она.будет.только.мешать. Не.помешает.также.занести.в.журнал.информацию.о.состоянии.потоков.сжатия. журналов..Не.существует.отдельного.показателя,.отражающего.состояние.этих.по- токов,.и.сбой.сжатия.одного.раздела.может.полностью.застопорить.потоки.сжатия. журналов,.причем.пользователь.не.получит.никакого.оповещения.об.этом..Для.вы- вода.информации.о.состоянии.этих.потоков.необходимо.включить.механизмы. журналирования. kafka.log.LogCleaner ,. kafka.log.Cleaner .и. kafka.log.LogClea- nerManager .на.уровне. DEBUG ..Эта.информация.включает.данные.о.сжатии.каждого. из.разделов,.включая.размер.и.число.сообщений..При.обычном.функционировании. сведений.не.так.уж.много,.так.что.можно.включить.это.журналирование.по.умол- чанию,.не.опасаясь.утонуть.в.информации. Будет.полезно.включить.еще.некоторые.виды.журналирования.при.отладке.про- блем.с.Kafka..Например,. kafka.request.logger ,.на.уровне. DEBUG .или. TRACE ..Он. заносит.в.журнал.информацию.обо.всех.отправленных.брокеру.запросах..На.уров- не. DEBUG .данный.журнал.включает.конечные.точки.соединений,.хронометраж. запросов.и.сводную.информацию..На.уровне. TRACE .—.также.информацию.о.теме. и.разделе.—.практически.всю.информацию.запроса,.за.исключением.содержимого. самого.сообщения..На.любом.из.этих.уровней.он.генерирует.значительный.объем. данных,.так.что.включать.его.рекомендуется.только.для.отладки. Мониторинг клиентов Все.приложения.требуют.мониторинга..У.приложений,.реализующих.клиенты. Kafka,.производители.или.потребители,.имеются.соответствующие.показатели.. В.этом.разделе.мы.будем.говорить.об.официальных.клиентских.библиотеках.Java,. хотя.и.в.других.реализациях.должны.быть.доступны.свои.показатели. Показатели производителя Новый.клиент-производитель.Kafka.существенно.повысил.компактность.имею- щихся.показателей,.сделав.их.доступными.в.виде.атрибутов.небольшого.числа. управляемых.компонентов.(mbeans)..А.предыдущая.версия.клиента-производи- теля.(более.не.поддерживаемая).предоставляла.более.подробную.информацию. по.большинству.показателей.за.счет.большего.числа.управляемых.компонентов. (в.ней.было.больше.процентных.показателей.и.различных.скользящих.средних).. 268 Глава 10 • Мониторинг Kafka В.результате.суммарно.охватывалась.бо'льшая.«площадь.поверхности»,.но.поиск. аномальных.значений.был.затруднен. Все.показатели.производителя.содержат.идентификатор.клиента-производителя. в.названии.компонента..В.приведенных.примерах.он.заменен.на. CLIENTID ..В.случа- ях,.когда.название.компонента.содержит.идентификатор.брокера,.этот.идентифи- катор.заменен.на. BROKERID ..Названия.тем.заменены.на. TOPICNAME ..Пример.приведен. в.табл..10.15. Таблица 10.15. Управляемые компоненты показателей производителя Kafka Название Управляемый компонент (MBean) JMX В.целом. по.производителю kafka.producer:type=producer-metrics,client-id=CLIENTID Для.отдельного. брокера kafka.producer:type=producer-node-metrics,client-id=. CLIENTID,node-id=node-BROKERID Для.отдельной. темы kafka.producer:type=producer-topic-metrics,client-id=. CLIENTID,topic=TOPICNAME У.каждого.из.компонентов.показателей.в.табл..10.15.есть.несколько.атрибутов,. предназначенных.для.описания.состояния.производителя..Конкретные.наиболее. полезные.атрибуты.описаны.в.следующем.разделе..Прежде.чем.двигаться.дальше,. убедитесь,.что.хорошо.понимаете.семантику.работы.производителя,.описанную. в.главе.3. Показатели производителя в целом Компоненты.показателей.производителей.в.целом.имеют.атрибуты,.описывающие. все,.начиная.с.размеров.пакетов.сообщений.и.заканчивая.использованием.буферов. памяти..Хотя.все.эти.показатели.применяются.при.отладке,.лишь.немногие.из.них. используются.регулярно.и.лишь.пара.из.этих.немногих.заслуживает.мониторинга. и.настройки.оповещений..Обратите.внимание:.хотя.мы.будем.обсуждать.показате- ли,.представляющие.собой.средние.значения.(заканчиваются.на. -avg ),.существуют. также.максимальные.значения.всех.показателей.(заканчиваются.на. -max ),.полезные. лишь.в.некоторых.ситуациях. Определенно.имеет.смысл.настроить.оповещение.для.атрибута. record-error-rate Этот.показатель.всегда.должен.быть.равен.0,.и.если.он.больше.нуля,.значит,.про- изводитель.отменяет.сообщения,.которые.пытается.отправить.брокерам.Kafka.. Для.производителя.задаются.число.попыток.повтора.и.пауза.между.ними,.по. истечении.которых.сообщения,.называемые.тут.записями,.будут.отменяться.. Можно.также.отслеживать.атрибут. record-retry-rate ,.но.он.не.так.важен,.как. частота.ошибок,.поскольку.повторы.отправки.свидетельствуют.о.нормальном. функционировании. Мониторинг клиентов 269 Еще.один.показатель,.для.которого.стоит.настроить.оповещение,.—. request- latency-avg ..Он.представляет.собой.среднюю.длительность.отправки.запроса.от. производителя..Вам.лучше.определить.эталонное.значение.этого.параметра.при. нормальном.функционировании.и.установить.оповещение.при.его.превышении.. Повышение.времени.задержки.запроса.означает.замедление.запросов.от.произ- водителей..Причина.может.быть.в.проблемах.с.сетью.или.на.брокерах..В.любом. случае.речь.идет.о.проблеме.с.производительностью,.вызывающей.приостановки. и.другие.неполадки.в.приложении-производителе. Помимо.этих.важных.показателей.не.помешает.знать.объемы.трафика.отправля- емых.производителем.сообщений..Эту.информацию.можно.получить.в.трех.раз- личных.разрезах.с.помощью.трех.атрибутов..Атрибут. outgoing-byte-rate .говорит. о.трафике.сообщений.в.байтах.в.секунду.. record-send-rate .описывает.трафик. в.терминах.числа.сгенерированных.сообщений.в.секунду..Наконец,. request-rate позволяет.узнать.число.отправленных.от.производителей.брокерам.запросов. в.секунду..И,.конечно,.каждое.сообщение.состоит.из.определенного.числа.байтов.. Эти.показатели.отнюдь.не.станут.лишними.на.инструментальной.панели.вашего. приложения. Почему бы не воспользоваться ProducerRequestMetrics? Существует компонент для показателя ProducerRequestMetrics, с помощью кото- рого можно получить как процентили задержки запроса, так и несколько скольз- ящих средних частоты запросов. Почему же его не рекомендуется использовать? Проблема в том, что этот показатель выдается отдельно для каждого потока производителя. В приложениях, в которых по соображениям производительности используется несколько потоков, согласование этих показателей может оказаться непростой задачей. Обычно достаточно атрибутов, предоставляемых единым общим компонентом для производителя. Существуют.также.показатели,.описывающие.размеры.записей,.запросов.и.пакетов.. С.помощью. request-size-avg .можно.получить.средний.размер.запросов,.отправля- емых.брокерам.производителями,.в.байтах..С.помощью. batch-size-avg .—.средний. размер.отдельного.пакета.сообщений,.состоящего.по.умолчанию.из.сообщений,. предназначенных.для.отдельного.раздела.темы,.в.байтах.. record-size-avg .пока- зывает.средний.размер.отдельной.записи.в.байтах..В.случае.применения.произ- водителя.с.одной.темой.эти.показатели.предоставляют.полезную.информацию. о.сгенерированных.сообщениях..Если.используются.производители.с.несколькими. темами,.например.MirrorMaker,.их.информативность.снижается..Помимо.этих.трех. показателей,.существует. records-per-request-avg ,.описывающий.среднее.число. сообщений.в.отдельном.запросе.от.производителя. Последний.из.рекомендуемых.атрибутов.общих.показателей.производителей.—. record-queue-time-avg ..Он.представляет.собой.среднее.время.(в.миллисекундах),. |