Рубрики
Uncategorized

Premetheus сделал легко

Что такое высокомасштабный мониторинг приложений? Давайте предположим, что мы работаем над приложением … Помечено с мониторингом, дежоптом, Opensource, Go.

Что такое высокомасштабный мониторинг приложений?

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

  1. Ваше приложение работает или вниз?
  2. Ресурсы используются достаточно хорошо или нет?
  3. Каков рост ресурсов, необходимых после каждого выпуска?

Таким образом, важно иметь централизованный вид Sys, чтобы точно определить источник или проблему.

Обычно у вас есть, скажем, несколько серверов работает на них контейнера. Поскольку пользовательский ввод растет, имеет смысл распределять эти услуги индивидуально, получать нас к инфраструктуре микросервис. Теперь, если услуги хотят связаться друг с другом, должен быть какой-то способ для них взаимосвязанных.

Почему не отладки нашего кода? Почему мониторинг?

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

Каково решение?

Итак, как вы гарантируете, что ваше приложение поддерживается должным образом, и работает без простоя? Нам нужен какой-то автоматизированный инструмент, который постоянно контролирует наше приложение и предупреждает нас, когда что-то пойдет не так (или вправо в зависимости от случая использования). Теперь, в нашем предыдущем примере, мы были бы уведомлены, когда обслуживание вызывает неудачу, и, следовательно, мы можем предотвратить снижение нашего приложения.

Что такое прометей?

PROMETHEUS — это бесплатное программное приложение, используемое для Мониторинг событий и оповещение Отказ Он записывает метрики в реальном времени в базе данных временных рядов (что позволяет для высокой размерности), создаваемая с использованием модели HTTP PULT, с гибкими запросами и предупреждением в реальном времени. PROMETHEUS построен SoundCloud и в настоящее время он представляет собой инкубированный проект F/OSS в фондах облачного соблюдения (CNCF).

Архитектура и метрики PROMETHEUS

Прометея терминологии

  • Цель — Это то, что мониторы PROMETHEUS, это может быть ваше микросервис, приложение или контейнеры для докеров.

  • Метрика — Для нашей цели мы хотели бы контролировать некоторые конкретные вещи. Допустим, у нас есть какой-то рабочий контейнер (цель), и мы хотим отслеживать Container_Memory_usage (Metric) для каждого подъемного контейнера.

В приведенном выше мы видим некоторые важные компоненты PROMETHEUS SERVER. Он состоит из трех частей:

  1. База данных временных рядов (ЦДБ) — Он хранит метрические данные. Он также глотает его (только приложение), Compacts и позволяет эффективно запросить запрос. Данные временного ряда являются просто измерениями или событиями, которые отслеживаются, контролируются, перегружены и агрегированы со временем. Это может быть метрики серверов, мониторинг производительности приложений.

  2. Scrape Engine — тянет метрики (описание выше) из наших целевых ресурсов и отправляет их в ЦДБ. (Тяги Прометея называются царапинами).

  3. Сервер — Используется для внесения запросов для данных, хранящихся в ЦДБ, используя очень мощный язык запросов с использованием PROMQL. Это также используется для отображения метрики в приборной панели, используя Графана или прометей UI Отказ

Более подробная строевая структура:

Более О метриках

Метрики определяются двумя типами основных атрибутов ТИП и Помогите увеличить читаемость журналов.

  • Помогите : Он показывает детали о метрике с описанием.

  • Тип : PROMETHEUS предлагает 4 основных типа метрики, чтобы мы могли легко классифицировать различные типы метрик, и мы также можем создавать пользовательские теги, использующие эти существующие типы метрики, также для конкретного использования.

    • Счетчик : Счетчик представляет собой совокупную метрику, которая представляет собой один монотонно увеличенный счетчик, значение которого может увеличиваться или быть сброшена до нуля на перезапуске. Например, вы можете использовать счетчик для представления количества обслуживаемых запросов, задачи завершены или ошибки.
    • Датчик : Датчик представляет собой метрику, которая представляет собой одно числовое значение, которое может произвольно идти вверх и вниз. Например: cpu_memory_usage.
    • Гистограмма : Образцы гистограммы наблюдения (обычные вещи, такие как просьба запросов или размеры ответа) и считает их в настраиваемых ведрах. Он также обеспечивает сумму всех наблюдаемых значений.
    • Резюме : Аналогично гистограмме, сводные образцы наблюдения (обычно такие вещи, как прочности и размеры ответов). Хотя он также предоставляет общий счет наблюдений и сумма всех наблюдаемых значений, она рассчитывает настраиваемые квантилеки по окну времени раздвижной раздвижной.

Понимание Backend Primetheus

Как это тянет данные из целей?

Работник поиска данных выдвигает данные с конечных точек HTTP целей на пути /Метрики . Здесь мы замечаем 2 вещи:

  1. Конечная точка должна быть подвержена /Метрика дорожка.

  2. Данные, предоставленные конечной точкой, должны быть в правильном формате, что PROMETHEUS понимает

Q. Как мы уверены, что целевые услуги выставляют/метрика, и что данные в правильном формате? A. Некоторые из них по умолчанию подвергают конечной точке. Те, которые не нужно, нужен компонент для этого. Этот компонент известен как Экспортер Отказ Экспортер делает следующее:

1. Образ данных из цели

2.Кручите данные в формате, который Prometheus понимает

3. Эксперт /Метрики конечная точка (теперь это может быть получено полученным работником данных) Для разных типов услуг, таких как API, базы данных, хранилище, HTTP и т. Д. Прометеус имеет Экспортеры ты можешь использовать.

Как вы можете отслеживать собственное приложение?

Допустим, вы написали свое приложение в Python, и вы хотите разоказать его на конечную точку HTTP /метрика На экземпляре вашего приложения, чтобы вам нужны некоторые клиентские библиотеки, или вы можете сказать экспортер, который затем может использоваться для отправки данных на работник поиска данных. В официальной документации PROMETHEUS Клиенты Вы можете получить список всех клиентов.

Push vs Pull Model для Metric Collection

Метрики одно из Стандарты «Go-to» для любого мониторинга Система которой существуют множество различных типов. При его ядре метрика по существу является измерением свойства части приложения или системы. Метрики делают наблюдение путем отслеживания состояния объекта. Эти наблюдения представляют собой некоторое значение или серию связанных сопутствующих значений в сочетании с временем времени, которые описывают наблюдения, выход которых обычно называют Данные серии Time Отказ

PROMETHEUS — это система на основе тяги, которая в регулярных интервалах вытягивает данные от настроенных источников.

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

Q. Что вы подразумеваете под кнопочным механизмом? A. Вместо сервера сервера мониторинга запрашивает запросы, чтобы получить данные, серверы приложения вместо этого нажимают данные в базу данных.

Q. Почему Прометеус лучше? A. Вы можете просто получить данные с конечной точки цели, несколькими экземплярами PROMETHEUS. Также обратите внимание, что таким образом PROMETHEUS также может контролировать, является ли приложение отзывчивым или нет, вместо того, чтобы ждать целевого толкания данных. (Проверить официальную документацию по сравнению )

ЗАМЕТКА: Но что произойдет, если цели не дают нам достаточно времени, чтобы сделать запрос на тягу? Для этого Prometheus использует PushageTaway Отказ Используя это, эти услуги теперь могут продвигать свои данные на работника по поиску данных вместо того, чтобы он потянул данные, как обычно. Используя это, вы получаете лучшее из обоих способов!

Как использовать Prometheus?

До сих пор мы должны знать Что такое прометей? и Как архитектура прометей? Похоже, теперь посмотрим Как мы можем настроить Prometheus локально?

Q. Когда вы определяете, какие цели вы хотите собирать данные из файла, как PROMETHEUS находит эти цели A. Используя открытие услуг. Он также обнаруживает услуги автоматически на основе работы приложения.

PROMETHEUS.YML FILE.

Самый важный файл в Прометеусе — config (yml) Файл, который является PROMETHEUS.YML здесь, мы определяем все набор инструкций, которые должны построить сервер PROMETHEUS:

global:
  # How frequently to scrape targets by default.
  [ scrape_interval:  | default = 1m ]

  # How long until a scrape request times out.
  [ scrape_timeout:  | default = 10s ]

  # How frequently to evaluate rules.
  [ evaluation_interval:  | default = 1m ]

  # The labels to add to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
    [ :  ... ]

  # File to which PromQL queries are logged.
  # Reloading the configuration will reopen the file.
  [ query_log_file:  ]

# Rule files specify a list of globs. Rules and alerts are read from
# all matching files.
rule_files:
  [ -  ... ]

# A list of scrape configurations.
scrape_configs:
  [ -  ... ]

# Alerting specifies settings related to the Alertmanager.
alerting:
  alert_relabel_configs:
    [ -  ... ]
  alertmanagers:
    [ -  ... ]

# Settings related to the remote write feature.
remote_write:
  [ -  ... ]

# Settings related to the remote read feature.
remote_read:
  [ -  ... ] 

(Проверьте официальную документацию для конфигурации)

Более упрощенный premetheus.yml !!!

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

  • глобальныйScrape_Interval Определяет, как часто Prometheus собирается собирать данные из целей, упомянутых в файле. Это, конечно, может быть переопределено.

  • rel_files — Это позволяет нам устанавливать правила для метрик и предупреждений. Эти файлы могут быть перезагружены во время выполнения, отправив SIGHUP к процессу прометея. Evalucy_Interval Определяет, как часто эти правила оцениваются. PROMETHEUS поддерживает 2 типа таких правил:

    • Правила записи — Если вы выполняете некоторые частые операции, они могут быть предварительно доступны и сохранены в качестве нового набора временных рядов. Это делает систему мониторинга немного быстрее.
    • Правила оповещения — Это позволяет определить условия для отправки оповещений на внешние службы, например, при запуске конкретного состояния.
  • scrape_configs — Здесь мы определяем услуги/цели, которые нам нужны PROMETHEUS для мониторинга. В этом примере файл, название работы это Prometheus Отказ Это означает, что он контролирует цель в качестве самого сервера PROMETHEUS. Короче говоря, он получает данные из /Метрики Конечная точка выставлена сервером PROMETHEUS. Здесь цель по умолчанию это localhost: 9090 где Prometheus ожидает, что метрики будут, в /Метрики .

Оповещение в прометее

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

Где хранятся данные?

Данные, собранные Восхождение данных работника хранится в ЦДБ и запросил использование PROMQL Язык запроса. Вы можете использовать веб-интерфейс для запроса данных с сервера PROMETHEUS через PROMQL.

Объединенная архитектура прометей

Запуск PROMETHEUS с помощью Docker

Для демонстрационных целей мы будем использовать Docker, чтобы сделать все действительно легко и воспроизводимы в любом месте. Вот простой докер, который устанавливает на сцену для нас.

  • Это начинается с Ubuntu 18.04 (Bionic) Официальное изображение Устанавливает некоторые из инструментов, которые мы будем использовать, как врач , экран и погибший

  • Он загружает последние двоичные выпуски для Prometheus , node_exporterer и Уведомленный менеджер Отказ

  • Это также загружает Графана который будет использоваться позже для визуализации

  • Обнажает порты по умолчанию из соответствующих услуг

Dockerfile

FROM ubuntu:bionic
LABEL Name="Ritesh" Mail="daydreamingguy941@gmail.com"

RUN  apt-get update \
  && apt-get install -y wget \
  && apt-get install -y screen \
  && apt-get install -y vim

WORKDIR /root
RUN wget -nv https://github.com/prometheus/prometheus/releases/download/v2.22.2/prometheus-2.22.2.linux-amd64.tar.gz
RUN wget -nv https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
RUN wget -nv https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
RUN wget -nv https://dl.grafana.com/oss/release/grafana-7.3.3.linux-amd64.tar.gz

# node_exporter expose port
EXPOSE 9100

# prometheus server expose port
EXPOSE 9090

# grafana
EXPOSE 3000

# alertmanager
EXPOSE 9093

Теперь мы создадим простой Docker-Compose Файл для подготовки нашего Docker Image Чтобы бежать, только вещь, то это делает, это дает нам удобное имя для работы с которым будет разоблачить несколько портов к хозяину для нас. С этим мы можем получить доступ к ним из хост-машины. Я обычно предпочитаю Docker — составляю много, чем писать долгие команды Docker Run с вариантами.

Docker-Compose.yml.yml.yml

version: '3'
services:
  prometheus_demo:
    build: .
    ports:
      - "9100:9100"
      - "9090:9090"
      - "3000:3000"
      - "9093:9093"

Как только эти два файла есть, вы можете перейти к папке, содержащей их, и запустите сервис от Docker-Compose в интерактивном режиме. Обратите внимание, что - Усервис-порты Это очень важный вариант, это позволяет нам сделать привязку порта права (который по умолчанию отключен).

docker-compose run --service-ports prometheus_demo

После того, как вы запустите команду, вы увидите кучу выходов, соответствующих этапам сборки в DockerFile.

После выполнения всех шагов вы будете брошены в интерактивную оболочку внутри контейнера Docker. Если вы хотите проверить номер бегового контейнера с PROMETHEUS_DEMO Имя изображения Вы можете использовать Docker-Compose PS или Docker PS-A Вы получите один контейнер, запущенный несколько услуг, таких как Grafana, Prometheus, Node_Exporter и Alert Manager на порту или портах по умолчанию, упомянутую в DockerFile.

Теперь давайте извлеченем все пакеты, которые мы загрузили с помощью DockerFile.

tar xvf prometheus-2.22.2.linux-amd64.tar.gz
tar xvf node_exporter-0.18.1.linux-amd64.tar.gz
tar xvf grafana-7.3.3.linux-amd64.tar.gz

Точно так же вы можете извлечь другие пакеты, такие как AlertManager.

Следующий шаг — перейти к каталогу пакета. Я показываю с PROMETHEUS, вы можете выполнить эти шаги с другими пакетами.

Перейти к направлению

cd prometheus-2.22.2.linux-amd64

Теперь вы можете запустить файл PROMETHEUS и запустить систему мониторинга PROMETHEUS.

БЕГАТЬ

./prometheus

Теперь вы можете увидеть сообщение в журналах, которые Сервер работает и готов получить веб-запрос Отказ

Ваш сервер работает на localhost: 9090 Вы получите следующее Приборная панель PROMETHEUS UI То, что вы можете сейчас настроить:

В вышеуказанном Приборная панель PROMETHEUS UI Мы контролируем контейнеры докеров.

Теперь вы можете подключить свой сервер PROMETHEUS для node_exporterer (Это экспортер, используемый для получения здоровья сервера Linux, разоблачая /METRIC Конечная точка для воспроизведения данных), упомянув другую работу в вашем PROMETHEUS.YML файл, который мы обсудили в разделе PROMETHEUS.YML, NODE_EXPORTER получит вам метрики, такие как Memory_usage_info или Cpu_load В вашей панели инструментов PROMETHEUS, и вы также можете увидеть Node_Exporter /Метрика HTTP конечная точка на localhost: 9100. .

Подключиться к графане

Вы можете настроить Grafana, следуя по следующим шагам

cd grafana-7.3.3.linux-amd64
cd bin
./grafana-server

Вы найдете свой сервер Grafana на localhost: 3000.

Теперь вы можете получить метрики и увидеть красивую визуализацию на панели инструментов Grafana.

  1. Монитор здравоохранения PROMETHEUS
  2. Монитор хост-машины здоровья

Спасибо за чтение🥰 !!

В следующем блоге мы обсудим больше Прометеус Расширенная визуализация с графаной а также мониторы K8’s Используя Premetheus!

Связать со мной

🚩 LinkedIn 🚩 Застрелить мне Почта

Ресурсы📚.

Оригинал: «https://dev.to/darkart108/prometheus-made-easy-571o»