Настройка очистки метрик Prometheus в управляемой службе Azure Monitor для Prometheus
В этой статье приведены инструкции по настройке метрики для кластера Kubernetes с надстройкой метрик в Azure Monitor.
Конфигурации
Четыре разных конфигурационных карты можно настроить для предоставления конфигурации слома и других параметров надстройки метрик. Все карты конфигурации должны применяться к пространству kube-system
имен для любого кластера.
Примечание.
Ни один из четырех конфигураций по умолчанию не существует в кластере при включении Управляемого Prometheus. В зависимости от того, что необходимо настроить, необходимо развернуть любой или все эти четыре конфигурации с тем же именем, указанным в kube-system
пространстве имен. Модули pod AMA-Metrics будут собирать эти конфигурационные карты после их развертывания в kube-system
пространстве имен и перезапуститься через 2–3 минуты, чтобы применить параметры конфигурации, указанные в configmap(s).
ama-metrics-settings-configmap
Эта карта конфигурации содержит ниже простых параметров, которые можно настроить. Вы можете использовать конфигурацию из приведенного выше репозитория концентратора Git, изменить параметры и применить или развернуть конфигурацию вkube-system
пространстве имен для кластера.- псевдоним кластера (чтобы изменить значение
cluster
метки во всех временных рядах или метриках, полученных из кластера) - включение и отключение целевых объектов слома по умолчанию — включение и отключение очистки по умолчанию на основе целевых объектов. Конфигурация очистки для этих целевых объектов по умолчанию уже предварительно определена или встроенная
- включение очистки на основе заметок pod для каждого пространства имен
- Списки хранимых метрик — этот параметр используется для управления тем, какие метрики будут разрешены из каждого целевого объекта по умолчанию, а также для изменения поведения по умолчанию
- Интервалы слома для стандартных или предопределенных параметров.
30 secs
— это частота слома по умолчанию, и ее можно изменить на целевой объект по умолчанию с помощью этой конфигурации. - режим отладки— включение этой функции помогает отлаживать отсутствующие проблемы с метрикой и приемом. Дополнительные сведения об устранении неполадок см. в статье об устранении неполадок
- псевдоним кластера (чтобы изменить значение
ama-metrics-prometheus-config
Эту карту конфигурации можно использовать для предоставления конфигурации Prometheus слома для реплики надстройки. Addon запускает одну реплику, и любые службы уровня кластера можно обнаружить и отменить, предоставив задания слома в этом файле конфигурации. Пример конфигурации можно получить из приведенного выше репозитория концентратора Git, добавить задания слома, которые потребуются, и применить или развернуть карту конфигурации кkube-system
пространству имен для кластера. Хотя это поддерживается, обратите внимание, что рекомендуемый способ очистки пользовательских целевых объектов использует пользовательские ресурсы.ama-metrics-prometheus-config-node
(Дополнительно) Эта карта конфигурации может использоваться для предоставления конфигурации prometheus скребка для надстройки DaemonSet, которая выполняется на каждом узле Linux в кластере, и любые целевые объекты уровня узлов на каждом узле можно сломать, предоставив задания слома в этом файле конфигурации. При использовании этой конфигурации можно использовать$NODE_IP
переменную в конфигурации слома, которая заменяется IP-адресом соответствующего узла в pod DaemonSet, работающем на каждом узле. Таким образом вы получаете доступ к удалению всего, что выполняется на этом узле из надстройки DaemonSet метрик. Будьте осторожны при использовании обнаружений в конфигурации слома в карте конфигурации уровня узла, так как каждый узел в кластере будет настраивать и обнаруживать целевые объекты и собирать избыточные метрики. Пример конфигурации можно получить из приведенного выше репозитория концентратора Git, добавить задания слома, которые потребуются, и применить или развернуть карту конфигурации кkube-system
пространству имен для кластера.ama-metrics-prometheus-config-node-windows
(Дополнительно) Эта карта конфигурации может использоваться для предоставления конфигурации Prometheus слома для надстройки DaemonSet, которая выполняется на каждом узле Windows в кластере, а целевые объекты уровня узлов на каждом узле можно сломать, предоставив задания слома в этом файле конфигурации. При использовании этой конфигурации можно использовать$NODE_IP
переменную в конфигурации слома, которая будет заменена ip-адресом соответствующего узла в pod DaemonSet, работающем на каждом узле. Таким образом вы получаете доступ к удалению всего, что выполняется на этом узле из надстройки DaemonSet метрик. Будьте осторожны при использовании обнаружений в конфигурации слома в карте конфигурации уровня узла, так как каждый узел в кластере будет настраивать и обнаруживать целевые объекты и собирать избыточные метрики. Пример конфигурации можно получить из приведенного выше репозитория концентратора Git, добавить задания слома, которые потребуются, и применить или развернуть карту конфигурации кkube-system
пространству имен для кластера.
Пользовательские определения ресурсов
Надстройка метрик Azure Monitor поддерживает удаление метрик Prometheus с помощью Prometheus — мониторов pod и мониторов служб, аналогичных оператору OSS Prometheus. Включение надстройки будет развертывать пользовательские определения ресурсов Pod и Service Monitor, чтобы позволить создавать собственные пользовательские ресурсы. Следуйте инструкциям по созданию и применению пользовательских ресурсов в кластере.
Метрики надстройки параметров конфигурации
Ama-metrics-settings-configmap можно скачать, изменить и применить к кластеру, чтобы настроить встроенные функции надстройки метрик.
Включение и отключение целевых объектов по умолчанию
В следующей таблице содержится список всех целевых объектов по умолчанию, которые надстройка метрики Azure Monitor может сломить по умолчанию и включить ли она изначально. Целевые объекты по умолчанию удаляются каждые 30 секунд. Реплика развертывается для отказоустойчивых целевых объектов кластера, таких как метрики kube-state-metrics. DaemonSet также развертывается для удаления целевых объектов на уровне узла, таких как kubelet.
Ключ | Тип | Включен | Объект pod | Description |
---|---|---|---|---|
kubelet | bool | true |
Linux DaemonSet | Скребите kubelet на каждом узле в кластере K8s без дополнительной конфигурации слома. |
cadvisor | bool | true |
Linux DaemonSet | Скребите cadvisor на каждом узле в кластере K8s без дополнительной конфигурации скребка. Только для Linux. |
kubestate | bool | true |
Реплика Linux | Скребите метрики kube-state-metrics в кластере K8s (устанавливается как часть надстройки) без дополнительной конфигурации слома. |
nodeexporter | bool | true |
Linux DaemonSet | Очистка метрик узлов без дополнительной конфигурации скребка. Только для Linux. |
coredns | bool | false |
Реплика Linux | Очистка службы coredns в кластере K8s без дополнительной конфигурации слома. |
kubeproxy | bool | false |
Linux DaemonSet | Скребите kube-proxy на каждом узле Linux, обнаруженном в кластере K8s без дополнительной конфигурации скребка. Только для Linux. |
сервер API | bool | false |
Реплика Linux | Скребите сервер API Kubernetes в кластере K8s без дополнительной конфигурации скребка. |
windowsexporter | bool | false |
Windows DaemonSet | Отмена экспорта окон в каждом узле в кластере K8s без дополнительной конфигурации слома. Только для Windows. |
windowskubeproxy | bool | false |
Windows DaemonSet | Скребите windows-kube-proxy на каждом узле в кластере K8s без дополнительной конфигурации скребка. Только для Windows. |
prometheuscollectorhealth | bool | false |
Реплика Linux | Скребите сведения о контейнере сборщика prometheus, например объем и размер временных рядов, сломанных. |
Если вы хотите включить очистку целевых объектов по умолчанию, которые не включены по умолчанию, измените конфигурациюama-metrics-settings-configmap
, чтобы обновить целевые объекты, перечисленные в списке default-scrape-settings-enabled
true
. Примените конфигурацию к кластеру.
Включение очистки на основе заметок на основе заметок pod
Чтобы создавать пользовательские конфигурации prometheus, заметки можно добавлять в модули pod. Заметка 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 с определенными заметками по умолчанию отключена. Чтобы включить, ama-metrics-settings-configmap
добавьте regex для пространств имен модулей pod с заметками, которые нужно отменить в качестве значения поля podannotationnamespaceregex
.
Например, следующий параметр ломает модули pod с заметками только в пространствах kube-system
имен и my-namespace
:
pod-annotation-based-scraping: |-
podannotationnamespaceregex = "kube-system|my-namespace"
Чтобы включить очистку модулей pod с заметками во всех пространствах имен, используйте:
pod-annotation-based-scraping: |-
podannotationnamespaceregex = ".*"
Предупреждение
Удаление заметок pod из многих пространств имен может создать очень большой объем метрик в зависимости от количества модулей pod с заметками.
Настройка метрик, собранных целевыми объектами по умолчанию
По умолчанию для всех целевых объектов по умолчанию используются только минимальные метрики, используемые в правилах записи по умолчанию, оповещениях и панелях мониторинга Grafana, как описано в минимальном режиме приема данных. Чтобы собрать все метрики из целевых объектов по умолчанию, обновите списки хранения в конфигурации параметров в разделе default-targets-metrics-keep-list
и задайте для false
нее значениеminimalingestionprofile
.
Чтобы разрешить список дополнительных метрик в дополнение к метрикам по умолчанию, которые должны быть разрешены, для любых целевых объектов по умолчанию измените параметры в default-targets-metrics-keep-list
соответствии с соответствующим заданием, которое вы хотите изменить.
Например, kubelet
это параметр фильтрации метрик для целевого kubelet по умолчанию. Используйте следующий скрипт, чтобы отфильтровать метрики, собранные для целевых объектов по умолчанию, с помощью регулярной фильтрации.
kubelet = "metricX|metricY"
apiserver = "mymetric.*"
Примечание.
Если в регрессии используются кавычки или обратные косые черты, их необходимо экранировать с помощью обратной косой черты, например примеров "test\'smetric\"s\""
и testbackslash\\*
.
Чтобы дополнительно настроить задания по умолчанию для изменения свойств, таких как частота сбора или метки, отключите соответствующий целевой объект по умолчанию, задав значение конфигурации для целевого объекта false
. Затем примените задание с помощью пользовательской конфигурации. Дополнительные сведения о настраиваемой конфигурации см. в разделе "Настройка очистки метрик Prometheus" в Azure Monitor.
Псевдоним кластера
Метка кластера, добавленная к каждому временному ряду, использует последнюю часть полного идентификатора ресурса Azure Resource Manager кластера AKS. Например, если идентификатор ресурса указан /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/rg-name/providers/Microsoft.ContainerService/managedClusters/myclustername
, метка кластера имеет значение myclustername
.
Чтобы переопределить метку кластера в сломе временных рядов, обновите параметр cluster_alias
до любой строки prometheus-collector-settings
в конфигурацииama-metrics-settings-configmap
. Этот файл конфигурации можно создать, если он не существует в кластере или изменить существующий, если он уже существует в кластере.
Новая метка также отображается в раскрывающемся списке параметров кластера на панелях мониторинга Grafana вместо стандартного.
Примечание.
Разрешены только буквенно-цифровые символы. Все остальные символы заменяются _
на . Это изменение заключается в том, чтобы различные компоненты, использующие эту метку, соответствуют базовому буквенно-цифровому соглашению.
Если вы включаете правила записи и оповещения, обязательно используйте имя псевдонима кластера в параметре имени кластера шаблона подключения правила для работы правил.
Режим отладки
Предупреждение
Этот режим может повлиять на производительность и должен быть включен только в течение короткого времени для отладки.
Чтобы просмотреть все метрики, которые удаляются в целях отладки, агент надстроек метрик можно настроить для запуска в режиме отладки, обновив параметр enabled
до параметра в файле конфигурацииama-metrics-settings-configmap
.debug-mode
true
Этот файл конфигурации можно создать или изменить существующий. Дополнительные сведения см. в разделе "Режим отладки" в разделе "Устранение неполадок" метрик Prometheus.
Параметры интервала слома
Чтобы обновить параметры интервала слома для любого целевого объекта, можно обновить длительность в параметре default-targets-scrape-interval-settings
для этого целевого объекта в конфигурационном рисункеama-metrics-settings-configmap
. Необходимо задать интервалы слома в правильном формате, указанном на этом веб-сайте. В противном случае значение по умолчанию 30 секунд применяется к соответствующим целевым объектам. Например, если вы хотите обновить интервал слома для kubelet
задания, чтобы 60s
затем можно было обновить следующий раздел в YAML:
default-targets-scrape-interval-settings: |-
kubelet = "60s"
coredns = "30s"
cadvisor = "30s"
kubeproxy = "30s"
apiserver = "30s"
kubestate = "30s"
nodeexporter = "30s"
windowsexporter = "30s"
windowskubeproxy = "30s"
kappiebasic = "30s"
prometheuscollectorhealth = "30s"
podannotations = "30s"
и примените YAML с помощью следующей команды: kubectl apply -f .\ama-metrics-settings-configmap.yaml
Настройка пользовательских заданий prometheus скребка
Вы можете сломать метрики Prometheus с помощью Prometheus — pod Monitors и Service Monitors(Рекомендуется), аналогично оператору OSS Prometheus. Следуйте инструкциям по созданию и применению пользовательских ресурсов в кластере.
Кроме того, вы можете следовать инструкциям по созданию , проверке и применению конфигурации для кластера. Формат конфигурации аналогичен файлу конфигурации Prometheus.
Советы по настройке Prometheus и примеры
Ознакомьтесь с некоторыми советами из примеров в этом разделе.
- Настройка с помощью CRD для настраиваемой конфигурации скрести
- Файл конфигурации для настраиваемой конфигурации скребка
Используйте шаблоны Pod и Service Monitor и следуйте спецификации API для создания пользовательских ресурсов (PodMonitor и монитора службы). Обратите внимание , что единственное изменение, необходимое для существующих CR OSS для получения управляемым prometheus является группой API - azmonitoring.coreos.com/v1. Дополнительные сведения см. здесь
Примечание.
Если настраиваемая конфигурация скребка не применяется из-за ошибок проверки, конфигурация слома по умолчанию продолжает использоваться.
Если вы хотите использовать глобальные параметры, которые применяются ко всем заданиям слома, и у вас есть только настраиваемые ресурсы , вам по-прежнему потребуется создать конфигурацию только с глобальными параметрами (параметры для каждого из них в пользовательских ресурсах переопределяют те, которые в глобальном разделе)
Очистка конфигураций
В настоящее время поддерживаемые методы обнаружения целевых объектов для пользовательских ресурсов являются pod и монитор служб
Мониторы pod и службы
Целевые объекты, обнаруженные с помощью мониторов pod и служб, имеют разные __meta_*
метки в зависимости от используемого монитора. Метки в relabelings
разделе можно использовать для фильтрации целевых объектов или замены меток для целевых объектов.
Ознакомьтесь с примерами pod и мониторов служб pod и служб.
Переназначения
Раздел relabelings
применяется во время обнаружения целевого объекта и применяется к каждому целевому объекту для задания. В следующих примерах показаны способы использования relabelings
.
Добавление метки
Добавьте новую метку, вызываемую example_label
значением example_value
для каждой метрики задания. Используйте __address__
в качестве исходной метки только потому, что эта метка всегда существует и добавляет метку для каждого целевого объекта задания.
relabelings:
- sourceLabels: [__address__]
targetLabel: example_label
replacement: 'example_value'
Использование меток pod или монитора служб
Целевые объекты, обнаруженные с помощью мониторов pod и служб, имеют разные __meta_*
метки в зависимости от используемого монитора. Метки __*
удаляются после обнаружения целевых объектов. Чтобы отфильтровать их на уровне метрик, сначала сохраните их, relabelings
назначив имя метки. Затем используется metricRelabelings
для фильтрации.
# Use the kubernetes namespace as a label called 'kubernetes_namespace'
relabelings:
- sourceLabels: [__meta_kubernetes_namespace]
action: replace
targetLabel: kubernetes_namespace
# Keep only metrics with the kubernetes namespace 'default'
metricRelabelings:
- sourceLabels: [kubernetes_namespace]
action: keep
regex: 'default'
Переназначение заданий и экземпляров
Значения и instance
метки можно изменить job
на основе исходной метки так же, как и любую другую метку.
# Replace the job name with the pod label 'k8s app'
relabelings:
- sourceLabels: [__meta_kubernetes_pod_label_k8s_app]
targetLabel: job
# Replace the instance name with the node name. This is helpful to replace a node IP
# and port with a value that is more readable
relabelings:
- sourceLabels: [__meta_kubernetes_node_name]]
targetLabel: instance
Примечание.
Если у вас есть конфигурации перенастроения, убедитесь, что перенастройка не отфильтровывает целевые объекты, а метки, настроенные правильно, соответствуют целевым объектам.
Переназначения метрик
Изменения метрик применяются после слома и перед приемом. metricRelabelings
Используйте раздел для фильтрации метрик после слома. В следующих примерах показано, как это сделать.
Удаление метрик по имени
# Drop the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: drop
regex: 'example_metric_name'
Сохранение только определенных метрик по имени
# Keep only the metric named 'example_metric_name'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: 'example_metric_name'
# Keep only metrics that start with 'example_'
metricRelabelings:
- sourceLabels: [__name__]
action: keep
regex: '(example_.*)'
Переименование метрик
Переименование метрик не поддерживается.
Фильтрация метрик по меткам
# Keep metrics only where example_label = 'example'
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: 'example'
# Keep metrics only if `example_label` equals `value_1` or `value_2`
metricRelabelings:
- sourceLabels: [example_label]
action: keep
regex: '(value_1|value_2)'
# Keep metrics only if `example_label_1 = value_1` and `example_label_2 = value_2`
metricRelabelings:
- sourceLabels: [example_label_1, example_label_2]
separator: ';'
action: keep
regex: 'value_1;value_2'
# Keep metrics only if `example_label` exists as a label
metricRelabelings:
- sourceLabels: [example_label_1]
action: keep
regex: '.+'
Обычная проверка подлинности
- Очистка конфигураций с помощью файла конфигурации
- Очистка конфигураций с помощью CRD(Pod/Service Monitor)
Если вы используете basic_auth
параметр в конфигурации prometheus, выполните действия.
- Создание секрета в пространстве имен kube-system с именем ama-metrics-mtls-secret
Значение password1 — base64encoded.
Пароль ключа 1 может быть любым, но просто необходимо соответствовать файловой конфигурации password_file filepath.
apiVersion: v1
kind: Secret
metadata:
name: ama-metrics-mtls-secret
namespace: kube-system
type: Opaque
data:
password1: <base64-encoded-string>
Секрет секрета ama-metrics-mtls-secret подключается к контейнерам ama-metrics по пути - /etc/prometheus/certs/ и становится доступным для процесса, который удаляет метрики prometheus. Ключ (например, пароль1) в приведенном выше примере будет именем файла, а значение декодировано и добавлено в содержимое файла в контейнере, а скребок prometheus использует содержимое этого файла для получения значения, используемого в качестве пароля, используемого для извлечения конечной точки.
- В конфигурации конфигурации настраиваемого скребка используйте следующий параметр. Поле имени пользователя должно содержать фактическую строку имени пользователя. Поле password_file должно содержать путь к файлу, который содержит пароль.
basic_auth:
username: <username string>
password_file: /etc/prometheus/certs/password1
Предоставив путь к приведенному выше password_file, скребок prometheus использует содержимое файла с именем password1 в пути /etc/prometheus/certs в качестве значения пароля для базовой очистки на основе проверки подлинности.
Если вы используете обычную проверку подлинности и проверку подлинности tls, обратитесь к приведенному ниже разделу. Дополнительные сведения см. в разделе заметки ниже.
Очистка на основе TLS
Если у вас есть экземпляр Prometheus, обслуживающий протокол TLS, и вы хотите сломать метрики из него, необходимо задать схему https
и задать параметры TLS в конфигурации или соответствующем CRD.
Пожалуйста, следуйте приведенным ниже инструкциям.
Создайте секрет в пространстве имен kube-system с именем ama-metrics-mtls-secret. Каждая пара "ключ-значение", указанная в разделе данных секретного объекта, будет подключена в виде отдельного файла в этом расположении /etc/prometheus/certs с именами файлов, указанными в разделе данных. Значения секретов должны быть закодированы в кодировке Base64, прежде чем помещать их в раздел данных, как показано ниже.
Ниже приведен пример создания секрета с помощью YAML.
apiVersion: v1 kind: Secret metadata: name: ama-metrics-mtls-secret namespace: kube-system type: Opaque data: <certfile>: base64_cert_content <keyfile>: base64_key_content
Секрет секрета ama-metrics-mtls-secret подключается к контейнерам ama-metrics по пути - /etc/prometheus/certs/ и становится доступным для процесса, который удаляет метрики prometheus. Ключ (например, certfile) в приведенном выше примере будет именем файла и значением является декодирование base64 и добавлено в содержимое файла в контейнере, а скребок prometheus использует содержимое этого файла для получения значения, используемого в качестве пароля, используемого для удаления конечной точки.
Ниже приведены сведения о том, как предоставить параметры конфигурации TLS с помощью карты конфигурации или CRD.
- Очистка конфигурации с помощью файла конфигурации
- Очистка конфигурации с помощью CRD(pod/Service Monitor)
- Чтобы указать параметр конфигурации TLS в карте конфигурации, выполните приведенный ниже пример.
tls_config:
ca_file: /etc/prometheus/certs/<certfile> # since it is self-signed
cert_file: /etc/prometheus/certs/<certfile>
key_file: /etc/prometheus/certs/<keyfile>
insecure_skip_verify: false
Базовая проверка подлинности и TLS
Если вы хотите использовать базовые параметры проверки подлинности и tls в конфигурации или CRD, просто убедитесь, что секрет ama-metrics-mtls-secret включает все файлы (ключи) в разделе данных с соответствующими значениями в кодировке base 64, как показано ниже.
apiVersion: v1
kind: Secret
metadata:
name: ama-metrics-mtls-secret
namespace: kube-system
type: Opaque
data:
certfile: base64_cert_content # used for Tls
keyfile: base64_key_content # used for Tls
password1: base64-encoded-string # used for basic auth
password2: base64-encoded-string # used for basic auth
Примечание.
Примечание.
Путь /etc/prometheus/certs/certs/ является обязательным, но пароль1 может быть любой строкой и должен соответствовать ключу для данных, созданных выше. Это связано с тем, что секрет ama-metrics-mtls-secret подключен в пути /etc/prometheus/certs/ в контейнере.
Значение в кодировке Base64 автоматически декодируется модулями pod агента при подключении секрета в виде файла.
Убедитесь, что имя секрета — ama-metrics-mtls-secret , и оно находится в пространстве имен kube-system .
Секрет должен быть создан, а затем файл конфигурации или CRD должен быть создан в пространстве имен kube-system. Порядок создания секретов имеет значение. Если нет секрета, но допустимой карты CRD/config, вы найдете ошибки в журнале сборщика —>no file found for cert....
Дополнительные сведения о параметрах конфигурации TLS см. в следующих конфигурациях.
Следующие шаги
Настройка оповещений для метрик Prometheus
Запрос метрик Prometheus
Дополнительные сведения о сборе метрик Prometheus