Что такое Прометей и почему он так популярен? — CloudSavvy ИТ

Графика, показывающая логотип Prometheus

Prometheus — это решение для мониторинга с открытым исходным кодом для сбора и агрегирования метрик в виде данных временных рядов. Проще говоря, каждый элемент в магазине Prometheus — это метрическое событие, сопровождаемое отметкой времени, когда оно произошло.

Prometheus изначально разрабатывался в Soundcloud, но теперь это проект сообщества, поддерживаемый Cloud Native Computing Foundation (CNCF). За последнее десятилетие он быстро приобрел известность, поскольку сочетание функций запросов и облачной архитектуры сделало его идеальным стеком мониторинга для современных приложений.

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

Чем занимается Прометей?

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

Основная единица данных — это «метрика». Каждой метрике присваивается имя, на которое также можно ссылаться, и набор меток. Ярлыки — это произвольные пары данных «ключ-значение», которые можно использовать для фильтрации показателей в вашей базе данных.

Показатели всегда основаны на одном из четырех основных типов инструментов:

  • Счетчик — значение, которое постоянно увеличивается, никогда не уменьшается и не сбрасывается.
  • Датчик — значение, которое может изменяться в любом направлении в любое время.
  • Гистограмма — выборка из нескольких значений, которая обеспечивает сумму всех сохраненных значений, а также количество записанных событий.
  • Сводка — сводка функционирует аналогично гистограмме, но поддерживает настраиваемые квантили для совокупного мониторинга за скользящие периоды времени.

Prometheus определяет текущее значение ваших показателей, используя механизм извлечения данных на основе извлечения. Он будет периодически опрашивать источник данных, поддерживающий каждую метрику, а затем сохранять результат как новое событие в базе данных временных рядов. Контролируемое приложение отвечает за реализацию конечной точки, используемой в качестве источника данных; такие поставщики данных обычно описываются как экспортеры.

Модель на основе вытягивания упрощает интеграцию Prometheus в ваши приложения. Все, что вам нужно сделать, это предоставить совместимую конечную точку, которая поддерживает Текущий значение собираемой метрики. Прометей занимается всем остальным. Хотя это может привести к неэффективности — например, если Prometheus снова опрашивает конечную точку до того, как ее данные изменились, — это означает, что вашему коду не нужно обрабатывать метрическую транспортировку.

Подробнее об экспортерах

Экспортеры несут ответственность за предоставление метрик вашего приложения, готовых для сбора Prometheus. Многие пользователи начнут с простого развертывания Node Exporter, который собирает базовые системные метрики с хоста Linux, на котором он установлен.

Доступен широкий спектр экспортеров, многие из которых предоставляются самим Prometheus или официальными поставщиками сообщества. Независимо от того, отслеживаете ли вы популярный механизм базы данных, такой как MySQL, PostgreSQL и MongoDB, или отслеживаете HTTP-сервер, механизм ведения журнала или шину обмена сообщениями, существует большая вероятность, что экспортер уже существует.

Вы можете отслеживать собственные метрики вашего приложения, написав собственный экспортер. В этом подходе действительно нет ограничений — вы можете фиксировать время, проведенное на целевой странице, объем продаж, регистрации пользователей или что-либо еще, что имеет значение для вашей системы.

Экспортеры — это простые конечные точки HTTP API, поэтому их можно создавать на любом языке программирования. Prometheus предоставляет официальные клиентские библиотеки для Go, Java / Scala, Python и Ruby, которые упрощают инструментирование вашего кода. Инициативы сообщества предоставили неофициальные библиотеки и для большинства других популярных языков.

Запрос данных Прометея

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

Вот пример, отображающий все события memory_consuming за последний час:

потребление_памяти[1h]

В этом примере отображаются только события потребления памяти, записанные за последний час.

Вы можете фильтровать по ярлыку, добавляя пары ключ-значение в фигурные скобки:

потребление_памяти {app = «api»}[1h]

Встроенные функции предоставляют возможности для более точного анализа. Вот пример, который использует функцию rate () для вычисления скорости увеличения метрики memory_consuming за выбранный период времени:

скорость (потребление_памяти[1h])

Доступ к данным Prometheus можно получить через встроенный веб-интерфейс, обычно доступный через порт 9090, или через HTTP API. Последний обеспечивает надежный способ передачи данных из Prometheus в другие инструменты, такие как решения для приборных панелей.

Оповещения

Prometheus поставляется с компонентом Alertmanager, который может отправлять вам уведомления при изменении показателей. Он поддерживает политики на основе правил, которые определяют, когда следует отправлять предупреждение.

Вы можете получать оповещения на свой адрес электронной почты, произвольные HTTP-перехватчики и популярные платформы обмена сообщениями, такие как Slack. Alertmanager включает интегрированную поддержку для агрегирования и отключения повторяющихся предупреждений, поэтому вы не будете перегружены, когда несколько событий произойдут за короткий промежуток времени.

Alertmanager настраивается независимо от основной системы Prometheus. Вы настраиваете правила оповещения в Prometheus, определяя условия, при которых метрика должна отправлять оповещение в Alertmanager. Затем последний компонент решает, следует ли доставлять предупреждение на каждую настроенную платформу.

Чего не умеет Прометей?

Хотя Prometheus — это комплексное решение для мониторинга, для некоторых ролей оно не подходит. Основными принципами Prometheus являются надежность и производительность. Это приводит к компромиссу в точности показателей.

Prometheus не гарантирует, что собранные данные будут на 100% точными. Он предназначен для сценариев с большим объемом, когда случайные выпадения событий не влияют на общую картину. Если вы отслеживаете конфиденциальную статистику, которая должна быть верной, вам следует использовать другую платформу для этих показателей. Вы все равно можете принять Prometheus для менее важных значений в вашей системе.

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

Вывод

Проще говоря, Prometheus — это хранилище данных временных рядов, которое можно использовать для управления любыми последовательными временными данными. Чаще всего он используется для отслеживания показателей других приложений в вашем стеке. Хотя Prometheus — эффективная система для хранения и запроса метрик, она обычно интегрируется с другими решениями для работы с графическими панелями мониторинга и расширенной визуализацией. Его популярность объясняется его способностью работать с настраиваемыми метриками, поддерживать расширенные запросы и взаимодействовать с другими членами облачной экосистемы.

Прометей стремится к максимальной надежности. Он разработан, чтобы быть вашим инструментом во время инцидента, который поможет вам понять, почему другие компоненты выходят из строя. Отдельные узлы Prometheus в кластерном развертывании полностью автономны и не зависят от удаленного хранилища. Из-за своей надежности Prometheus не гарантирует точности данных. Этот недостаток следует учитывать в первую очередь при планировании нового развертывания.

Хотя мы не рассмотрели практические шаги по установке Prometheus в этой статье, официальная документация предоставляет исчерпывающее руководство по быстрому запуску, если вы хотите попробовать систему самостоятельно. Prometheus обычно развертывается как контейнер Docker, но также доступен из исходного кода или в виде предварительно скомпилированных двоичных файлов для популярных дистрибутивов Linux. Подход Dockerized проще всего использовать, поскольку он включает все основные компоненты в готовой к запуску конфигурации.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.