Prometheus: различия между версиями
Paksa (обсуждение | вклад) (Paksa переименовал страницу Prometheus в PrometheusRuby: Готовится новая статья по системе Prometheus ) Метка: новое перенаправление |
Paksa (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
== Источник: == | |||
https://prometheus.io/ | |||
== Основная информация: == | |||
Prometheus — это база данных, оптимизированная для данных временных рядов и идеальный способ хранения метрик мониторинга. Prometheus выпустила Cloud Native Computing Foundation (CNCF), что означает отличную интеграцию с другими компонентами CNCF. | |||
== Принцип работы: == | |||
Основой его работы является скрейпинг конечных точек. Прометей посылает HTTP запрос к точкам(обычно это /metrics), которые указываются в конфиг файле, и если точка может дать данные нужного формата - Прометей определит ее как объект и с определенным интервалом будет делать запросы | |||
== Структура: == | |||
Прометей состоит из трех компонентов: | |||
=== Retrieval === | |||
Представляет собой сервис по сбору метрик, именно он ходит по конечным точкам и собирает метрику помещая ее затем в хранилище. | |||
Обладает тремя вариантами взятия метрик: | |||
- Готовые сервисы экспортеры наподобие node-exporter; | |||
- Пользовательские сервисы обладающие способность отдавать данные нужного формата; | |||
- Pushgateway сервис куда можно скидывать метрики, когда стандартная модель прометея не применима) | |||
=== Storage === | |||
Сама база данных хранящая в себе данные объектов в виде временных рядов | |||
=== HTTP Server === | |||
Представляет API к storage для визуализации в простом встроенным GUI или подключению к Grafana. Также дает возможность агрегировать и обрабатывать данные различными запросами PromQl | |||
=== Alert Manager === | |||
Также к прометею можно подсоединить алерт менеджера способного отследить какое либо событие(например значение превысило заданную границу) и отправить на почту оповещение. | |||
== Структура метрик == | |||
Прометей собирает метрики человекочитаемоего типа, и они имеют два атрибута: | |||
''' HELP ''' - описание метрики, для чего и зачем… | |||
''' TYPE ''' - один из трех встроенных типов метрики: | |||
- Counter: сколько раз что то произошло…(обязательно должен расти) | |||
- Gauge: какое текущее значение чего то…(но он не показывает развитие метрики) | |||
- Histogram: насколько что то большое, насколько что то длинное(можно рассчитывать среднее значение и относительные измерения значений) | |||
== Концепция хранения == | |||
База данных временных рядов Prometheus хранит данные в высокоэффективном формате на локальном хранилище. | |||
Прометей работает с парами ключ-значение. Ключ описывает, что мы измеряем, а значение хранит фактическую величину в виде числа. Также в метрике содержатся разная мета информация(labels). И он хранит в среднем всего 1-2 байта на выборку, что позволяет прогнозировать какого объема диск нам нужен. | |||
Образцы группируются в блоки по два часа. Каждый двухчасовой блок состоит из каталога, содержащего подкаталог chunks, содержащий все образцы временных рядов для этого временного интервала, файла метаданных и индексного файла (который индексирует имена метрик и метки временных рядов в каталоге chunks). Образцы в каталоге chunks по умолчанию сгруппированы в один или несколько сегментных файлов размером до 512 МБ каждый. Когда серии удаляются через API, записи об удалении сохраняются в отдельных файлах tombstone (вместо немедленного удаления данных из сегментов chunk). '''(по умолчанию хранит данные в течении 15 дней, но это можно изменить с помощью флага при запуске программы)'''. | |||
''' !!! Ограничения в использовании файловых системы: не совместимые с POSIX системы, не поддерживаются для локального хранилища Prometheus, поскольку могут произойти необратимые повреждения. Файловые системы NFS (включая Aws EF S) не поддерживаются. NFS может быть совместима с POSIX, но большинство реализаций таковыми не являются. Для надежности настоятельно рекомендуется использовать локальную файловую систему. ''' | |||
== Установка == | |||
Установка производится командой: <code>apt-get update && apt-get install -y prometheus</code> | |||
== Установка через Docker == | |||
Docker образ можно скачать с нашего реестра образов: | |||
https://registry.altlinux.org/repository/alt/prometheus | |||
С помощью команды: | |||
<code>docker pull registry.altlinux.org/alt/prometheus</code> | |||
Затем с помощью этой команды запустить: | |||
<code>docker run --name="prometheus" -p 9090:9090 -v promdata:/var/lib/prometheus registry.altlinux.org/alt/prometheus</code> | |||
В Docker Volume promdata будут сохранятся данные, также вы можете передавать нужные вам флаги после названия образа. | |||
'''Если вы хотите чтобы докер видел сервисы запущенные на вашем хосте: | |||
Замените флаг <code>-p</code> на <code>--network="host"</code>'' | |||
== Настройка == | |||
По умолчанию прометей запущен на <code>localhost:9090</code> | |||
А его конфиг лежит в <code>/etc/prometheus/</code> | |||
C помощью конфиг файла вы можете указать конечные точки для прометея. | |||
=== Конфиг файл === | |||
Почитать подробнее про настройку конфиг файла вы можете по адресу: | |||
<code>https://prometheus.io/docs/prometheus/latest/configuration/configuration/</code> | |||
Пример конфиг файла лежит по адресу: | |||
<code>https://raw.githubusercontent.com/prometheus/prometheus/main/documentation/examples/prometheus.yml</code> | |||
В прометеи можно посмотреть конфиг перейдя в '''Status => Configuration''' | |||
''' Основная информация ''' | |||
Конфиг файл является YML файлов и он является основной для работы Прометея рассмотрим некоторые из его множества полей. | |||
'''global''' конфигурация определяет параметры, которые действительны во всех других контекстах конфигурации. Они также служат значениями по умолчанию для других разделов конфигурации. | |||
'''scrape_interval''' как часто надо обходить точки | |||
'''evaluation_interval''' как часто надо оценивать правила | |||
'''scrape_config''' определяет набор целевых объектов и параметров, описывающих, как их очистить. В общем случае одна конфигурация очистки определяет одно задание. В расширенных конфигурациях это может измениться. | |||
Целевые объекты могут быть статически сконфигурированы с помощью параметра static_configs или динамически обнаружены с использованием одного из поддерживаемых механизмов обнаружения служб. | |||
'''tls_config''' позволяет настраивать соединения TLS. | |||
'''Docker SD''' позволяют извлекать целевые объекты scrape с хостов Docker Engine. | |||
Эта SD-карта обнаруживает “контейнеры” и создаст цель для каждого сетевого IP-адреса и порта, на который настроен контейнер. | |||
=== Настройка конфиг файла через Docker === | |||
Чтобы пробросить свой конфиг файл в контейнер используйте следующую команду: | |||
<code>docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml</code> | |||
'''$PWD/promehteus.yml должен указывать на путь до конфиг файла''' | |||
Затем перезапустите контейнер: | |||
<code>docker restart prometheus</code> | |||
== Пример использования == | |||
С помощью команды установите node-exporter: | |||
<code>apt-get install prometheus-node_exporter</code> | |||
Далее запустите его, вы можете удостовериться в его работоспобности перейдя на <code>localhost:9100</code> и увидев те самые метрики | |||
Затем отредактируйте конфиг файл: | |||
<tt> | |||
global: | |||
scrape_interval: 5s | |||
evaluation_interval: 5s | |||
scrape_configs: | |||
- job_name: "node-exporter" | |||
static_configs: | |||
- targets: ["127.0.0.1:9100]" | |||
</tt> | |||
Перезагрузите прометей и посмотрите в '''Status => Targets''' успешно ли подключение к node-exportert |
Текущая версия от 10:18, 28 мая 2023
Источник:
Основная информация:
Prometheus — это база данных, оптимизированная для данных временных рядов и идеальный способ хранения метрик мониторинга. Prometheus выпустила Cloud Native Computing Foundation (CNCF), что означает отличную интеграцию с другими компонентами CNCF.
Принцип работы:
Основой его работы является скрейпинг конечных точек. Прометей посылает HTTP запрос к точкам(обычно это /metrics), которые указываются в конфиг файле, и если точка может дать данные нужного формата - Прометей определит ее как объект и с определенным интервалом будет делать запросы
Структура:
Прометей состоит из трех компонентов:
Retrieval
Представляет собой сервис по сбору метрик, именно он ходит по конечным точкам и собирает метрику помещая ее затем в хранилище. Обладает тремя вариантами взятия метрик:
- Готовые сервисы экспортеры наподобие node-exporter;
- Пользовательские сервисы обладающие способность отдавать данные нужного формата;
- Pushgateway сервис куда можно скидывать метрики, когда стандартная модель прометея не применима)
Storage
Сама база данных хранящая в себе данные объектов в виде временных рядов
HTTP Server
Представляет API к storage для визуализации в простом встроенным GUI или подключению к Grafana. Также дает возможность агрегировать и обрабатывать данные различными запросами PromQl
Alert Manager
Также к прометею можно подсоединить алерт менеджера способного отследить какое либо событие(например значение превысило заданную границу) и отправить на почту оповещение.
Структура метрик
Прометей собирает метрики человекочитаемоего типа, и они имеют два атрибута:
HELP - описание метрики, для чего и зачем…
TYPE - один из трех встроенных типов метрики:
- Counter: сколько раз что то произошло…(обязательно должен расти)
- Gauge: какое текущее значение чего то…(но он не показывает развитие метрики)
- Histogram: насколько что то большое, насколько что то длинное(можно рассчитывать среднее значение и относительные измерения значений)
Концепция хранения
База данных временных рядов Prometheus хранит данные в высокоэффективном формате на локальном хранилище.
Прометей работает с парами ключ-значение. Ключ описывает, что мы измеряем, а значение хранит фактическую величину в виде числа. Также в метрике содержатся разная мета информация(labels). И он хранит в среднем всего 1-2 байта на выборку, что позволяет прогнозировать какого объема диск нам нужен.
Образцы группируются в блоки по два часа. Каждый двухчасовой блок состоит из каталога, содержащего подкаталог chunks, содержащий все образцы временных рядов для этого временного интервала, файла метаданных и индексного файла (который индексирует имена метрик и метки временных рядов в каталоге chunks). Образцы в каталоге chunks по умолчанию сгруппированы в один или несколько сегментных файлов размером до 512 МБ каждый. Когда серии удаляются через API, записи об удалении сохраняются в отдельных файлах tombstone (вместо немедленного удаления данных из сегментов chunk). (по умолчанию хранит данные в течении 15 дней, но это можно изменить с помощью флага при запуске программы).
!!! Ограничения в использовании файловых системы: не совместимые с POSIX системы, не поддерживаются для локального хранилища Prometheus, поскольку могут произойти необратимые повреждения. Файловые системы NFS (включая Aws EF S) не поддерживаются. NFS может быть совместима с POSIX, но большинство реализаций таковыми не являются. Для надежности настоятельно рекомендуется использовать локальную файловую систему.
Установка
Установка производится командой: apt-get update && apt-get install -y prometheus
Установка через Docker
Docker образ можно скачать с нашего реестра образов:
https://registry.altlinux.org/repository/alt/prometheus
С помощью команды:
docker pull registry.altlinux.org/alt/prometheus
Затем с помощью этой команды запустить:
docker run --name="prometheus" -p 9090:9090 -v promdata:/var/lib/prometheus registry.altlinux.org/alt/prometheus
В Docker Volume promdata будут сохранятся данные, также вы можете передавать нужные вам флаги после названия образа.
Если вы хотите чтобы докер видел сервисы запущенные на вашем хосте:
Замените флаг-p
на--network="host"
Настройка
По умолчанию прометей запущен на localhost:9090
А его конфиг лежит в /etc/prometheus/
C помощью конфиг файла вы можете указать конечные точки для прометея.
Конфиг файл
Почитать подробнее про настройку конфиг файла вы можете по адресу:
https://prometheus.io/docs/prometheus/latest/configuration/configuration/
Пример конфиг файла лежит по адресу:
https://raw.githubusercontent.com/prometheus/prometheus/main/documentation/examples/prometheus.yml
В прометеи можно посмотреть конфиг перейдя в Status => Configuration
Основная информация
Конфиг файл является YML файлов и он является основной для работы Прометея рассмотрим некоторые из его множества полей.
global конфигурация определяет параметры, которые действительны во всех других контекстах конфигурации. Они также служат значениями по умолчанию для других разделов конфигурации.
scrape_interval как часто надо обходить точки
evaluation_interval как часто надо оценивать правила
scrape_config определяет набор целевых объектов и параметров, описывающих, как их очистить. В общем случае одна конфигурация очистки определяет одно задание. В расширенных конфигурациях это может измениться. Целевые объекты могут быть статически сконфигурированы с помощью параметра static_configs или динамически обнаружены с использованием одного из поддерживаемых механизмов обнаружения служб.
tls_config позволяет настраивать соединения TLS.
Docker SD позволяют извлекать целевые объекты scrape с хостов Docker Engine. Эта SD-карта обнаруживает “контейнеры” и создаст цель для каждого сетевого IP-адреса и порта, на который настроен контейнер.
Настройка конфиг файла через Docker
Чтобы пробросить свой конфиг файл в контейнер используйте следующую команду:
docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
$PWD/promehteus.yml должен указывать на путь до конфиг файла
Затем перезапустите контейнер:
docker restart prometheus
Пример использования
С помощью команды установите node-exporter:
apt-get install prometheus-node_exporter
Далее запустите его, вы можете удостовериться в его работоспобности перейдя на localhost:9100
и увидев те самые метрики
Затем отредактируйте конфиг файл:
global: scrape_interval: 5s evaluation_interval: 5s scrape_configs: - job_name: "node-exporter" static_configs: - targets: ["127.0.0.1:9100]"
Перезагрузите прометей и посмотрите в Status => Targets успешно ли подключение к node-exportert