Как Tencent использует Prometheus и Grafana для настройки системы мониторинга за 10 минут

Как Tencent использует Prometheus и Grafana для настройки системы мониторинга за 10 минут

17 февраля 2022 г.

Alluxio предоставляет комплексную систему метрик для мониторинга статуса мастера, исполнителя и клиента Alluxio. Система метрик Alluxio поддерживает различные виды метрик, например. встроенный приемник JSON и приемник Prometheus. Пользователи и разработчики могут легко создать собственный приемник Alluxio, внедрив интерфейс приемника.


Кроме того, Alluxio предоставляет страницу метрик в веб-интерфейсе, показывающую некоторую ключевую информацию об Alluxio, такую ​​как пропускная способность в байтах и ​​объем памяти. Однако если вам нужен более гибкий и универсальный мониторинг, потребуется дополнительная работа.


В этом блоге рассказывается, как Tencent использует Prometheus и Grafana для настройки системы мониторинга для Alluxio за 10 минут.


Как работает система показателей Alluxio


Следующая структура изображает систему метрик Alluxio.


Типы метрик


Показатели Alluxio генерируются разными источниками и потребляются приемниками. Система метрик периодически опрашивает источники и передает отчеты с метриками в приемники.


Есть два типа метрик.


  • Показатели кластера: собираются по рабочим и клиентским данным, затем рассчитываются ведущим мастером. Метрики кластера предоставляют моментальные снимки кластера Alluxio.

  • Метрики процессов: собираются каждым процессом Alluxio, включая основные метрики, рабочие метрики и клиентские метрики.


Шаблоны именования показателей


В целом, метрики Alluxio следуют двум шаблонам именования. Первый предназначен для основных метрик, которые состоят из Master, metricName и некоторых тегов (необязательно). Например, Master.GetFileInfoOps. Второй предназначен для метрик, не являющихся главными, и состоит из processType, metricName, тегов и hostnName. Например, ниже приведены метрики openExistingFile для worker.


Тип процесса — worker, metricName — openExistingFile, за которым следуют три тега: пользователь, местоположение UFS и тип UFS. Последняя часть — hostName работника.



Поток метрик от работника к мастеру


Поскольку мастеру необходимо собирать метрики от рабочих процессов и клиентов для расчета метрик кластера, клиенты и рабочие процессы должны сообщать свои показатели мастеру. Ниже представлена ​​схема потока метрик от воркера к мастеру. Рабочие и клиенты отправляют метрики главному серверу Alluxio через сердцебиение. Блок справа — рабочий процесс, а левый — главный процесс. Идет справа налево.



Процесс пульса находится под контролем BlockMasterSync, а метрики и другая информация о воркере передаются RpcClient, затем сервер Rpc получает пульс и обрабатывает метрики от воркеров с помощью MetricMaster. Метрики хранятся в MetricsStore, а позже будут агрегированы и рассчитаны.


Метрики клиентов обрабатываются аналогичным образом. Дополнительные сведения см. в исходном коде Alluxio.


Как реализовать собственный приемник Alluxio


Alluxio поддерживает множество типов раковин. Приемник указывает, куда доставляются метрики. Например, у Alluxio есть приемник Http JSON, который включен по умолчанию, поэтому мы можем просматривать информационные панели метрик Alluxio в веб-интерфейсе Alluxio в формате JSON. Кроме того, Alluxio предоставляет удобные и гибкие интерфейсы приемника для разработчиков и пользователей, которые могут реализовать собственный приемник.


Пассивный приемник и Активный приемник


Приемники, которые поддерживает Alluxio, перечислены ниже. В целом, эти стоки можно разделить на две категории: пассивные стоки и активные стоки.



Разница между этими двумя видами приемников заключается в том, как мы получаем метрики:


  • Активно: левый скриншот — это consolesink. Если мы включим consolesink, метрики будут распечатаны в стандартный выходной файл, например, master.out или worker.out. Consolesink периодически сообщает о метриках, поэтому вы можете получить метрики в любое время. С точки зрения Alluxio, это активный приемник.

  • Пассивный: на правом снимке экрана показан приемник HTTP JSON, который является пассивным приемником. Пассивная раковина работает как услуга. Мы можем получить метрики только тогда, когда отправляем запросы на сервер. Например, если мы получим доступ к расположению metrics/json на рабочем сервере Alluxio, мы сможем получить следующие метрики в формате JSON.


Как работают ConsoleSink и Prometheus Sink 


Структура ConsoleSink показана ниже. Мы можем найти ConsoleReporter в ConsoleSink. Он планирует отчет, который сообщает о показателях на регулярной основе. Мы можем видеть методы ScheduledReporter в отчете, что различные типы метрик печатаются в определенном формате.




Раковина Prometheus работает совершенно по-другому. Нет ScheduledReporter для отчета о метриках, поэтому нам нужно получить метрики самостоятельно.


Пассивный приемник должен реализовать метод getHandler, чтобы можно было запустить главный и рабочий процессы. Например, в методе StartServingWebServer главного процесса к веб-серверу добавляется обработчик Prometheus. Мы можем получить доступ к определенному местоположению главного веб-сервера, затем мы можем получить метрики в формате Prometheus.


Например. МастерПроцесс




Реализовать приемник


Первое, что нам нужно сделать, это определить, какой тип стока мы хотим реализовать, пассивный или активный. Например, XmlSink в Alluxio печатает метрики по определенному пути, поэтому мы знаем, что это активный приемник. Как и в случае с ConsoleSink, нам нужно реализовать интерфейс приемника, а также создать XmlReporter для создания отчетов о метриках в формате XML. Это дает нам нестандартную раковину. После этого нам нужно включить наш приемник, добавив класс XmlSink, который мы только что определили, в metrics.properties. Кроме того, в этом формате мы можем добавить к нашему приемнику некоторые свойства.


conf/metrics.properties



Точно так же, если вы хотите реализовать пассивный приемник, вы можете обратиться к приемнику JSON или приемнику Prometheus.


Как настроить мониторинг Alluxio за 10 минут


Веб-интерфейс пользователя Alluxio


На вкладке метрик веб-интерфейса Alluxio мы можем отслеживать состояние кластера Alluxio и получать ключевую информацию об Alluxio. Несмотря на то, что приборная панель удобна, иногда она может сбивать с толку (скриншот справа). Кроме того, если нам нужна дополнительная информация об Alluxio или инструментальная панель с большим количеством визуальных элементов, нам потребуется другое решение для мониторинга, которое требует дополнительных усилий.





Мы используем приемник Prometheus для соединения Alluxio и Grafana, так как и Alluxio, и Grafana хорошо поддерживают Prometheus. Во-первых, Prometheus собирает метрики с серверов Alluxio, преобразует их в данные временных рядов и сохраняет их. Затем сервер Grafana получает данные этого временного ряда от Prometheus, после чего веб-интерфейс Grafana отобразит метрики на информационных панелях.


Как настроить систему мониторинга


Для настройки этого мониторинга требуется всего четыре шага:


  • [ ] Установите и запустите Prometheus и сервер Grafana. Достаточно просто следовать инструкциям, используя конфигурацию по умолчанию.

  • [ ] Добавлены задания Alluxio в Prometheus, которые могут находить сервер Alluxio и автоматически очищать метрики. В части Grafana мы предоставляем шаблон панели инструментов Grafana, чтобы мы могли повторно использовать его для быстрой настройки панели инструментов Alluxio.

  • [ ] Загрузите и импортируйте шаблон панели мониторинга.

  • [ ] Измените переменные шаблона, чтобы сделать его нашей собственной панелью инструментов.

[Здесь] (https://www.alluxio.io/resources/videos/setting-up-monitoring-system-for-alluxio-with-prometheus-and-grafana-in-10-minutes/) (16:03) это демонстрационное видео о том, как импортировать шаблон панели мониторинга.


Сначала нам нужно добавить задания Alluxio в Prometheus (см. [документацию] Alluxio (https://docs.alluxio.io/os/user/edge/en/operation/Metrics-System.html#grafana-web-ui-with -prometheus) в разделе метрик). Теперь добавим два задания в Prometheus. Один из них — мастер Alluxio, а другой — рабочий Alluxio. Здесь нам нужно записать job_name, которое используется для импорта панели управления Grafana.



Версии компонентов в демонстрационном видео следующие:


  • Версия Прометея: 2.22.2

  • Версия Графана: 7.5.6

  • Версия Alluxio: 2.5.0-3

Ниже приведены службы, настроенные в демонстрационном видео. В нашем кластере есть два узла, рабочий узел и главный узел:


  • Сервер Prometheus @ мастер: 9090

  • Сервер Grafana @ рабочий: 3000

  • Аллюксио Мастер @ мастер

  • Аллюксио Рабочий @ рабочий

Как видно на скриншотах ниже, в кластере 8 живых воркеров, и система мониторинга работает хорошо, с метриками в разных панелях.




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


  • Ключевые показатели ввода-вывода Alluxio

  • Чтение локальных и удаленных и живых работников…

  • Место хранения

  • Используемое пространство и используемое пространство UFS…

  • Рабочие блоки

  • Кэшированные блоки и удаленные блоки…

  • Логические операции

  • Операции монтирования и прикрепленный файл…

  • Операции с метаданными Alluxio

  • Блокировка стоимости сердцебиения и получение статуса стоимости…

  • Блоки и операции AsyncCache

  • AsyncCacheSuccessedBlocks и AysncCacheFailedBlocks …

  • Мастер памяти JVM

  • Основная память кучи и общая память…

Резюме


Внедрив Prometheus и Grafana, мы создали более гибкую, динамичную и простую в использовании систему мониторинга для Alluxio.


Использованная литература



  • [Информационные панели Grafana] (https://grafana.com/grafana/dashboards/13467)

Об авторе


Pan Liu


  • Инженер по большим данным в Tencent

  • Отвечает за распределенные вычисления с упором на проекты с открытым исходным кодом, такие как Alluxio и Presto.

Также опубликовано здесь: https://www.alluxio.io/blog/how-to-set-up-monitoring-system-for-alluxio-with-prometheus-and-grafana-in-10-minutes/



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE