Используйте Prometheus и Grafana для визуализации показателей ваших микросервисов
Если вы используете Istio для управления своими микросервисами в Kubernetes, сбор и визуализация ваших показателей - одна из ключевых функций, которые он предоставляет. Это дает вам полный контроль и власть над сеткой и позволяет лучше понимать свои микросервисы.
Он не только предоставляет вашей операционной группе полезные сведения для устранения проблем, но также предоставляет вашей группе безопасности ценные данные. Это помогает им делать такие вещи, как подключение вашей сети к программному обеспечению для обнаружения вторжений для дальнейшей защиты вашего приложения.
Эта история является продолжением статьи Как использовать Istio для внедрения ошибок для устранения неполадок микросервисов в Kubernetes. Сегодня давайте обсудим сбор и визуализацию сервисной сетки Istio с помощью Прометей и Графана.
Как Istio собирает показатели?
Если вы следите за этой серией, вы должны знать, что Istio использует прокси Envoy в качестве вспомогательных средств для ваших контейнеров микросервисов.
Поскольку весь трафик проходит через эти прокси, они отправляют данные телеметрии в Prometheus, которые можно хранить и визуализировать с помощью таких инструментов, как Grafana.
Вы также можете экспортировать свои метрики в такие инструменты, как стек ELK или сканер безопасности, чтобы получить дополнительную информацию из данных и использовать их для будущего анализа и машинного обучения.
Предпосылки
Мы также будем использовать приложение Bookinfo в этой задаче и генерировать некоторый трафик. Затем мы запросим метрики с помощью Prometheus и визуализируем данные телеметрии с помощью Grafana.
Убедитесь, что вы используете кластер Kubernetes и поверх него установлен Istio. Следуйте руководству Начало работы с Istio в Kubernetes и убедитесь, что вы выполнили все задачи из руководства и развернули приложение Bookinfo.
Сбор данных телеметрии
Служба ratings-v2
может подключаться к внутреннему серверу базы данных MongoDB. Давайте воспользуемся этим, чтобы смоделировать реалистичную ситуацию с интерфейсом и сервером.
Установите службу ratings-v2
:
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml serviceaccount/bookinfo-ratings-v2 created deployment.apps/ratings-v2 created
Теперь установите службу mongodb
:
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-db.yaml service/mongodb created deployment.apps/mongodb-v1 created
Теперь давайте определим правила назначения, чтобы мы могли направлять трафик в соответствии с выбранными метками. Это то же правило назначения, которое мы применяли в предыдущих статьях.
$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml destinationrule.networking.istio.io/productpage created destinationrule.networking.istio.io/reviews created destinationrule.networking.istio.io/ratings created destinationrule.networking.istio.io/details created
Следующим шагом является предоставление микросервисов с помощью виртуальных сервисов. Давайте сначала посмотрим на файл YAML.
Как вы видите в YAML, весь reviews
трафик должен идти к reviews-v3
, а весь ratings
трафик к ratings-v2
.
Примените виртуальную службу, запустив следующее:
$ kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-db.yaml virtualservice.networking.istio.io/reviews created virtualservice.networking.istio.io/ratings created
Отправить трафик
Следующим шагом является отправка некоторого трафика через службу, чтобы мы могли проверить, собирает ли Istio метрики, в следующем разделе.
Посетите страницу продукта и обновите страницу в браузере несколько раз, чтобы привлечь трафик.
Метрики запроса с использованием Prometheus
Раскройте Prometheus через прокси-сервер переадресации портов.
$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 & [1] 910 $ Forwarding from 127.0.0.1:9090 -> 9090
Теперь откройте ссылку http://127.0.0.1:9090
в своем браузере.
Если вы понимаете язык запросов Prometheus, мы можем выполнить поиск по определенной метрике, просто введя имя параметра.
Начнем с ввода istio_tcp_connections_opened_total
.
А что насчет istio_tcp_connections_closed_total
?
Давайте посмотрим на общее количество запросов с помощью istio_requests_total
, но на этот раз посмотрим на графическое представление. Перейдите на вкладку «График», введите метрику в поле поиска и нажмите «Выполнить».
Давайте теперь попробуем несколько сложных запросов. Как насчет всех запросов к микросервису reviews-v3
?
istio_requests_total{destination_service="reviews.default.svc.cluster.local", destination_version="v3"}
А скорость запросов к микросервису productpage
?
rate(istio_requests_total{destination_service=~"productpage.*", response_code="200"}[5m])
Как видите, мы успешно можем собирать и запрашивать метрики телеметрии с помощью Prometheus.
Визуализируйте метрики с помощью Grafana
Техническому специалисту может показаться достаточно запроса метрик через Prometheus. Тем не менее, если вы хотите, чтобы кто-то интуитивно визуализировал данные, особенно операционная группа и люди, которые хотят анализировать данные, мы можем использовать инструмент визуализации данных, такой как Grafana.
Раскройте Grafana через прокси-сервер переадресации портов.
kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &
Откройте URL-адрес в браузере.
Выберите папку Istio, и, как видите, вы уже получаете множество предварительно настроенных панелей мониторинга Grafana прямо из коробки при установке Istio. Вы можете использовать панель мониторинга для мониторинга каждого компонента Istio и ваших микросервисов.
Вы также можете настраивать и создавать новые информационные панели в соответствии с вашими требованиями.
Если вы откроете панель управления сервисом Grafana, вы сможете визуализировать показатели, относящиеся ко всем вашим сервисам. Вы также можете отфильтровать определенные службы, чтобы увидеть их показатели.
Теперь генерируйте некоторый трафик, обновляя страницу продукта несколько раз, и вы должны увидеть, что панель управления Grafana начала показывать показатели.
Если вы хотите понять рабочую нагрузку, в Grafana есть встроенная панель управления рабочей нагрузкой - откройте панель, чтобы увидеть график рабочей нагрузки.
Изучите другие панели мониторинга, чтобы увидеть несколько визуализаций и показателей, которые вы можете собирать и отслеживать с помощью Istio.
Поздравляю! Вы завершили задание по визуализации показателей своих микросервисов с помощью Prometheus и Grafana.
Заключение
Спасибо, что прочитали! Надеюсь, вам понравилась статья. В следующей части мы обсудим Как укрепить ваши микросервисы в Kubernetes с помощью Istio », так что до встречи в следующей истории!