Работа с метриками Prometheus
В дистрибутив системы входит система мониторинга Prometheus, собирающая различные метрики работы кластера. В данном разделе описано, как получить доступ к панели управления Prometheus и просмотреть метрики, собранные системой.
Подключение к Prometheus
Чтобы получить доступ к панели управления Prometheus:
-
Осуществите проброс портов, выполнив на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl port-forward -n kube-prometheus-stack service/kube-prometheus-stack-prometheus <local_port>:9090Здесь:
-
<local_port>— порт на хосте, по которому будет осуществляться доступ к Prometheus.
-
-
В браузере откройте URL
localhost:<local_port>, где<local_port>— порт с шага 1. Отобразится панель управления Prometheus.
Просмотр списка метрик, получаемых из источников
Источники метрик — это сервисы, из которых Prometheus получает метрики.
Чтобы просмотреть список источников, на панели управления Prometheus перейдите в раздел Status → Targets. Для каждого источника доступны метки Labels, по которым можно фильтровать значения метрик. Например, в качестве метки может выступать пространство имен или под, на котором располагается источник.
Просмотреть список метрик, получаемых Prometheus из всех источников, можно на главной странице панели управления:
-
Чтобы просмотреть список всех доступных метрик:
-
Введите в строку запроса Prometheus следующий запрос:
group by(__name__) ({__name__!=""}) -
Нажмите на кнопку Execute или на клавишу ENTER.
-
-
Чтобы найти метрики по ключевому слову в названии, введите ключевое слово в строку запроса Prometheus. Отобразится список автодополнения, содержащий метрики с указанным ключевым словом в названии.
Просматривать список метрик, получаемых из конкретного источника, необходимо непосредственно на источнике. Для этого выполните следующие действия:
-
Перейдите в раздел Prometheus Status → Targets.
-
Выберите нужный источник из списка.
-
Получите из столбца Endpoint таблицы порт и путь к конечной точке, на которой находится источник метрик.
Например, для адреса http://10.233.116.160:8001/metricsпорт —8001, а путь —/metrics. -
Получите из столбца Labels таблицы пространство имен и под кластера, где находится источник метрик. Пространство имен указано в значении метки
namespace, а под — в значении меткиpod. -
Осуществите проброс портов до источника метрик, выполнив на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl port-forward -n <namespace> pod/<source_pod> <source_local_port>:<source_remote_port>Здесь:
-
<namespace>— пространство имен кластера, в котором находится источник метрик. -
<source_pod>— под, на котором находится источник метрик. -
<source_local_port>— порт на хосте, по которому будет осуществляться доступ к источнику метрик. Должен отличаться от порта, выбранного для доступа к Prometheus. -
<source_remote_port>— порт, на котором находится источник метрик.
-
-
В браузере откройте URL
localhost:<source_local_port>/<source_path>.Здесь:
-
<source_local_port>— порт с предыдущего шага. -
<source_path>— путь к конечной точке источника метрик, полученный на шаге 3.Откроется URL, соответствующий источнику метрик.
-
Пример получения списка метрик шарда ClickHouse
-
Перейдите в раздел Prometheus Status → Targets.
-
Выберите источник
serviceMonitor/kube-prometheus-stack/kube-prometheus-stack-clickhouse/0.Далее рассматривается получение списка метрик для шарда
clickhouse-shard0-0. Для второго шарда процесс аналогичен. -
Получите из столбца Endpoint таблицы информации об источнике порт и путь конечной точки, отправляющей метрики шарда
clickhouse-shard0-0. Пусть конечная точка имеет адресhttp://10.0.0.173:8001/metrics. Тогда:-
порт
8001; -
путь
/metrics.
-
-
Получите из столбца Labels таблицы пространство имен и под кластера, где находится источник метрик. Пусть пространство имен в значении метки
namespace—system, а под в значении меткиpod—clickhouse-shard0-0. -
Осуществите проброс портов до источника метрик, выполнив на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl port-forward -n system pod/clickhouse-shard0-0 5555:8001 -
В браузере откройте URL
localhost:5555/metrics. Отобразится список метрик ClickHouse.
Вывод значений метрик в интерфейсе Prometheus
На главной странице панели управления Prometheus можно выводить значения получаемых системой метрик. Для этого:
-
Введите запрос на языке PromQL в строку запроса Prometheus.
-
Нажмите на кнопку Execute или на клавишу ENTER.
-
При необходимости измените представление данных, пользуясь вкладками:
-
Table — таблица значений метрик в момент времени, заданный в поле ввода Evaluation time;
-
Graph — графическое представление временного ряда значений метрики. Для него можно выбрать интервал времени для отображения, конечный момент времени End time и интервал в секундах между точками графика Res. (s).
-
| Метрики, собранные Prometheus, также можно отобразить на дашборде Grafana. |
Примеры метрик состояния кластера
Использование системных ресурсов
-
Использование процессора:
-
container_cpu_usage_seconds_total— время процессора в секундах, потребленное контейнерами кластера. -
machine_cpu_cores— количество логических ядер процессора.PromQL-запрос потребления ресурсов процессора всеми контейнерами кластера
Метрика
container_cpu_usage_seconds_totalимеет типcounter, то есть является счетчиком с накоплением. Чтобы вычислить изменение метрики за временной период, воспользуйтесь функциейrateязыка PromQL:sum(rate(container_cpu_usage_seconds_total{container!=""}[1m])) / sum(machine_cpu_cores) * 100 -
container_threads— количество потоков, запущенных внутри контейнера.PromQL-запрос количества потоков внутри указанного контейнера
container_threads{container="<container_name>"}Здесь:
-
<container_name>— имя контейнера.
-
-
-
Использование оперативной памяти:
-
container_memory_usage_bytes— потребление оперативной памяти контейнерами в байтах. -
machine_memory_bytes— размер оперативной памяти в байтах, установленной на машине.PromQL-запрос потребления оперативной памяти контейнерами на узле
sum(container_memory_usage_bytes{node="<node_name>"}) / sum(machine_memory_bytes{node="<node_name>"}) * 100Здесь:
-
<node_name>— имя узла кластера.
-
-
-
Использование дискового пространства:
-
host_filesystem_used_bytes— размер используемого дискового пространства в байтах. -
host_filesystem_total_bytes— размер установленного дискового пространства в байтах.PromQL-запрос процента свободного места в файловой системе
sum(host_filesystem_used_bytes{filesystem="<filesystem>"}) / sum(host_filesystem_total_bytes{filesystem="<filesystem>"}) * 100Здесь:
-
<filesystem>— имя файловой системы.
-
-
-
Использование сети:
-
container_network_transmit_bytes_total— объем переданных по сети данных в байтах. -
container_network_receive_bytes_total— объем полученных по сети данных в байтах.PromQL-запрос количества мегабайт, переданных по сети за одну минуту
Метрики
container_network_transmit_bytes_totalиcontainer_network_receive_bytes_totalимеют типcounter. Чтобы вычислить изменение метрики за временной период, воспользуйтесь функциейrateязыка PromQL:sum(rate(container_network_transmit_bytes_total{node="<node_name>"}[1m])) / (1024 ^ 2)Здесь:
-
<node_name>— имя узла кластера. -
Байты переведены в мегабайты путем деления на 10242.
-
-
Метрики ClickHouse
-
Общие метрики запросов:
-
ClickHouseMetrics_Query— количество выполняющихся запросов. -
ClickHouseProfileEvents_FailedQuery— количество запросов, завершившихся с ошибкой. -
ClickHouseProfileEvents_FailedSelectQuery— количество запросов типаSELECT, завершившихся с ошибкой. -
ClickHouseProfileEvents_FailedInsertQuery— количество запросов типаINSERT, завершившихся с ошибкой. -
ClickHouseMetrics_GlobalThreadActive— количество потоков, выполняющих задачи, в глобальном пуле потоков ClickHouse. -
ClickHouseErrorMetric_ALL— количество ошибок сервера ClickHouse с последнего перезапуска.PromQL-запрос суммарного значения метрики по одному шарду ClickHouse
ClickHouseMetrics_Query{pod="<pod_name>"}Здесь:
-
<pod_name>— имя пода, на котором расположен шард ClickHouse.
Вместо
ClickHouseMetrics_Queryможно подставить любую метрику из списка общих метрик.PromQL-запрос значения метрики по всем шардам ClickHouse
sum(ClickHouseMetrics_Query)Вместо
ClickHouseMetrics_Queryможно подставить любую метрику из списка общих метрик. -
-
-
Метрики времени выполнения запросов:
-
ClickHouseProfileEvents_QueryTimeMicroseconds— время выполнения запросов в микросекундах. -
ClickHouseProfileEvents_SelectQueryTimeMicroseconds— время выполнения запросов типаSELECTв микросекундах. -
ClickHouseProfileEvents_InsertQueryTimeMicroseconds— время выполнения запросов типаINSERTв микросекундах. -
ClickHouseProfileEvents_OtherQueryTimeMicroseconds— время выполнения запросов всех типов, кромеSELECTиINSERT, в микросекундах.PromQL-запрос времени, затраченного на выполнение запросов в течение одной минуты
Метрики, описанные в этом разделе, имеют тип
counter. Чтобы вычислить изменение метрики за временной период, воспользуйтесь функциейrateязыка PromQL:sum(rate(ClickHouseProfileEvents_QueryTimeMicroseconds[1m])) / (10^6)Здесь:
-
Микросекунды переведены в секунды путем деления на 106.
-
-
-
Метрики подключений к серверу СУБД:
-
ClickHouseProfileEvents_DistributedConnectionTries— количество всех попыток подключения к серверу СУБД. -
ClickHouseProfileEvents_DistributedConnectionUsable— количество успешных попыток подключения к серверу СУБД. -
ClickHouseProfileEvents_DistributedConnectionFailTry— количество неудачных попыток подключения к серверу СУБД, завершившихся повторной попыткой соединения. -
ClickHouseProfileEvents_DistributedConnectionFailAtAll— количество неудачных попыток подключения к серверу СУБД, завершившихся после исчерпания повторных попыток.PromQL-запрос количества всех попыток подключения к серверу СУБД в течение одной минуты
Метрики, описанные в этом разделе, имеют тип
counter. Чтобы вычислить изменение метрики за временной период, воспользуйтесь функциейrateязыка PromQL:sum(rate(ClickHouseProfileEvents_DistributedConnectionTries[1m]))
-
Была ли полезна эта страница?