Как настроить Istio, Prometheus и Grafana для мониторинга

Введение в наблюдаемость Istio с использованием Prometheus

Сетевая сетка Istio абстрагирует сеть от слоев приложения с помощью прокси-агентов. Вы можете реализовать безопасность и продвинутые сетевые политики для всей коммуникации по вашей инфраструктуре, используя Istio.

Но еще одной важной особенностью Istio является наблюдаемость. Вы можете использовать Istio для наблюдения за производительностью и поведением всех ваших микросервисов в вашей инфраструктуре (см. изображение ниже). Одной из основных обязанностей инженеров по надежности сайта (SRE) в крупных организациях является мониторинг золотых метрик их приложений, таких как использование ЦП, использование памяти, задержка и пропускная способность.

В этой статье мы обсудим, как инженеры по надежности сайта могут извлечь пользу из интеграции трех программ с открытым исходным кодом – Istio, Prometheus и Grafana. В то время как Istio является наиболее известным сервисным программным обеспечением, Prometheus является наиболее широко используемым программным обеспечением мониторинга, а Grafana – наиболее известным инструментом визуализации.

Примечание: Шаги протестированы для Istio 1.17.X

Просмотр видео по настройке Istio, Prometheus и Grafana

Посмотрите видео, если вы хотите следовать шагам из видео:

Шаг 1: Перейдите в дополнения Istio и примените файл YAML Prometheus и Grafana

Сначала перейдите в папку с дополнениями в каталоге Istio с помощью команды. Поскольку я использую 1.17.1, путь для меня будет istio-1.17.1/samples/addons;

Вы заметите, что Istio уже предоставляет несколько файлов YAML для настройки Grafana, Prometheus, Jaeger, Kiali и т. д. Вы можете настроить Prometheus, используя следующую команду:

Shell

 

kubectl apply -f prometheus.yaml
Shell

 

kubectl apply -f grafana.yaml

Обратите внимание, что эти дополнительные файлы YAML применяются к пространству имен istio-system по умолчанию.


Шаг 2: Развертывание нового сервиса и перенаправление порта Istio Ingress Gateway

Для эксперимента с рабочей моделью мы развернем сервис httpbin в пространстве имен, включенном в Istio. Мы создадим объект шлюза входа Istio, чтобы принимать трафик к сервису из общественности.

Мы также перенаправим порт шлюза входа Istio на определенный порт-7777.


Вы должны увидеть следующий экран по адресу localhost:7777


Шаг 3: Открытие панели управления Prometheus и Grafana

Вы можете открыть панель управления Prometheus, используя следующую команду.

Shell

 

istioctl dashboard prometheus
Shell

 

istioctl dashboard grafana

Как Grafana, так и Prometheus откроются на локальном хосте.


Шаг 4: Отправка HTTP-запросов из Postman

Мы увидим, как сервис httpbin потребляет процессорное время или память при нагрузке трафика. Мы создадим несколько запросов GET и POST к localhost:7777 из приложения Postman.


После того как вы GET или POST запросы к сервису httpbin несколько раз, будет использование ресурсов, и мы сможем увидеть их в Grafana. Но сначала нам нужно настроить метрики для сервиса httpbin в Prometheus и Grafana. 

Шаг 5: Настройка метрик в Prometheus

Можно выбрать диапазон метрик, связанных с любыми ресурсами Kubernetes, такими как сервер API, приложения, рабочие нагрузки, envoy и т. д. Мы выберем container_memory_working_set_bytes метрики для нашей конфигурации. 

В приложении Prometheus мы выберем пространство имен для сбора метрик, используя следующий поисковый запрос: container_memory_working_set_bytes { namespace= "istio-telemetry"} (istio-telemetry – это имя нашего пространства имен с поддержкой Istio, где развернут сервис httpbin)

Обратите внимание, что просто запустив это, мы получаем память для нашего пространства имен. Так как мы хотим проанализировать использование памяти наших pods, мы можем рассчитать общую память, потребляемую путем суммирования использования памяти каждого pod, сгруппированного по pod. Следующий запрос поможет нам получить желаемый результат: sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)


Примечание: Prometheus предоставляет много гибкости для фильтрации, нарезки и измельчения данных метрик. Центральная идея этой статьи заключалась в демонстрации возможности Istio излучать и отправлять метрики в Prometheus для сбора

Шаг 6: Настройка графиков метрик Istio в Grafana

Теперь вы можете просто взять запрос sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod) в Prometheus и построить график с временем. Все, что вам нужно сделать, это создать новый дашборд в Grafana и вставить запрос в браузер метрик. Grafana построит временной ряд графика. Вы можете редактировать график с подходящими именами, легендами и заголовками для обмена с другими заинтересованными сторонами в команде Ops.


Есть несколько способов настроить и настроить данные и отобразить метрики Prometheus в Grafana. Вы можете выбрать, чтобы все настройки основывались на ваших потребностях предприятия. Я провел несколько экспериментов в видео; не стесняйтесь проверить это.

Заключение

Istio сервис-сеть чрезвычайно мощный в обеспечении общей видимости через инфраструктуру. В этой статье мы только предложили небольшой пример сбора и визуализации метрик с использованием Istio, Prometheus и Grafana. Вы можете выполнять логирование и трассировку логов и реального трафика с использованием Istio; мы рассмотрим эти темы в наших следующих блогах.

Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring