Метрики Prometheus: различия между версиями
ENetrebin (обсуждение | вклад) |
ENetrebin (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
'''''[[Применение Ключ-АСТРОМ]] / [[Мониторинг контейнерных платформ]] / [[Kubernetes]] / Метрики Prometheus''''' | |||
Prometheus - это популярный в сообществе Kubernetes инструментарий для мониторинга и оповещения с открытым исходным кодом. Prometheus извлекает метрики из нескольких конечных точек HTTP, которые предоставляют метрики в формате OpenMetrics. | Prometheus - это популярный в сообществе Kubernetes инструментарий для мониторинга и оповещения с открытым исходным кодом. Prometheus извлекает метрики из нескольких конечных точек HTTP, которые предоставляют метрики в формате OpenMetrics. | ||
Строка 5: | Строка 7: | ||
== Предпосылки == | == Предпосылки == | ||
* В меню Ключ-АСТРОМ , перейдите в Настройки > | * В меню Ключ-АСТРОМ , перейдите в Настройки > Облако и виртуализация > Kubernetes и включите чекбокс Мониторить аннотированные экспортеры Prometheus | ||
== Добавление комментариев к модулям экспортера | == Добавление комментариев к модулям экспортера Prometheus == | ||
Ключ-АСТРОМ собирает метрики из любых модулей, которые аннотированы с помощью <code>metrics. | Ключ-АСТРОМ собирает метрики из любых модулей, которые аннотированы с помощью <code>metrics.{server-name}.com/scrape</code>свойства, установленного <code>true</code>в определении модуля. | ||
В зависимости от фактического экспортера в модуле вам может потребоваться установить дополнительные аннотации к определению модуля, чтобы Ключ-АСТРОМ могла правильно принимать эти показатели. | В зависимости от фактического экспортера в модуле вам может потребоваться установить дополнительные аннотации к определению модуля, чтобы Ключ-АСТРОМ могла правильно принимать эти показатели. | ||
=== | === Требования для включения парсинга метрик === | ||
Установите <code>metrics. | Установите <code>metrics.{server-name}.com/scrape</code>значение, <code>'true'</code>чтобы разрешить Ключ-АСТРОМ собирать метрики Prometheus, представленные для этого модуля. | ||
=== | === Требования для порта метрик === | ||
По умолчанию метрики Prometheus доступны на первом открытом TCP-порту модуля. Установите <code>metrics. | По умолчанию метрики Prometheus доступны на первом открытом TCP-порту модуля. Установите <code>metrics.{server-name}.com/port</code>соответствующий порт. | ||
=== Путь к конечной точке метрик по желанию === | === Путь к конечной точке метрик по желанию === | ||
Используется <code>metrics. | Используется <code>metrics.{server-name}.com/path</code>для переопределения <code>/metrics</code>конечной точки Prometheus по умолчанию ( ). | ||
=== HTTP / HTTPS по желанию === | === HTTP / HTTPS по желанию === | ||
Установите <code>metrics. | Установите <code>metrics.{server-name}.com/secure</code>на , <code>true</code>если вы хотите , чтобы собрать метрики, которые подвергаются воздействию со стороны экспортера через HTTPS. Значение по умолчанию <code>false</code>, потому что большинство экспортеров предоставляют свои метрики через HTTP. | ||
=== Отфильтровать метрики по желанию === | === Отфильтровать метрики по желанию === | ||
Используется <code>metrics. | Используется <code>metrics.{server-name}.com/filter</code>для определения фильтра, который позволяет вам включать ( <code>"mode": "include"</code>) или исключать (( <code>"mode": "exclude"</code>)) список показателей. Если аннотация фильтра не определена, собираются все показатели. Синтаксис фильтра также поддерживает звездочку ( <code>*</code>). Этот символ позволяет фильтровать ключи показателей, которые начинаются, заканчиваются или содержат определенную последовательность, например: | ||
* <code>redis_db*</code> фильтрует все показатели, начинающиеся с <code>redis_db</code> | * <code>redis_db*</code> фильтрует все показатели, начинающиеся с <code>redis_db</code> | ||
Строка 36: | Строка 37: | ||
В этом примере показано простое определение модуля с аннотациями. | В этом примере показано простое определение модуля с аннотациями. | ||
Примечание: Значения <code>metrics. | Примечание: Значения <code>metrics.{server-name}.com/path</code>, <code>metrics.{server-name}.com/port</code>и <code>metrics.{server-name}.com/secure</code>зависят от экспортера вы используете; адаптируйте его к вашим требованиям. Чтобы определить значение порта, см. Раздел «Распределение портов по умолчанию» для получения списка общих портов для известных экспортеров. | ||
<code>apiVersion: v1 | <code>apiVersion: v1 | ||
kind: Pod | kind: Pod | ||
Строка 42: | Строка 43: | ||
name: mypod | name: mypod | ||
annotations: | annotations: | ||
metrics. | metrics.{server-name}.com/scrape: 'true' | ||
metrics. | metrics.{server-name}.com/path: '/path/to-metrics' | ||
metrics. | metrics.{server-name}.com/port: '9001' | ||
metrics. | metrics.{server-name}.com/secure: 'false' | ||
metrics. | metrics.{server-name}.com/filter: | | ||
{ | { | ||
"mode": "include", | "mode": "include", | ||
Строка 80: | Строка 81: | ||
* Добавьте разрешения на доступ <code>secrets</code>и <code>configmaps</code>в Kubernetes ClusterRole | * Добавьте разрешения на доступ <code>secrets</code>и <code>configmaps</code>в Kubernetes ClusterRole | ||
Некоторым системам требуется дополнительная аутентификация, прежде чем Ключ-АСТРОМ | Некоторым системам требуется дополнительная аутентификация, прежде чем Ключ-АСТРОМ к ним подключиться. Для таких случаев вы можете установить следующие дополнительные аннотации: | ||
* <code>metrics. | * <code>metrics.{server-name}.com/tls.ca.crt</code> | ||
* <code>metrics. | * <code>metrics.{server-name}.com/tls.crt</code> | ||
* <code>metrics. | * <code>metrics.{server-name}.com/tls.key</code> | ||
Требуемые сертификаты / ключи автоматически загружаются из <code>secret</code>/ <code>configmaps</code>указываются в значении аннотации. | Требуемые сертификаты / ключи автоматически загружаются из <code>secret</code>/ <code>configmaps</code>указываются в значении аннотации. | ||
Строка 91: | Строка 92: | ||
Например, для etcd аннотации могут выглядеть следующим образом: | Например, для etcd аннотации могут выглядеть следующим образом: | ||
<code>metrics. | <code>metrics.{server-name}.com/tls.ca.crt='configmap:kubernetes-config:etcd-metric-serving-ca:ca-bundle.crt' | ||
metrics. | metrics.{server-name}.com/tls.crt='secret:kubernetes-config:etcd-metric-client:tls.crt' | ||
metrics. | metrics.{server-name}.com/tls.key='secret:kubernetes-config:etcd-metric-client:tls.key'</code> | ||
== Авторизация управления доступом на основе ролей (RBAC) для приема метрик == | == Авторизация управления доступом на основе ролей (RBAC) для приема метрик == | ||
Строка 102: | Строка 103: | ||
Некоторые модули экспорта, такие как node-exporter , kube-state-metrics и openshift-state-metrics, требуют авторизации RBAC . Для этих модулей экспорта добавьте следующую аннотацию: | Некоторые модули экспорта, такие как node-exporter , kube-state-metrics и openshift-state-metrics, требуют авторизации RBAC . Для этих модулей экспорта добавьте следующую аннотацию: | ||
<code>metrics. | <code>metrics.{server-name}.com/http.auth: 'builtin:default'</code> | ||
== Рекомендации по работе с аннотациями == | == Рекомендации по работе с аннотациями == | ||
Строка 125: | Строка 126: | ||
* Создать новый сервис (в YAML) | * Создать новый сервис (в YAML) | ||
Предварительные требования Новая служба должна иметь префикс <code> | Предварительные требования Новая служба должна иметь префикс <code>{server-name}-monitoring-</code>, находиться в том же пространстве имен, что и модули, и иметь разрешение на создание объекта службы Kubernetes. | ||
Pro: у вас есть контроль над исходной рабочей нагрузкой / услугой. | Pro: у вас есть контроль над исходной рабочей нагрузкой / услугой. | ||
Строка 133: | Строка 134: | ||
Пример: | Пример: | ||
Примечание: Значения <code>metrics. | Примечание: Значения <code>metrics.{server-name}.com/path</code>, <code>metrics.{server-name}.com/port</code>и <code>metrics.{server-name}.com/secure</code>зависят от используемого экспортера; адаптируйте его к вашим требованиям. Чтобы определить значение порта, см. Раздел «Распределение портов по умолчанию» для получения списка общих портов для известных экспортеров. | ||
<code>kind: Service | <code>kind: Service | ||
apiVersion: v1 | apiVersion: v1 | ||
metadata: | metadata: | ||
name: | name: {server-name}-monitoring-node-exporter | ||
namespace: kubernetes-monitoring | namespace: kubernetes-monitoring | ||
annotations: | annotations: | ||
metrics. | metrics.{server-name}.com/port: '9100' | ||
metrics. | metrics.{server-name}.com/scrape: 'true' | ||
metrics. | metrics.{server-name}.com/secure: 'true' | ||
metrics. | metrics.{server-name}.com/path: '/metrics' | ||
spec: | spec: | ||
ports: | ports: | ||
- name: | - name: {server-name}-monitoring-node-exporter-port | ||
port: 9100 | port: 9100 | ||
selector: | selector: | ||
Строка 169: | Строка 170: | ||
== Просмотр показателей на панели инструментов == | == Просмотр показателей на панели инструментов == | ||
Показатели из экспортеров Prometheus доступны в | Показатели из экспортеров Prometheus доступны в "Визуалиция данных" для создания настраиваемых диаграмм. Выберите метрику и Запуск запроса . | ||
Вы можете просто найти метрические ключи всех доступных метрик и определить, как вы хотите анализировать и составлять диаграммы. После этого вы можете закрепить свои графики на | Вы можете просто найти метрические ключи всех доступных метрик и определить, как вы хотите анализировать и составлять диаграммы. После этого вы можете закрепить свои графики на дашборде. | ||
== Оповещения о показателях == | == Оповещения о показателях == | ||
Вы также можете создавать настраиваемые оповещения на основе очищенных метрик Prometheus. В меню навигации выберите « Настройки» > « Обнаружение аномалий» > « | Вы также можете создавать настраиваемые оповещения на основе очищенных метрик Prometheus. В меню навигации выберите « Настройки» > « Обнаружение аномалий» > « События метрик» и выберите « Добавить событие метрики» . На странице « События метрик » найдите метрику Prometheus, используя ее ключ, и определите свое оповещение. | ||
== Ограничения == | == Ограничения == | ||
Строка 180: | Строка 181: | ||
* Эта интеграция поддерживает только метрические типы Prometheus счетчиков и датчиков . | * Эта интеграция поддерживает только метрические типы Prometheus счетчиков и датчиков . | ||
* Если вы запускаете несколько экспортеров в модуле, вам необходимо настроить <code>metrics. | * Если вы запускаете несколько экспортеров в модуле, вам необходимо настроить <code>metrics.{server-name}.com/port</code>аннотацию, чтобы направить Ключ-АСТРОМ к той, которую она должна использовать. | ||
* Эта интеграция поддерживает до 1000 модулей с 200 метрическими точками данных в минуту. | * Эта интеграция поддерживает до 1000 модулей с 200 метрическими точками данных в минуту. | ||
== Мониторинг потребления == | == Мониторинг потребления == | ||
Метрики Prometheus в средах Kubernetes | Метрики Prometheus в средах Kubernetes потребляют лицензии ВИД . | ||
* Метрики Prometheus от экспортеров, которые работают на хостах, контролируемых ЕдинымАгентом, сначала вычитаются из | * Метрики Prometheus от экспортеров, которые работают на хостах, контролируемых ЕдинымАгентом, сначала вычитаются из квоты включенных метрик на единицу хоста . После превышения этой квоты оставшиеся метрики потребляют ВИД. | ||
* Метрики Prometheus от экспортеров, которые работают на хостах, которые не отслеживаются ЕдинымАгентом, всегда используют | * Метрики Prometheus от экспортеров, которые работают на хостах, которые не отслеживаются ЕдинымАгентом, всегда используют ВИД . |
Текущая версия на 21:42, 4 сентября 2024
Применение Ключ-АСТРОМ / Мониторинг контейнерных платформ / Kubernetes / Метрики Prometheus
Prometheus - это популярный в сообществе Kubernetes инструментарий для мониторинга и оповещения с открытым исходным кодом. Prometheus извлекает метрики из нескольких конечных точек HTTP, которые предоставляют метрики в формате OpenMetrics.
Ключ-АСТРОМ объединяет метрики датчиков и счетчиков от экспортеров Prometheus в Kubernetes и делает их доступными для построения диаграмм, предупреждений и анализа. См. Список доступных экспортеров в документации Prometheus.
Предпосылки
- В меню Ключ-АСТРОМ , перейдите в Настройки > Облако и виртуализация > Kubernetes и включите чекбокс Мониторить аннотированные экспортеры Prometheus
Добавление комментариев к модулям экспортера Prometheus
Ключ-АСТРОМ собирает метрики из любых модулей, которые аннотированы с помощью metrics.{server-name}.com/scrape
свойства, установленного true
в определении модуля.
В зависимости от фактического экспортера в модуле вам может потребоваться установить дополнительные аннотации к определению модуля, чтобы Ключ-АСТРОМ могла правильно принимать эти показатели.
Требования для включения парсинга метрик
Установите metrics.{server-name}.com/scrape
значение, 'true'
чтобы разрешить Ключ-АСТРОМ собирать метрики Prometheus, представленные для этого модуля.
Требования для порта метрик
По умолчанию метрики Prometheus доступны на первом открытом TCP-порту модуля. Установите metrics.{server-name}.com/port
соответствующий порт.
Путь к конечной точке метрик по желанию
Используется metrics.{server-name}.com/path
для переопределения /metrics
конечной точки Prometheus по умолчанию ( ).
HTTP / HTTPS по желанию
Установите metrics.{server-name}.com/secure
на , true
если вы хотите , чтобы собрать метрики, которые подвергаются воздействию со стороны экспортера через HTTPS. Значение по умолчанию false
, потому что большинство экспортеров предоставляют свои метрики через HTTP.
Отфильтровать метрики по желанию
Используется metrics.{server-name}.com/filter
для определения фильтра, который позволяет вам включать ( "mode": "include"
) или исключать (( "mode": "exclude"
)) список показателей. Если аннотация фильтра не определена, собираются все показатели. Синтаксис фильтра также поддерживает звездочку ( *
). Этот символ позволяет фильтровать ключи показателей, которые начинаются, заканчиваются или содержат определенную последовательность, например:
redis_db*
фильтрует все показатели, начинающиеся сredis_db
*db*
фильтрует все показатели, содержащиеdb
*bytes
фильтрует все показатели, заканчивающиеся наbytes
Примечание. Использование *
символа в фильтре, например redis_*_bytes
, не поддерживается.
В этом примере показано простое определение модуля с аннотациями.
Примечание: Значения metrics.{server-name}.com/path
, metrics.{server-name}.com/port
и metrics.{server-name}.com/secure
зависят от экспортера вы используете; адаптируйте его к вашим требованиям. Чтобы определить значение порта, см. Раздел «Распределение портов по умолчанию» для получения списка общих портов для известных экспортеров.
apiVersion: v1
kind: Pod
metadata:
name: mypod
annotations:
metrics.{server-name}.com/scrape: 'true'
metrics.{server-name}.com/path: '/path/to-metrics'
metrics.{server-name}.com/port: '9001'
metrics.{server-name}.com/secure: 'false'
metrics.{server-name}.com/filter: |
{
"mode": "include",
"names": [
"redis_db_keys",
"redis_db_values"
]
}
spec:
containers:
- name: mycontainer
image: myregistry/myimage:mytag
Дополнительные сведения о том, как добавлять аннотации в модули, см. В разделе " Рекомендации по аннотациям" .
Аннотирование сервисов Kubernetes
Требования
- АктивныйШлюз версии 1.215+ или Ключ-АСТРОМ Operator, работающий на Ключ-АСТРОМ версии 1.215
- Добавьте разрешение на доступ к службам в Kubernetes ClusterRole (не требуется для пользователей Ключ-АСТРОМ Operator, так как это включено по умолчанию в clusterrole-kubernetes-monitoring.yaml )
Вы также можете аннотировать службы вместо модулей. Модули, соответствующие сервисам Kubernetes, автоматически обнаруживаются с помощью селектора меток сервиса, который очищает все модули, принадлежащие сервису.
Примечание . Служба и соответствующие модули должны находиться в одном пространстве имен.
У вас могут быть аннотации к сервисам и модулям одновременно. Если результирующие конечные точки метрики идентичны, они очищаются только один раз.
Для получения дополнительной информации о том, как аннотировать сервисы, см. Рекомендации по аннотации .
Проверка подлинности клиента по желанию
Требования
- АктивныйШлюз версии 1.215+, работающий внутри кластера Kubernetes, или оператор Ключ-АСТРОМ, работающий на Ключ-АСТРОМ версии 1.215 (классический АктивныйШлюз, работающий на виртуальной машине, здесь не будет работать)
- Добавьте разрешения на доступ
secrets
иconfigmaps
в Kubernetes ClusterRole
Некоторым системам требуется дополнительная аутентификация, прежде чем Ключ-АСТРОМ к ним подключиться. Для таких случаев вы можете установить следующие дополнительные аннотации:
metrics.{server-name}.com/tls.ca.crt
metrics.{server-name}.com/tls.crt
metrics.{server-name}.com/tls.key
Требуемые сертификаты / ключи автоматически загружаются из secret
/ configmaps
указываются в значении аннотации.
Схема для значений аннотаций <configmap|secret>:<namespace>:<resource_name>:<field_name_in_data_section>
.
Например, для etcd аннотации могут выглядеть следующим образом:
metrics.{server-name}.com/tls.ca.crt='configmap:kubernetes-config:etcd-metric-serving-ca:ca-bundle.crt'
metrics.{server-name}.com/tls.crt='secret:kubernetes-config:etcd-metric-client:tls.crt'
metrics.{server-name}.com/tls.key='secret:kubernetes-config:etcd-metric-client:tls.key'
Авторизация управления доступом на основе ролей (RBAC) для приема метрик
Требования
- АктивныйШлюз версии 1.217+, работающий в кластере Kubernetes, или оператор Ключ-АСТРОМ, работающий на Ключ-АСТРОМ версии 1.217 (классический АктивныйШлюз, работающий на виртуальной машине, здесь не будет работать)
Некоторые модули экспорта, такие как node-exporter , kube-state-metrics и openshift-state-metrics, требуют авторизации RBAC . Для этих модулей экспорта добавьте следующую аннотацию:
metrics.{server-name}.com/http.auth: 'builtin:default'
Рекомендации по работе с аннотациями
Есть несколько способов разместить аннотации на модулях или сервисах. См. Ниже, чтобы решить, какой подход лучше всего подходит для вашего сценария.
Рекомендуется, если у вас есть полный контроль
Если у вас есть полный контроль над шаблоном модуля или определением службы, мы рекомендуем добавлять аннотации, редактируя эти файлы. Это самый надежный способ обеспечить постоянство аннотаций. Мы рекомендуем редактировать шаблон модуля вместо редактирования определения службы, поскольку для этого требуется меньше разрешений (например, если у вас нет доступа к службам).
Pro: аннотации являются постоянными, поэтому их не нужно воссоздавать, если модуль удален.
Варианты, если у вас нет полного контроля
Если у вас нет полного контроля над шаблоном модуля, у вас есть следующие возможности:
- Аннотировать существующую службу (в YAML)
Предварительные требования: иметь контроль над существующим YAML и разрешение на редактирование существующего объекта службы Kubernetes.
Pro: аннотации постоянны.
Против: Нет.
- Создать новый сервис (в YAML)
Предварительные требования Новая служба должна иметь префикс {server-name}-monitoring-
, находиться в том же пространстве имен, что и модули, и иметь разрешение на создание объекта службы Kubernetes.
Pro: у вас есть контроль над исходной рабочей нагрузкой / услугой.
Против: требуется синхронизация селектора меток. Мы поддерживаем только селектор меток.
Пример:
Примечание: Значения metrics.{server-name}.com/path
, metrics.{server-name}.com/port
и metrics.{server-name}.com/secure
зависят от используемого экспортера; адаптируйте его к вашим требованиям. Чтобы определить значение порта, см. Раздел «Распределение портов по умолчанию» для получения списка общих портов для известных экспортеров.
kind: Service
apiVersion: v1
metadata:
name: {server-name}-monitoring-node-exporter
namespace: kubernetes-monitoring
annotations:
metrics.{server-name}.com/port: '9100'
metrics.{server-name}.com/scrape: 'true'
metrics.{server-name}.com/secure: 'true'
metrics.{server-name}.com/path: '/metrics'
spec:
ports:
- name: {server-name}-monitoring-node-exporter-port
port: 9100
selector:
app.kubernetes.io/name: node-exporter
clusterIP: None
- Аннотировать существующую службу (в интерфейсе командной строки)
Предварительные требования: иметь разрешение на редактирование существующего объекта службы Kubernetes.
Плюс: синхронизация селектора меток не требуется.
Против: аннотации не являются постоянными, поэтому изменения будут перезаписывать аннотации. Мы поддерживаем только селектор меток.
- Аннотировать существующие модули (в интерфейсе командной строки)
Предпосылки: Нет.
Плюс: вы можете быстро протестировать прием метрик.
Против: аннотации не являются постоянными, поэтому изменения будут перезаписывать аннотации.
Просмотр показателей на панели инструментов
Показатели из экспортеров Prometheus доступны в "Визуалиция данных" для создания настраиваемых диаграмм. Выберите метрику и Запуск запроса .
Вы можете просто найти метрические ключи всех доступных метрик и определить, как вы хотите анализировать и составлять диаграммы. После этого вы можете закрепить свои графики на дашборде.
Оповещения о показателях
Вы также можете создавать настраиваемые оповещения на основе очищенных метрик Prometheus. В меню навигации выберите « Настройки» > « Обнаружение аномалий» > « События метрик» и выберите « Добавить событие метрики» . На странице « События метрик » найдите метрику Prometheus, используя ее ключ, и определите свое оповещение.
Ограничения
Текущие ограничения интеграции метрик Prometheus следующие:
- Эта интеграция поддерживает только метрические типы Prometheus счетчиков и датчиков .
- Если вы запускаете несколько экспортеров в модуле, вам необходимо настроить
metrics.{server-name}.com/port
аннотацию, чтобы направить Ключ-АСТРОМ к той, которую она должна использовать. - Эта интеграция поддерживает до 1000 модулей с 200 метрическими точками данных в минуту.
Мониторинг потребления
Метрики Prometheus в средах Kubernetes потребляют лицензии ВИД .
- Метрики Prometheus от экспортеров, которые работают на хостах, контролируемых ЕдинымАгентом, сначала вычитаются из квоты включенных метрик на единицу хоста . После превышения этой квоты оставшиеся метрики потребляют ВИД.
- Метрики Prometheus от экспортеров, которые работают на хостах, которые не отслеживаются ЕдинымАгентом, всегда используют ВИД .