К
Канал Андрея про бекенд
@andrey_threads1.7K подп.
3.1Kпросмотров
17 мая 2025 г.
statsScore: 3.4K
🟢 Metrics basics - часть 3 🔼 В прошлом посте под вторым пунктом плана значилось "Данные с каждого инстанса помещаются в некое хранилище". ❓ Но как именно метрики "помещаются" в хранилище? Есть два основных пути, по которому идут разработчики: 1️⃣ Клиент (ваш сервис, с которого вы хотите собирать метрики) устанавливает соединение с хранилищем и отправляет ему собранные данные. 2️⃣ Сервис выстявляет (expose) наружу API, с помощью которого можно получить собранные на текущий момент данные, а хранилище умеет опрашивать (poll) сервисы с некой регулярностью, "забирать" данные и сохранять у себя. 💡 Первый способ является стандартным для общения с базами данных, вероятно, поэтому большинство хранилищ работают именно по этому принципу. Но Prometheus не таков, он идет по второму пути. По этой ссылке можно найти классификацию метрик-систем, в том числе и по способу "публикации" метрик. 📂 Возвращаясь к нашему Прометею: процесс сбора метрик в его терминологии назваыется скрейпом (scrape), а собственно сервер, с которого собираются метрики, обозначается, как "цель" (target). В конфигурационном файле можно определить: ✏️ Параметры самой сборки (например, как часто ее производить / таймаут на процесс сборки). Тут же можно определить параметр metrics_path - http-путь, по которому прометей сможет получить метрики, по-умолчанию это /metrics. Если вы используете Spring Actuator, то по-умолчанию значение будет /actuator/prometheus. Перейдя по данному пути вы сможете увидеть список метрик и их текущие значения, которые будут собираться прометеем: # TYPE jvm_memory_used_bytes gauge jvm_memory_used_bytes{area="heap",id="G1 Survivor Space",} 3382248.0 jvm_memory_used_bytes{area="heap",id="G1 Old Gen",} 3.2279552E7 jvm_memory_used_bytes{area="nonheap",id="Metaspace",} 4.8777184E7 jvm_memory_used_bytes{area="nonheap",id="CodeCache",} 1.1440768E7 jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 2.097152E7 jvm_memory_used_bytes{area="nonheap",id="Compressed Class Space",} 6788528.0 # HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process # TYPE process_cpu_usage gauge process_cpu_usage 0.008264797399683058 ✍️ Какие сервера подлежат сборке (можно использовать статический набор серверов или использовать интеграцию с множеством service-discovery механизмов, которые будут возвращать вам набор код для скрейпа) 🏷️ Какие метки (labels) добавить/убрать/изменить в готовых метриках (например, на этом этапе очень удобно автоматически добавлять метку конкретного инстанса/адрес-порт, чтобы визуализировать метрики по каждому экземпляру сервиса индивидуально, видеть, где присутствует какая-то проблема и тд) 💡 В одном из следующих постов подумаем, каким образом визуализировать нашу метрику http-запросов, напишем запрос к прометею с помощью языка PromQL (Prometheus Query Language) и познакомимся с его полезными функциями. #metrics_basics
3.1K
просмотров
2891
символов
Да
эмодзи
Нет
медиа

Другие посты @andrey_threads

Все посты канала →
🟢 Metrics basics - часть 3 🔼 В прошлом посте под вторым пу — @andrey_threads | PostSniper