Работа с метриками Prometheus
В дистрибутив R-Vision SIEM входит система мониторинга 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
—siem
, а под в значении меткиpod
—clickhouse-shard0-0
. -
Осуществите проброс портов до источника метрик, выполнив на хосте с сетевым доступом к управляющему узлу кластера следующую команду:
kubectl port-forward -n siem 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]))
-