Мониторинг метрик контроллера 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.
Теперь можно завершить port-forward
процесс, чтобы закрыть переадресацию.
Настройка управляемой службы Azure Monitor для Prometheus и Управляемой Grafana Azure с помощью Container Insights
Управляемая служба 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-configmap
kube-system
ConfigMap в файле . Если у вас уже есть конфигурация, может потребоваться создать резервную копию или объединить ее с этой конфигурацией.
Можно создать резервную копию существующей 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.
Панель мониторинга производительности обработки запросов
Эта панель мониторинга обеспечивает видимость производительности обработки запросов для различных конечных точек входящего трафика, которые являются конечными точками ваших приложений, в которые контроллер входящего трафика перенаправляет трафик. В нем показаны процентиль P50, P95 и P99 общего количества запросов и времени ответа вышестоящего потока. Вы также можете просматривать статистические данные об ошибках запроса и задержках. Используйте эту панель мониторинга для просмотра и повышения производительности и масштабируемости приложений.
Эту панель мониторинга можно скачать на сайте GitHub.
Импорт панели мониторинга
Чтобы импортировать панель мониторинга Grafana, разверните меню слева и щелкните " Импортировать " в разделе "Панели мониторинга".
Затем отправьте нужный файл панели мониторинга и нажмите кнопку "Загрузить".
Следующие шаги
- Вы можете настроить масштабирование рабочих нагрузок с помощью метрик входящего трафика, скребированных с помощью Prometheus с помощью автомасштабирования на основе событий Kubernetes (KEDA). Узнайте больше об интеграции KEDA с AKS.
- Создайте и запустите нагрузочный тест с помощью Azure Load Testing для тестирования производительности рабочей нагрузки и оптимизации масштабируемости приложений.
Azure Kubernetes Service