使用Prometheus实现Istio可观测性
Istio服务网格通过边车代理从应用层抽象网络。您可以利用Istio为基础设施内所有通信实施安全和高级网络策略。
然而,Istio的另一项重要功能是可观测性。借助Istio,您能够观察基础设施中所有微服务的性能与行为(见下图)。大型组织中站点可靠性工程师(SRE)的主要职责之一是监控其应用的关键指标,如CPU利用率、内存利用率、延迟和吞吐量。
本文将探讨SRE如何从集成三种开源软件——Istio、Prometheus和Grafana中获益。Istio是最著名的服务软件,Prometheus是最广泛使用的监控软件,而Grafana是最知名的可视化工具。
注意:步骤已针对Istio 1.17.X版本测试
查看Istio、Prometheus和Grafana配置视频
如需跟随视频步骤,请观看此视频:
步骤1:前往Istio插件并应用Prometheus和Grafana的YAML文件
首先,使用命令进入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 入口网关
为了实验工作模型,我们将部署 httpbin
服务到启用了 Istio 的命名空间中。我们将创建一个 Istio 入口网关 对象,以接收来自公共的该服务的流量。
我们还将端口转发 Istio 入口网关到一个特定的端口 – 7777。

您应该在 localhost:7777
看到以下屏幕。

步骤 3:打开 Prometheus 和 Grafana 仪表板
您可以使用以下命令打开 Prometheus 仪表板。
istioctl dashboard prometheus
istioctl dashboard grafana
Grafana 和 Prometheus 都将打开在本地主机上。

步骤 4:从 Postman 发出 HTTP 请求
我们将观察 httpbin
服务在流量负载下如何消耗 CPU 或内存。我们将在 Postman 应用中向 localhost:7777
发送一些 GET
和 POST
请求。

当你多次向httpbin
服务发送GET
或POST
请求时,会消耗资源,这些资源的使用情况可以在Grafana中查看。但首先,我们需要在Prometheus和Grafana中为httpbin
服务配置指标。
步骤5:在Prometheus中配置指标
可以选择与Kubernetes资源相关的多种指标,如API服务器、应用程序、工作负载、envoy等。我们将选择container_memory_working_set_bytes
作为我们的配置指标。
在Prometheus应用中,我们将选择要抓取指标的命名空间,使用以下搜索词:container_memory_working_set_bytes { namespace= “istio-telemetry”}
(istio-telemetry
是我们启用Istio的命名空间名称,httpbin
服务部署于此)
注意,仅运行此命令,我们得到的是命名空间的内存。由于我们想要分析Pod的内存使用情况,可以通过汇总每个Pod的内存使用量来计算总内存消耗。以下查询将帮助我们获得所需的结果:sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)

注意:Prometheus提供了大量灵活性来过滤、切片和切块指标数据。本文的核心思想是展示Istio发出并将指标发送到Prometheus进行收集的能力。
步骤6:在Grafana中配置Istio指标图表
现在,您只需在Prometheus中执行查询sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod)
,并随时间绘制图表。操作步骤包括在Grafana中新建一个仪表板,将查询粘贴到指标浏览器中。Grafana将自动生成时间序列图表。您可以对其进行编辑,添加合适的名称、图例和标题,以便与Ops团队的其他成员共享。

在Grafana中调整和定制数据以及展示Prometheus指标有多种方法。您可以根据企业需求选择相应的定制方式。我在视频中进行了一些实验,欢迎观看参考。
结论
Istio的服务网格在提供基础设施整体可观测性方面极为强大。本文仅展示了利用Istio、Prometheus和Grafana进行指标抓取与可视化的一个小案例。您还可以使用Istio进行日志记录、日志追踪以及实时流量监控;这些主题将在后续博文中详细介绍。
Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring