Метрики Prometheus

Материал из Документация Ключ-АСТРОМ

Prometheus - это популярный в сообществе Kubernetes инструментарий для мониторинга и оповещения с открытым исходным кодом. Prometheus извлекает метрики из нескольких конечных точек HTTP, которые предоставляют метрики в формате OpenMetrics.

Ключ-АСТРОМ объединяет метрики датчиков и счетчиков от экспортеров Prometheus в Kubernetes и делает их доступными для построения диаграмм, предупреждений и анализа. См. Список доступных экспортеров в документации Prometheus.

Предпосылки

  • В меню Ключ-АСТРОМ , перейдите в Настройки > Инфраструктурный > Kubernetes и включите Enable мониторинга и мониторинга Прометея экспортеров .
  • Аннотированные определения стручков см. Ниже.

Добавление комментариев к модулям экспортера Прометея

Ключ-АСТРОМ собирает метрики из любых модулей, которые аннотированы с помощью 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 .