Применение Ключ-АСТРОМ / Мониторинг контейнерных платформ / Kubernetes / Метрики Prometheus
Prometheus - это популярный в сообществе Kubernetes инструментарий для мониторинга и оповещения с открытым исходным кодом. Prometheus извлекает метрики из нескольких конечных точек HTTP, которые предоставляют метрики в формате OpenMetrics.
Ключ-АСТРОМ объединяет метрики датчиков и счетчиков от экспортеров Prometheus в Kubernetes и делает их доступными для построения диаграмм, предупреждений и анализа. См. Список доступных экспортеров в документации Prometheus.
Предпосылки
- В меню Ключ-АСТРОМ , перейдите в Настройки > Инфраструктурный > Kubernetes и включите Enable мониторинга и мониторинга Прометея экспортеров .
- Аннотированные определения стручков см. Ниже.
Добавление комментариев к модулям экспортера 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 подвержены потреблению DDU .
- Метрики Prometheus от экспортеров, которые работают на хостах, контролируемых ЕдинымАгентом, сначала вычитаются из вашей квоты включенных метрик на единицу хоста . После превышения этой квоты оставшиеся метрики потребляют DDU.
- Метрики Prometheus от экспортеров, которые работают на хостах, которые не отслеживаются ЕдинымАгентом, всегда используют DDU .