Мониторинг метрик контроллера ingress-nginx в надстройке маршрутизации приложений с помощью Prometheus в Grafana (предварительная версия)

Контроллер ingress-nginx в надстройке маршрутизации приложений предоставляет множество метрик для запросов, процесса nginx и контроллера, который может быть полезным для анализа производительности и использования приложения.

Надстройка маршрутизации приложений предоставляет конечную точку метрик Prometheus через /metrics порт 10254.

Важно!

Предварительные версии функций AKS доступны на уровне самообслуживания. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS предоставляются с частичной клиентской поддержкой по мере возможности. Следовательно, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения доступны в следующих статьях поддержки.

Необходимые компоненты

  • Кластер Служба Azure Kubernetes (AKS) с поддержкой надстройки маршрутизации приложений.
  • Экземпляр Prometheus, например управляемая служба Azure Monitor для Prometheus.
  • Экземпляр Grafana, например Управляемый Grafana Azure.

Проверка конечной точки метрик

Чтобы проверить собираемые метрики, можно настроить порт пересылки на один из модулей pod контроллера ingress-nginx.

kubectl get pods -n app-routing-system
NAME                            READY   STATUS    RESTARTS   AGE
external-dns-667d54c44b-jmsxm   1/1     Running   0          4d6h
nginx-657bb8cdcf-qllmx          1/1     Running   0          4d6h
nginx-657bb8cdcf-wgcr7          1/1     Running   0          4d6h

Теперь перенаправите локальный порт в порт 10254 на одном из модулей pod nginx.

kubectl port-forward nginx-657bb8cdcf-qllmx -n app-routing-system :10254
Forwarding from 127.0.0.1:43307 -> 10254
Forwarding from [::1]:43307 -> 10254

Запишите локальный порт (43307 в данном случае) и откройте http://localhost:43307/metrics в браузере. Вы должны увидеть загрузку метрик контроллера ingress-nginx.

Screenshot of the Prometheus metrics in the browser.

Теперь можно завершить port-forward процесс, чтобы закрыть переадресацию.

Настройка управляемой службы Azure Monitor для Prometheus и Управляемой Grafana Azure с помощью контейнеров Аналитика

Управляемая служба Azure Monitor для Prometheus — это полностью управляемая служба, совместимая с Prometheus, которая поддерживает стандартные отраслевые функции, такие как PromQL, панели мониторинга Grafana и оповещения Prometheus. Эта служба требует настройки надстройки метрик для агента Azure Monitor, который отправляет данные в Prometheus. Если кластер не настроен в надстройке, вы можете настроить кластер Служба Azure Kubernetes (AKS) для отправки данных в управляемую службу Azure Monitor для Prometheus и отправить собранные метрики в экземпляр Azure Managed Grafana.

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

После обновления кластера с помощью агента Azure Monitor необходимо настроить агент, чтобы включить очистку на основе заметок Pod, которые добавляются в модули pod ingress-nginx. Один из способов задать этот параметр — в ama-metrics-settings-configmap ConfigMap в kube-system пространстве имен.

Внимание

Это заменит существующий ama-metrics-settings-configmapkube-systemConfigMap в файле . Если у вас уже есть конфигурация, может потребоваться создать резервную копию или объединить ее с этой конфигурацией.

Можно создать резервную копию существующей ama-metrics-settings-config конфигурации, если она существует, выполнив команду kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml

Следующая конфигурация задает podannotationnamespaceregex параметр для .* отмены всех пространств имен.

kubectl apply -f - <<EOF
kind: ConfigMap
apiVersion: v1
metadata:
  name: ama-metrics-settings-configmap
  namespace: kube-system
data:
  schema-version:
    #string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent.
    v1
  config-version:
    #string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated)
    ver1
  prometheus-collector-settings: |-
    cluster_alias = ""
  default-scrape-settings-enabled: |-
    kubelet = true
    coredns = false
    cadvisor = true
    kubeproxy = false
    apiserver = false
    kubestate = true
    nodeexporter = true
    windowsexporter = false
    windowskubeproxy = false
    kappiebasic = true
    prometheuscollectorhealth = false
  # Regex for which namespaces to scrape through pod annotation based scraping.
  # This is none by default. Use '.*' to scrape all namespaces of annotated pods.
  pod-annotation-based-scraping: |-
    podannotationnamespaceregex = ".*"
  default-targets-metrics-keep-list: |-
    kubelet = ""
    coredns = ""
    cadvisor = ""
    kubeproxy = ""
    apiserver = ""
    kubestate = ""
    nodeexporter = ""
    windowsexporter = ""
    windowskubeproxy = ""
    podannotations = ""
    kappiebasic = ""
    minimalingestionprofile = true
  default-targets-scrape-interval-settings: |-
    kubelet = "30s"
    coredns = "30s"
    cadvisor = "30s"
    kubeproxy = "30s"
    apiserver = "30s"
    kubestate = "30s"
    nodeexporter = "30s"
    windowsexporter = "30s"
    windowskubeproxy = "30s"
    kappiebasic = "30s"
    prometheuscollectorhealth = "30s"
    podannotations = "30s"
  debug-mode: |-
    enabled = false
EOF

Через несколько минут ama-metrics модули pod в kube-system пространстве имен должны перезапуститься и забрать новую конфигурацию.

Просмотр визуализации метрик в Управляемой Grafana Azure

Теперь, когда у вас есть управляемая служба Azure Monitor для Prometheus и Управляемой Grafana Azure, необходимо получить доступ к управляемому экземпляру Grafana.

Существует две официальные панели мониторинга ingress-nginx, которые можно скачать и импортировать в экземпляр Grafana:

  • Панель мониторинга контроллера Ingress-nginx
  • Панель мониторинга производительности обработки запросов

Панель мониторинга контроллера Ingress-nginx

Эта панель мониторинга обеспечивает видимость тома запроса, подключений, показателей успешности, перезагрузки конфигурации и конфигураций из синхронизации. Вы также можете использовать его для просмотра давления сетевых операций ввода-вывода, памяти и ЦП контроллера входящего трафика. Наконец, он также показывает время отклика P50, P95 и P99 percentile для ваших входящего трафика и их пропускной способности.

Эту панель мониторинга можно скачать на сайте GitHub.

Screenshot of a browser showing the ingress-nginx dashboard on Grafana.

Панель мониторинга производительности обработки запросов

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

Эту панель мониторинга можно скачать на сайте GitHub.

Screenshot of a browser showing the ingress-nginx request handling performance dashboard on Grafana.

Импорт панели мониторинга

Чтобы импортировать панель мониторинга Grafana, разверните меню слева и щелкните " Импортировать " в разделе "Панели мониторинга".

Screenshot of a browser showing the Grafana instance with Import dashboard highlighted.

Затем отправьте нужный файл панели мониторинга и нажмите кнопку "Загрузить".

Screenshot of a browser showing the Grafana instance import dashboard dialog.

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