0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Не зная цифр, невозможно эффективно управлять бизнесом, а по-настоящему взвешенные решения принимаются только на основе сбора и анализа метрик. В этой статье поговорим, как собирает метрики<strong>Prometheus</strong>и почему стандартные базы данных не всегда подходят для этих целей.</p>
1
<p>Не зная цифр, невозможно эффективно управлять бизнесом, а по-настоящему взвешенные решения принимаются только на основе сбора и анализа метрик. В этой статье поговорим, как собирает метрики<strong>Prometheus</strong>и почему стандартные базы данных не всегда подходят для этих целей.</p>
2
<p>В настоящее время Prometheus - одна из наиболее быстрых и мощных систем, предназначенных для сбора аналитики. Архитектура системы состоит из отдельных компонентов, которые сообщаются друг с другом по протоколу http. По сути, всё устроено модно-молодёжно и с web-интерфейсами, плюс настраивается в yaml-конфигах.</p>
2
<p>В настоящее время Prometheus - одна из наиболее быстрых и мощных систем, предназначенных для сбора аналитики. Архитектура системы состоит из отдельных компонентов, которые сообщаются друг с другом по протоколу http. По сути, всё устроено модно-молодёжно и с web-интерфейсами, плюс настраивается в yaml-конфигах.</p>
3
<p>Если интересуют подробности, официальную документацию можно почитать<a>здесь</a>.</p>
3
<p>Если интересуют подробности, официальную документацию можно почитать<a>здесь</a>.</p>
4
<h2>А, может, лучше использовать MySQL?</h2>
4
<h2>А, может, лучше использовать MySQL?</h2>
5
<p>Может. Но только в том случае, если у вас небольшой проект, недостаточно знаний в аналитике и ваши данные обновляются нечасто. Во всех остальных случаях стандартные системы управления БД не обеспечат требуемой надёжности и производительности. Продвинутые штуки типа индексов и транзакций - это, конечно, круто, но они лишь замедлят работу БД, а ведь от неё требуется максимальная скорость и безотказность при записи метрик.</p>
5
<p>Может. Но только в том случае, если у вас небольшой проект, недостаточно знаний в аналитике и ваши данные обновляются нечасто. Во всех остальных случаях стандартные системы управления БД не обеспечат требуемой надёжности и производительности. Продвинутые штуки типа индексов и транзакций - это, конечно, круто, но они лишь замедлят работу БД, а ведь от неё требуется максимальная скорость и безотказность при записи метрик.</p>
6
<p>Именно поэтому для систем аналитики создана концепция<strong>time series database</strong>. Речь идёт о системе хранения простых значений, которые привязаны к определённым моментам времени. При реализации данного подхода у любой БД будут 2 измерения - сами значения и момент времени. В результате появляется возможность заранее планировать алгоритмы поиска и обработки значений, плюс выжимать максимум по надёжности и скорости работы. То есть пространство состояний, в которых может находиться данная СУБД, описано хорошо и является предельно малым.</p>
6
<p>Именно поэтому для систем аналитики создана концепция<strong>time series database</strong>. Речь идёт о системе хранения простых значений, которые привязаны к определённым моментам времени. При реализации данного подхода у любой БД будут 2 измерения - сами значения и момент времени. В результате появляется возможность заранее планировать алгоритмы поиска и обработки значений, плюс выжимать максимум по надёжности и скорости работы. То есть пространство состояний, в которых может находиться данная СУБД, описано хорошо и является предельно малым.</p>
7
<p>Это неплохой подход к внутренней архитектуре БД, позволяющий быстро записывать много разных метрик, а также выполнять хитрые статистические запросы для получения этих метрик в динамике. А раз именно эти операции и являются единственным предназначением Prometheus, то и выполняются они предельно быстро.<strong>Вывод очевиден</strong>: раз обычные СУБД рассчитаны на расширенный спектр задач по обработке и записи данных, они всегда будут проигрывать по скорости, если речь идёт о работе с наборами метрик.</p>
7
<p>Это неплохой подход к внутренней архитектуре БД, позволяющий быстро записывать много разных метрик, а также выполнять хитрые статистические запросы для получения этих метрик в динамике. А раз именно эти операции и являются единственным предназначением Prometheus, то и выполняются они предельно быстро.<strong>Вывод очевиден</strong>: раз обычные СУБД рассчитаны на расширенный спектр задач по обработке и записи данных, они всегда будут проигрывать по скорости, если речь идёт о работе с наборами метрик.</p>
8
<h2>Интересная особенность Prometheus</h2>
8
<h2>Интересная особенность Prometheus</h2>
9
<p>По дефолту в Prometheus предлагается особенная модель сбора статистики. Обычно источники данных обращаются в централизованное хранилище данных, однако<strong>Prometheus сам опрашивает</strong>всех участников системы, забирая данные. Это так называемый "обратный" подход. У него есть плюсы: - у вас всегда существует единая точка конфигурирования системы сбора статистики; - в этой точке вы можете описать полный список сервисов, у которых необходимо собирать метрики.</p>
9
<p>По дефолту в Prometheus предлагается особенная модель сбора статистики. Обычно источники данных обращаются в централизованное хранилище данных, однако<strong>Prometheus сам опрашивает</strong>всех участников системы, забирая данные. Это так называемый "обратный" подход. У него есть плюсы: - у вас всегда существует единая точка конфигурирования системы сбора статистики; - в этой точке вы можете описать полный список сервисов, у которых необходимо собирать метрики.</p>
10
<p>Конечно, это удобно. Но есть и минусы: - для каждого сервиса требуется специальный интерфейс; - Prometheus может обращаться к этому интерфейсу со своими запросами, но это уже трудоёмко, неудобно и не всегда возможно.</p>
10
<p>Конечно, это удобно. Но есть и минусы: - для каждого сервиса требуется специальный интерфейс; - Prometheus может обращаться к этому интерфейсу со своими запросами, но это уже трудоёмко, неудобно и не всегда возможно.</p>
11
<p>Кроме вышеописанного способа сбора данных, существует и классическая модель, при реализации которой все системы отчитываются в специальный сборщик метрик (демон). Этот сборщик поставляется в качестве отдельной программы, которая работает в паре с самой БД. А уже Prometheus сам его опрашивает на предмет наличия новых значений по привычному алгоритму.</p>
11
<p>Кроме вышеописанного способа сбора данных, существует и классическая модель, при реализации которой все системы отчитываются в специальный сборщик метрик (демон). Этот сборщик поставляется в качестве отдельной программы, которая работает в паре с самой БД. А уже Prometheus сам его опрашивает на предмет наличия новых значений по привычному алгоритму.</p>
12
<p>На картинке ниже сервер Prometheus выполняет опрос целевых объектов и забирает из них метрики (определённые параметры данных объектов). В целях визуализации применяют разные инструменты, к примеру, Grafana:</p>
12
<p>На картинке ниже сервер Prometheus выполняет опрос целевых объектов и забирает из них метрики (определённые параметры данных объектов). В целях визуализации применяют разные инструменты, к примеру, Grafana:</p>
13
<h2>Советы по использованию мониторинга Prometheus</h2>
13
<h2>Советы по использованию мониторинга Prometheus</h2>
14
<p>Prometheus отлично справляется со сбором и бизнес-, и технических метрик. С бизнес-показателями всё просто и понятно - менеджеры ставят задачи, а разработчики реализуют расчёт показателей на сервере и "учат" Prometheus эти показатели собирать и записывать. Именно так реализуется, например, сбор статистических параметров типа выручки, количества заказов, оборота и т. п.</p>
14
<p>Prometheus отлично справляется со сбором и бизнес-, и технических метрик. С бизнес-показателями всё просто и понятно - менеджеры ставят задачи, а разработчики реализуют расчёт показателей на сервере и "учат" Prometheus эти показатели собирать и записывать. Именно так реализуется, например, сбор статистических параметров типа выручки, количества заказов, оборота и т. п.</p>
15
<p>А вот с техническими показателями всё интересней - Prometheus интегрирован с известными облачными сервисами и системами контейнеризации, благодаря чему параметры типа ёмкости дисков и нагрузки на процессоры вы сможете собирать в автоматическом режиме, для чего достаточно будет прописать в конфигурационный файл всего несколько строчек.</p>
15
<p>А вот с техническими показателями всё интересней - Prometheus интегрирован с известными облачными сервисами и системами контейнеризации, благодаря чему параметры типа ёмкости дисков и нагрузки на процессоры вы сможете собирать в автоматическом режиме, для чего достаточно будет прописать в конфигурационный файл всего несколько строчек.</p>
16
<p>А ещё Prometheus очень дружит с Kubernetes - это весьма упрощает работу по сбору и анализу состояний кластера приложений.</p>
16
<p>А ещё Prometheus очень дружит с Kubernetes - это весьма упрощает работу по сбору и анализу состояний кластера приложений.</p>
17
<p>Для отрисовки графиков и анализа данных есть много готовых решений. Разработчики и аналитики смогут без проблем подключить к Prometheus одну из систем построения отчётов и довольно быстро получить готовый отчёт по множеству параметров. А в маркетплейсе MCS вы сможете в несколько кликов инсталлировать современную систему мониторинга на основе Grafana, Alertmanager и Prometheus.</p>
17
<p>Для отрисовки графиков и анализа данных есть много готовых решений. Разработчики и аналитики смогут без проблем подключить к Prometheus одну из систем построения отчётов и довольно быстро получить готовый отчёт по множеству параметров. А в маркетплейсе MCS вы сможете в несколько кликов инсталлировать современную систему мониторинга на основе Grafana, Alertmanager и Prometheus.</p>
18
<p><em>Источник - https://mcs.mail.ru/blog/monitoring-s-pomoshchyu-prometheus-kak-eto-rabotaet.</em></p>
18
<p><em>Источник - https://mcs.mail.ru/blog/monitoring-s-pomoshchyu-prometheus-kak-eto-rabotaet.</em></p>
19
19