Введение
Теперь, когда Prometheus собирает метрики из Node Exporter, вы можете начать задавать вопросы о собранных данных.
В Prometheus есть собственный язык запросов — PromQL (Prometheus Query Language).
PromQL важен потому, что необработанные метрики полезны только тогда, когда вы можете фильтровать, объединять и вычислять на их основе осмысленные значения.
На этом этапе мониторинг превращается из сбора данных в их анализ. Prometheus полезен не только потому, что хранит числа, но и потому, что PromQL позволяет превращать эти числа в вопросы и ответы.
В этой лабораторной работе вы зададите три типа вопросов:
- Простой факт: «Сколько свободной памяти?»
- Скорость: «Насколько интенсивно работает CPU?»
- Математический расчёт: «Какой процент памяти занят?»
Вы будете вводить эти вопросы в веб-интерфейсе Prometheus (Web Service) и просматривать ответы.
Запрос свободной памяти
На этом шаге вы запросите количество байтов свободной памяти и сохраните ответ.
Начнём с простого факта. Нам нужно узнать, сколько памяти (RAM) свободно.
Сначала откройте интерфейс Prometheus:
Нажмите вкладку Prometheus в меню в левом верхнем углу интерфейса LabEx, чтобы открыть панель управления.
После загрузки интерфейса найдите заметную строку поиска. В ней вы будете вводить вопросы для Librarian.
Введите в строку поиска следующий запрос:
node_memory_MemFree_bytes
Этот текст — имя показателя данных, который представляет «свободную память». После ввода нажмите кнопку Execute.

Проверьте результат:
В столбце «Value» должно появиться число. Оно может выглядеть неожиданно большим, например 5204746240. Это нормально: компьютеры измеряют память в байтах, а байт — очень маленькая единица измерения.
Примечание: иногда число в столбце «Value» может быть скрыто окном чата Labby. Если вы не видите значение, временно закройте диалог Labby, чтобы просмотреть число, а после этого снова откройте его.
Чтобы проверить правильность результата (поскольку мы не видим ваш экран), выполните в терминале следующую команду. Она сохранит ответ в файл:
curl "http://localhost:9090/api/v1/query?query=node_memory_MemFree_bytes" > ~/project/free_memory.json
cat ~/project/free_memory.json
{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"node_memory_MemFree_bytes","instance":"localhost:9100","job":"node_exporter"},"value":[1768698428.127,"4001128448"]}]}}
Запрос загрузки CPU
На этом шаге вы воспользуетесь rate(), чтобы запросить скорость увеличения счётчика CPU.
Теперь рассмотрим более сложный вопрос.
Спидометр автомобиля показывает не «общее пройденное расстояние», а «мили в час» — скорость.
С загрузкой CPU происходит похожая ситуация. Prometheus записывает «общее количество секунд работы CPU с момента включения». Это число постоянно увеличивается.
Такие метрики называются счётчиками: они накапливают значение с течением времени. Чтобы понять текущее состояние, часто нужна функция вроде rate(), которая преобразует накопленный рост в показатель за единицу времени.
Чтобы узнать, «насколько интенсивно CPU работает прямо сейчас», нужно вычислить скорость (Rate).
Вопрос:
rate(node_cpu_seconds_total[1m])
Разбор запроса:
node_cpu_seconds_total: исходные данные — общее количество секунд.[1m]: «использовать данные за последнюю 1 минуту».rate(...): «вычислить, насколько быстро это число увеличивалось в течение этой минуты».
Проверьте запрос в веб-интерфейсе:
Вставьте запрос rate(node_cpu_seconds_total[1m]) в строку поиска и нажмите Execute. Скорее всего, вы увидите много строк с числами, потому что в вашем компьютере несколько ядер CPU.
Сохраните ответ для проверки:
curl -g "http://localhost:9090/api/v1/query?query=rate(node_cpu_seconds_total[1m])" > ~/project/cpu_rate.json
Параметр -g (--globoff) отключает подстановку диапазонов и наборов в URL со стороны curl. Поэтому curl передаёт квадратные скобки в [1m] буквально, а не интерпретирует их как диапазон URL. Кавычки оболочки сохраняют полный URL запроса как один аргумент.
Расчёт процентов
На этом шаге вы объедините метрики памяти для расчёта процентного значения.
Фразу «свободно 500 миллионов байт» трудно интерпретировать. А «свободно 50%» понять легко.
Prometheus может выполнить математические расчёты за вас.
Именно возможность выполнять арифметические операции делает PromQL мощным инструментом для работы. Вы можете объединять несколько низкоуровневых метрик в более понятные человеку показатели состояния системы.
Нужно узнать: какой процент памяти ИСПОЛЬЗУЕТСЯ?
Формула:
$$ \text{Процент использования} = \frac{\text{Общий объём памяти} - \text{Свободная память}}{\text{Общий объём памяти}} \times 100 $$
Запрос PromQL:
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes) / node_memory_MemTotal_bytes * 100
Проверьте запрос в веб-интерфейсе:
Вставьте это длинное математическое выражение в строку поиска и нажмите Execute. Вы должны увидеть одно число, например 45.2. Это означает, что используется 45,2% памяти.
Сохраните ответ:
curl "http://localhost:9090/api/v1/query?query=(node_memory_MemTotal_bytes-node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100" > ~/project/memory_usage.json
Визуализация данных
На этом шаге вы построите график запроса памяти и разберёте его оси.
Наконец, графики позволяют лучше понять данные, чем отдельные числа.
Оставьте математический запрос в строке поиска и найдите вкладки над областью результатов. Вы увидите вкладку Graph, обычно расположенную рядом с вкладкой Table, которая используется для отображения простых текстовых результатов.
Нажмите вкладку Graph. Вы увидите линейный график использования памяти во времени.
- Ось X: время
- Ось Y: процент использования
Если вы видите прямую линию, значит использование памяти стабильно. Если бы вы запустили ресурсоёмкую программу, на графике появился бы всплеск.
Последняя проверка:
Поскольку сейчас вы просматриваете график, убедимся, что сервер по-прежнему работает в фоновом режиме:
ps aux | grep prometheus
Резюме
В этой лабораторной работе вы научились задавать Librarian вопросы с помощью PromQL.
Вы изучили:
- Простые факты:
node_memory_MemFree_bytes - Скорость:
rate(... [1m]) - Математические расчёты:
(Total - Free) / Total * 100 - Построение графика: использование вкладки Graph.
Теперь, когда вы умеете просматривать данные, следующий шаг — настроить Prometheus так, чтобы он сообщал вам, если что-то пойдёт не так. Это называется оповещением.



