Поделиться через


Настройка коллекции метрик Prometheus из кластера Kubernetes с помощью ConfigMap

Если включить коллекцию метрик Prometheus из кластера Kubernetes, она использует коллекцию по умолчанию , чтобы определить, какие метрики необходимо собирать. В этой статье описывается, как настроить эту коллекцию в соответствии с конкретными требованиями к мониторингу.

Карта конфигурации

Следующий ConfigMap используется для настройки конфигурации сбора данных и других параметров дополнения для метрик. ConfigMap по умолчанию не существует в кластере при включении Managed Prometheus.

Карта конфигурации Описание
ama-metrics-settings-configmap Включает следующие основные параметры.
— псевдоним кластера. Изменяет значение метки cluster во всех метриках, полученных из кластера.
— включение и отключение целевых адресов для сбора данных по умолчанию.
— Включение сбора данных на основе аннотаций pod в каждом пространстве имен.
— Метрики хранят списки. Определяет, какие метрики разрешены из каждого целевого объекта по умолчанию.
— интервалы снятия данных для предопределенных целевых показателей.
— режим отладки для выявления отсутствующих проблем с метрикой. См. сведения об устранении неполадок.

Измените параметры в ConfigMap на основе приведенных ниже рекомендаций, а затем примените его с помощью следующей команды. AMA-Metrics pods будут обнаруживать и перезапускать их в течение 2–3 минут для применения указанных конфигурационных настроек.

kubectl apply -f .\ama-metrics-settings-configmap.yaml

Включение и отключение целевых объектов по умолчанию

Конфигурация метрик Prometheus по умолчанию в Azure Monitor содержит целевые объекты и метрики по умолчанию, собираемые по умолчанию из кластера Kubernetes. Чтобы включить или отключить сбор данных для любой из этих целей, обновите параметры цели в разделе default-scrape-settings-enabled ConfigMap на true или false.

Например, чтобы включить сбор данных с coredns, который отключен по умолчанию, обновите параметр следующим образом:

default-scrape-settings-enabled: |-
    kubelet = true
    coredns = true
    cadvisor = true
    kubeproxy = false
    ...

Параметры интервала слома

Интервал опроса по умолчанию для всех целевых объектов составляет 30 секунд. Чтобы изменить этот интервал для любого целевого объекта, можно обновить параметр в default-targets-scrape-interval-settings разделе ConfigMap.

Например, чтобы изменить интервал сбора данных на kubelet до 60 секунд, обновите параметр следующим образом:

default-targets-scrape-interval-settings: |-
    kubelet = "60s"
    coredns = "30s"
    cadvisor = "30s"
    ...

Включение очистки на основе заметок на основе заметок pod

Добавьте аннотации к pod-ам в вашем кластере, чтобы собирать данные с pod-ов приложений без создания настраиваемой конфигурации Prometheus. Чтобы включить сбор данных с pod-ов с определёнными аннотациями, добавьте регулярное выражение для нужных пространств имён pod-ов с аннотациями в podannotationnamespaceregex раздел podannotationnamespaceregex ConfigMap.

Например, следующий параметр ломает модули pod с заметками только в пространствах kube-system имен и my-namespace:

pod-annotation-based-scraping: |-
    podannotationnamespaceregex = "kube-system|my-namespace"

Добавьте заметки в metadata раздел ConfigMap. prometheus.io/scrape: "true" требуется для сбора данных с pod, а prometheus.io/path и prometheus.io/port указывают путь и порт, по которым метрики размещаются в pod. В следующем примере определяются аннотации для pod, на котором размещены метрики <pod IP>:8080/metrics.

metadata:   
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/path: '/metrics'
    prometheus.io/port: '8080'

Предупреждение

Удаление заметок pod из многих пространств имен может создать очень большой объем метрик в зависимости от количества модулей pod с заметками.

Настройка метрик, собранных целевыми объектами по умолчанию

Для целевых объектов по умолчанию собираются только минимальные метрики, как это описано в профиле минимальной регистрации метрик Prometheus в Azure Monitor. Чтобы собрать все метрики из целевых объектов по умолчанию, задайте значение minimalingestionprofilefalse в default-targets-metrics-keep-list разделе ConfigMap.

minimalingestionprofile = false

Кроме того, можно добавить метрики для любого целевого объекта по умолчанию, обновив его списки хранения в разделе default-targets-metrics-keep-list.

Например, kubelet это параметр фильтрации метрик для целевого kubelet по умолчанию. Используйте следующий скрипт, чтобы с помощью фильтрации на основе регулярных выражений отфильтровать метрики, собранные для целевых объектов по умолчанию.

kubelet = "metricX|metricY"
apiserver = "mymetric.*"

Примечание.

Если в регрессии используются кавычки или обратные косые черты, их необходимо экранировать с помощью обратной косой черты, например примеров "test\'smetric\"s\"" и testbackslash\\*.

Если вы хотите дополнительно настроить целевые объекты по умолчанию для изменения свойств, таких как частота сбора или метки, отключите этот целевой объект, задав его значение false. Затем создайте настраиваемое задание для целевого объекта, как описано в разделе "Настройка очистки метрик Prometheus" в Azure Monitor.

Псевдоним кластера

Последняя часть идентификатора ресурса кластера добавляется к каждому временным рядам для уникальной идентификации данных. Например, если идентификатор ресурса указан /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername, метка кластера имеет значение myclustername. Чтобы переопределить эту метку кластера, обновите параметр cluster_alias в разделе prometheus-collector-settings.

Примечание.

Разрешены только буквенно-цифровые символы. Все остальные символы заменяются _на . Если вы включаете правила записи и оповещения, убедитесь, что имя псевдонима кластера используется в параметре имени кластера шаблона настройки правил для их корректной работы.

  prometheus-collector-settings: |-
    cluster_alias = ""

Режим отладки

Чтобы просмотреть все метрики, которые собираются в целях отладки, можно настроить агент метрик для запуска в режиме отладки, обновив настройку enabled на true в параметре debug-mode.

Предупреждение

Этот режим может повлиять на производительность и должен быть включен только в течение короткого времени для отладки.

Метрики Kube-state-metrics

Чтобы переопределить параметры запуска по умолчанию (resources, metric-labels-allowlist и metric-annotations-allowlist) для развертывания kube-state-metrics (ama-metrics-ksm), используйте ama-metrics-settings-configmap, установленное в процессе включения Managed Prometheus.

Параметры в ConfigMap для labels_allow_list и annotations_allow_list переопределяют параметры, заданные во время первоначальной настройки для ksm-metrics-labels-allow-list и ksm-metrics-annotations-allow-list.

Параметры в configmap для ресурсов переопределяют сборщики по умолчанию, установленные для развертывания ama-metrics-ksm.

Обратите внимание, что ниже приведена конфигурация файла YAML.

  ksm-config: |-
    resources: 
      secrets: {}
      configmaps: {}
    labels_allow_list: # object name and label names
      pods: 
      - app8
    annotations_allow_list: # object name and annotation names
      namespaces:
      - kube-system
      - default

Примечание.

Настройка этих значений может повлиять на данные по умолчанию, собранные в рамках задания метрики kube-state-metrics, и могут привести к тому, что определенные панели мониторинга не загружают данные.

Удаление всего раздела (ksm-config) в настройке конфигурации требует повторного создания развертывания ama-metrics-ksm. Это можно сделать, удалив pod ama-metrics-ksm, или выполнив команду: kubectl rollout restart deployment/ama-metrics -n kube-system.

Рекомендуется настраивать только эти 3 параметра по мере необходимости; установка дополнительных параметров в виде переопределений не поддерживается. Хотя это и возможно, следует использовать с осторожностью.

Документация по OSS для аргументов интерфейса командной строки (CLI) в kube-state-metrics

Следующие шаги

Настройка оповещений для метрик Prometheus
Запрос метрик Prometheus
Дополнительные сведения о сборе метрик Prometheus