Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Метрики Prometheus

Материал из Документация АппОптима
Версия от 14:51, 26 декабря 2024; IKuznetsov (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Применение АппОптима / Мониторинг контейнерных платформ / 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 от экспортеров, которые работают на хостах, которые не отслеживаются ЕдинымАгентом, всегда используют ВИД .