Введение в наблюдаемость 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, используя следующую команду:
kubectl apply -f prometheus.yaml
kubectl apply -f grafana.yaml
Обратите внимание, что эти дополнительные файлы YAML применяются к пространству имен istio-system
по умолчанию.

Шаг 2: Развертывание нового сервиса и перенаправление порта Istio Ingress Gateway
Для эксперимента с рабочей моделью мы развернем сервис httpbin
в пространстве имен, включенном в Istio. Мы создадим объект шлюза входа Istio, чтобы принимать трафик к сервису из общественности.
Мы также перенаправим порт шлюза входа Istio на определенный порт-7777.

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

Шаг 3: Открытие панели управления Prometheus и Grafana
Вы можете открыть панель управления Prometheus, используя следующую команду.
istioctl dashboard prometheus
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