$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
将您的应用程序添加到网格后,您可以观察数据流经您的应用程序。如果您没有安装自己的应用程序,您可以通过安装Bookinfo示例应用程序来了解Red Hat OpenShift Service Mesh中的可观察性工作原理。
Red Hat OpenShift Service Mesh提供以下控制台来查看您的服务网格数据
Kiali控制台 - Kiali是Red Hat OpenShift Service Mesh的管理控制台。
Jaeger控制台 - Jaeger是Red Hat OpenShift分布式追踪平台的管理控制台。
Grafana控制台 - Grafana为服务网格管理员提供高级查询和指标分析以及Istio数据的仪表板。可以选择使用Grafana分析服务网格指标。
Prometheus控制台 - Red Hat OpenShift Service Mesh使用Prometheus存储来自服务的遥测信息。
安装服务网格控制平面时,它会自动为每个已安装组件生成路由。获得路由地址后,您可以访问Kiali、Jaeger、Prometheus或Grafana控制台来查看和管理您的服务网格数据。
必须启用并安装该组件。例如,如果您没有安装分布式追踪,则无法访问Jaeger控制台。
以具有集群管理员权限的用户身份登录到OpenShift Container Platform Web控制台。如果您使用Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
导航到网络 → 路由。
在路由页面上,从命名空间菜单中选择服务网格控制平面项目,例如istio-system
。
位置列显示每个路由的链接地址。
如有必要,请使用过滤器查找要访问其路由的组件控制台。单击路由位置以启动控制台。
单击使用OpenShift登录。
以具有cluster-admin
角色的用户身份登录到OpenShift Container Platform CLI。如果您使用Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
切换到服务网格控制平面项目。在此示例中,istio-system
是服务网格控制平面项目。运行以下命令
$ oc project istio-system
要获取各种Red Hat OpenShift Service Mesh控制台的路由,请运行以下命令
$ oc get routes
此命令将返回Kiali、Jaeger、Prometheus和Grafana Web控制台以及服务网格中任何其他路由的URL。您应该看到类似于以下内容的输出
NAME HOST/PORT SERVICES PORT TERMINATION
bookinfo-gateway bookinfo-gateway-yourcompany.com istio-ingressgateway http2
grafana grafana-yourcompany.com grafana <all> reencrypt/Redirect
istio-ingressgateway istio-ingress-yourcompany.com istio-ingressgateway 8080
jaeger jaeger-yourcompany.com jaeger-query <all> reencrypt
kiali kiali-yourcompany.com kiali 20001 reencrypt/Redirect
prometheus prometheus-yourcompany.com prometheus <all> reencrypt/Redirect
从HOST/PORT
列复制您要访问的控制台的URL到浏览器中以打开控制台。
单击使用OpenShift登录。
您可以在Kiali控制台中查看应用程序的拓扑、健康状况和指标。如果您的服务遇到问题,Kiali控制台允许您查看通过服务的 数据流。您可以查看不同级别网格组件的洞察信息,包括抽象应用程序、服务和工作负载。Kiali还提供服务网格命名空间的实时交互式图形视图。
要访问Kiali控制台,您必须已安装Red Hat OpenShift Service Mesh和Kiali,并且已对其进行配置。
安装过程会创建一个访问Kiali控制台的路由。
如果您知道Kiali控制台的URL,可以直接访问它。如果您不知道URL,请使用以下说明。
使用管理员角色登录OpenShift Container Platform Web控制台。
点击主页 → 项目。
在项目页面上,如有必要,使用过滤器查找项目的名称。
点击项目的名称,例如bookinfo
。
在项目详情页面上的启动器部分,点击Kiali链接。
使用您访问OpenShift Container Platform控制台时使用的相同用户名和密码登录Kiali控制台。
首次登录Kiali控制台时,您会看到概述页面,其中显示了您有权查看的服务网格中的所有命名空间。
如果您正在验证控制台安装,并且尚未将命名空间添加到网格中,则除了istio-system
之外,可能没有任何其他数据显示。
使用开发者角色登录OpenShift Container Platform Web控制台。
点击项目。
在项目详情页面上,如有必要,使用过滤器查找项目的名称。
点击项目的名称,例如bookinfo
。
在项目页面上的启动器部分,点击Kiali链接。
单击使用OpenShift登录。
Kiali图形提供强大的服务网格流量可视化功能。拓扑图将实时请求流量与Istio配置信息相结合,从而立即洞察服务网格的行为,让您可以快速查明问题。多种图形类型允许您将流量可视化为高级服务拓扑、低级工作负载拓扑或应用程序级拓扑。
有多个图形可供选择
应用图形显示所有标记相同的应用程序的聚合工作负载。
服务图形为网格中的每个服务显示一个节点,但从图形中排除所有应用程序和工作负载。它提供高级视图并聚合已定义服务的全部流量。
版本化应用图形为每个应用程序版本显示一个节点。应用程序的所有版本都分组在一起。
工作负载图形为服务网格中的每个工作负载显示一个节点。此图不需要您使用应用程序和版本标签。如果您的应用程序不使用版本标签,请使用此图。
图形节点用各种信息进行装饰,指出了各种路由选项,例如虚拟服务和服务条目,以及故障注入和断路器等特殊配置。它可以识别mTLS问题、延迟问题、错误流量等等。该图形高度可配置,可以显示流量动画,并具有强大的查找和隐藏功能。
点击图例按钮以查看有关图形中显示的形状、颜色、箭头和徽章的信息。
要查看指标摘要,请选择图形中的任何节点或边,以在摘要详细信息面板中显示其指标详细信息。
Kiali图形的布局可能会根据您的应用程序架构和要显示的数据而有所不同。例如,图形节点的数量及其交互可以决定Kiali图形的呈现方式。由于不可能创建一种适用于所有情况的单一布局,因此Kiali 提供了多种不同的布局选择。
如果您没有安装自己的应用程序,请安装Bookinfo示例应用程序。然后通过多次输入以下命令来生成Bookinfo应用程序的流量。
$ curl "http://$GATEWAY_URL/productpage"
此命令模拟用户访问应用程序的productpage
微服务。
启动Kiali控制台。
单击使用OpenShift登录。
在Kiali控制台中,点击图形以查看命名空间图形。
从命名空间菜单中,选择您的应用程序命名空间,例如bookinfo
。
要选择不同的图形布局,请执行以下一项或两项操作
从图形顶部的菜单中选择不同的图形数据分组。
应用图形
服务图形
版本化应用图形(默认)
工作负载图形
从图形底部的图例中选择不同的图形布局。
布局默认 dagre
布局 1 cose-bilkent
布局 2 cola
您可以在Kiali控制台中查看工作负载的日志。工作负载详情页面包含一个日志选项卡,该选项卡显示统一的日志视图,其中显示应用程序和代理日志。您可以选择希望Kiali中的日志显示刷新频率。
要更改Kiali中显示的日志的日志级别,您可以更改工作负载或代理的日志配置。
已安装并配置服务网格。
已安装并配置Kiali。
Kiali控制台的地址。
已将应用程序或Bookinfo示例应用程序添加到网格中。
启动Kiali控制台。
单击使用OpenShift登录。
Kiali概述页面显示已添加到网格中且您有权查看的命名空间。
点击工作负载。
在工作负载页面上,从命名空间菜单中选择项目。
如有必要,使用过滤器查找您要查看其日志的工作负载。点击工作负载名称。例如,点击ratings-v1。
在工作负载详情页面上,点击日志选项卡以查看工作负载的日志。
如果您没有看到任何日志条目,您可能需要调整时间范围或刷新间隔。 |
您可以在Kiali控制台中查看应用程序、工作负载和服务的入站和出站指标。详细信息页面包含以下选项卡
入站应用程序指标
出站应用程序指标
入站工作负载指标
出站工作负载指标
入站服务指标
这些选项卡显示预定义的指标仪表板,这些仪表板针对相关的应用程序、工作负载或服务级别量身定制。应用程序和工作负载详细信息视图显示请求和响应指标,例如卷、持续时间、大小或TCP流量。服务详细信息视图仅显示入站流量的请求和响应指标。
Kiali允许您通过选择图表维度来自定义图表。Kiali还可以呈现源或目标代理指标报告的指标。为了进行故障排除,Kiali可以将跟踪跨度叠加在指标上。
已安装并配置服务网格。
已安装并配置Kiali。
Kiali控制台的地址。
(可选)已安装并配置分布式跟踪。
启动Kiali控制台。
单击使用OpenShift登录。
Kiali概述页面显示已添加到网格中且您有权查看的命名空间。
点击应用程序、工作负载或服务。
在应用程序、工作负载或服务页面上,从命名空间菜单中选择项目。
如有必要,使用过滤器查找要查看其日志的应用程序、工作负载或服务。单击名称。
在应用程序详情、工作负载详情或服务详情页面上,单击入站指标或出站指标选项卡以查看指标。
分布式追踪是通过追踪应用程序中服务调用的路径来追踪应用程序中各个服务性能的过程。每次用户在应用程序中采取行动时,都会执行一个请求,该请求可能需要许多服务交互才能产生响应。此请求的路径称为分布式事务。
Red Hat OpenShift Service Mesh 使用 Red Hat OpenShift 分布式追踪平台,允许开发人员查看微服务应用程序中的调用流程。
您可以通过将命名元素和opentelemetry
提供程序附加到ServiceMeshControlPlane
中的spec.meshConfig.extensionProviders
规范中,将追踪数据暴露给 Red Hat OpenShift 分布式追踪平台 (Tempo)。然后,遥测自定义资源配置 Istio 代理以收集追踪跨度并将它们发送到 OpenTelemetry Collector 端点。
您可以在网格命名空间中创建一个 Red Hat 版本的 OpenTelemetry 实例,并将其配置为将追踪数据发送到追踪平台后端服务。
您已在tracing-system
命名空间中使用 Red Hat Tempo Operator 创建了 TempoStack 实例。有关更多信息,请参见“安装 Red Hat OpenShift 分布式追踪平台 (Tempo)”。
您已将 Red Hat 版本的 OpenTelemetry Operator 安装在推荐的命名空间或openshift-operators
命名空间中。有关更多信息,请参见“安装 Red Hat 版本的 OpenTelemetry”。
如果使用 Red Hat OpenShift Service Mesh 2.5 或更早版本,请将ServiceMeshControlPlane
资源的spec.tracing.type
参数设置为None
,以便可以将追踪数据发送到 OpenTelemetry Collector。
在网格命名空间中创建一个 OpenTelemetry Collector 实例。此示例使用bookinfo
命名空间。
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
name: otel
namespace: bookinfo (1)
spec:
mode: deployment
config: |
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
exporters:
otlp:
endpoint: "tempo-sample-distributor.tracing-system.svc.cluster.local:4317" (2)
tls:
insecure: true
service:
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [otlp]
1 | 在ServiceMeshMemberRoll 成员列表中包含命名空间。 |
2 | 在此示例中,TempoStack 实例正在tracing-system 命名空间中运行。您不必在ServiceMeshMemberRoll 成员列表中包含 TempoStack 命名空间,例如`tracing-system`。 |
|
检查otel-collector
pod 日志并验证 pod 是否正在运行。
otel-collector
pod 日志检查示例$ oc logs -n bookinfo -l app.kubernetes.io/name=otel-collector
在istio-system
命名空间中创建或更新现有的ServiceMeshControlPlane
自定义资源 (CR)。
kind: ServiceMeshControlPlane
apiVersion: maistra.io/v2
metadata:
name: basic
namespace: istio-system
spec:
addons:
grafana:
enabled: false
kiali:
enabled: true
prometheus:
enabled: true
meshConfig:
extensionProviders:
- name: otel
opentelemetry:
port: 4317
service: otel-collector.bookinfo.svc.cluster.local
policy:
type: Istiod
telemetry:
type: Istiod
version: v2.6
从 SMCP 2.5 升级到 2.6 时,请将 SMCP
spec.tracing.type 参数示例
|
在istio-system
命名空间中创建一个 Telemetry 资源。
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: otel
randomSamplingPercentage: 100
验证istiod
日志。
配置 Kiali 资源规范以启用 Kiali 工作负载追踪仪表板。您可以使用该仪表板查看追踪查询结果。
apiVersion: kiali.io/v1alpha1
kind: Kiali
# ...
spec:
external_services:
tracing:
query_timeout: 30 (1)
enabled: true
in_cluster_url: 'http://tempo-sample-query-frontend.tracing-system.svc.cluster.local:16685'
url: '[Tempo query frontend Route url]'
use_grpc: true (2)
1 | 默认query_timeout 整数值为 30 秒。如果将该值设置为大于 30 秒,则必须更新 Kiali CR 中的.spec.server.write_timeout ,并将注释haproxy.router.openshift.io/timeout=50s 添加到 Kiali 路由。.spec.server.write_timeout 和haproxy.router.openshift.io/timeout= 都必须大于query_timeout 。 |
2 | 如果您没有使用默认的 HTTP 或 gRPC 端口,请将in_cluster_url: 端口替换为您自定义的端口。 |
Kiali 1.73 使用 Jaeger Query API,这会导致响应时间更长,具体取决于 Tempo 资源限制。如果在 Kiali UI 中看到 |
向您的应用程序发送请求。
验证istiod
pod 日志和otel-collector
pod 日志。
OpenTelemetryCollector
启用 Service Mesh dataPlane
mTLS 加密后,所有流量都将被 TLS 加密。
要使网格能够与OpenTelemetryCollector
服务通信,请通过为OpenTelemetryCollector
服务应用DestinationRule
来禁用 TLS trafficPolicy
。
DestinationRule
Tempo CR 示例apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: otel-disable-tls
spec:
host: "otel-collector.bookinfo.svc.cluster.local"
trafficPolicy:
tls:
mode: DISABLE
如果您在非 Service Mesh 成员命名空间中创建了 TempoStack 实例,则不需要此额外的 |
启用 Service Mesh dataPlane
mTLS 加密并在 Service Mesh 成员命名空间(例如tracing-system-mtls
)中创建 TempoStack 实例时,所有流量都将被 TLS 加密。Tempo 分布式服务不期望这种加密,并返回 TLS 错误。
要修复 TLS 错误,请通过为 Tempo 和 Kiali 应用DestinationRule
来禁用 TLS trafficPolicy
。
DestinationRule
Tempo 示例apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: tempo
namespace: tracing-system-mtls
spec:
host: "*.tracing-system-mtls.svc.cluster.local"
trafficPolicy:
tls:
mode: DISABLE
DestinationRule
Kiali 示例apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: kiali
namespace: istio-system
spec:
host: kiali.istio-system.svc.cluster.local
trafficPolicy:
tls:
mode: DISABLE
如果您在 OpenShift Container Platform 中已经拥有现有的 Red Hat OpenShift 分布式追踪平台 (Jaeger) 实例,则可以将您的ServiceMeshControlPlane
资源配置为使用该实例作为分布式追踪平台。
从 Red Hat OpenShift Service Mesh 2.5 开始,Red Hat OpenShift 分布式追踪平台 (Jaeger) 和 OpenShift Elasticsearch Operator 已弃用,并将在未来的版本中移除。Red Hat 将在当前版本生命周期内为这些功能提供错误修复和支持,但这些功能将不再接收增强功能,并将被移除。作为 Red Hat OpenShift 分布式追踪平台 (Jaeger) 的替代方案,您可以改用 Red Hat OpenShift 分布式追踪平台 (Tempo)。 |
已安装和配置 Red Hat OpenShift 分布式追踪平台实例。
在 OpenShift Container Platform Web 控制台中,单击操作符→已安装的操作符。
单击项目菜单,然后选择安装 Service Mesh 控制平面的项目,例如istio-system。
单击 Red Hat OpenShift Service Mesh Operator。在Istio Service Mesh 控制平面列中,单击您的ServiceMeshControlPlane
资源的名称,例如basic
。
将您的分布式追踪平台 (Jaeger) 实例的名称添加到ServiceMeshControlPlane
。
单击YAML选项卡。
将您的分布式追踪平台 (Jaeger) 实例名称添加到您的 `ServiceMeshControlPlane` 资源中的 `spec.addons.jaeger.name` 中。在以下示例中,`distr-tracing-production` 是分布式追踪平台 (Jaeger) 实例的名称。
spec:
addons:
jaeger:
name: distr-tracing-production
点击保存。
点击重新加载以验证 `ServiceMeshControlPlane` 资源是否已正确配置。
追踪是服务网格中服务之间的执行路径。追踪由一个或多个跨度组成。跨度是具有名称、开始时间和持续时间的逻辑工作单元。采样率决定追踪被持久化的频率。
默认情况下,Envoy 代理采样率设置为采样服务网格中 100% 的追踪。高采样率会消耗集群资源和性能,但在调试问题时很有用。在生产环境中部署 Red Hat OpenShift Service Mesh 之前,请将该值设置为较小比例的追踪。例如,将 `spec.tracing.sampling` 设置为 `100` 以采样 1% 的追踪。
将 Envoy 代理采样率配置为表示 0.01% 增量的比例整数。
在基本安装中,`spec.tracing.sampling` 设置为 `10000`,这将采样 100% 的追踪。例如
将值设置为 10 则采样 0.1% 的追踪。
将值设置为 500 则采样 5% 的追踪。
Envoy 代理采样率适用于可用于服务网格并使用 Envoy 代理的应用程序。此采样率决定 Envoy 代理收集和跟踪的数据量。 Jaeger 远程采样率适用于位于服务网格外部且不使用 Envoy 代理的应用程序,例如数据库。此采样率决定分布式追踪系统收集和存储的数据量。有关更多信息,请参阅 分布式追踪配置选项。 |
在 OpenShift Container Platform Web 控制台中,单击操作符→已安装的操作符。
点击项目菜单并选择您安装控制平面的项目,例如istio-system。
单击 Red Hat OpenShift Service Mesh Operator。在Istio Service Mesh 控制平面列中,单击您的ServiceMeshControlPlane
资源的名称,例如basic
。
要调整采样率,请为 `spec.tracing.sampling` 设置不同的值。
单击YAML选项卡。
在您的 `ServiceMeshControlPlane` 资源中设置 `spec.tracing.sampling` 的值。在以下示例中,将其设置为 `100`。
spec:
tracing:
sampling: 100
点击保存。
点击重新加载以验证 `ServiceMeshControlPlane` 资源是否已正确配置。
要访问 Jaeger 控制台,您必须已安装 Red Hat OpenShift Service Mesh 和 Red Hat OpenShift 分布式追踪平台 (Jaeger),并已对其进行配置。
安装过程会创建一个路由来访问 Jaeger 控制台。
如果您知道 Jaeger 控制台的 URL,可以直接访问它。如果您不知道 URL,请使用以下说明。
从 Red Hat OpenShift Service Mesh 2.5 开始,Red Hat OpenShift 分布式追踪平台 (Jaeger) 和 OpenShift Elasticsearch Operator 已弃用,将在未来版本中删除。Red Hat 将在当前发布生命周期内为此功能提供错误修复和支持,但此功能将不再接收增强功能,并将被删除。作为 Red Hat OpenShift 分布式追踪平台 (Jaeger) 的替代方案,您可以改用 Red Hat OpenShift 分布式追踪平台 (Tempo)。 |
以具有集群管理员权限的用户身份登录到OpenShift Container Platform Web控制台。如果您使用Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
导航到网络 → 路由。
在路由页面上,从命名空间菜单中选择服务网格控制平面项目,例如istio-system
。
位置列显示每个路由的链接地址。
如有必要,请使用过滤器查找 `jaeger` 路由。点击路由的位置以启动控制台。
单击使用OpenShift登录。
启动Kiali控制台。
点击左侧导航窗格中的分布式追踪。
单击使用OpenShift登录。
以具有cluster-admin
角色的用户身份登录到OpenShift Container Platform CLI。如果您使用Red Hat OpenShift Dedicated,则必须拥有具有dedicated-admin
角色的帐户。
$ oc login --username=<NAMEOFUSER> https://<HOSTNAME>:6443
要使用命令行查询路由的详细信息,请输入以下命令。在此示例中,`istio-system` 是服务网格控制平面命名空间。
$ oc get route -n istio-system jaeger -o jsonpath='{.spec.host}'
启动浏览器并导航到 `https://<JAEGER_URL>`,其中 `<JAEGER_URL>` 是您在上一步中发现的路由。
使用您用于访问 OpenShift Container Platform 控制台的相同用户名和密码登录。
如果您已将服务添加到服务网格并已生成追踪,则可以使用过滤器和查找追踪按钮搜索您的追踪数据。
如果您正在验证控制台安装,则没有追踪数据显示。
有关配置 Jaeger 的更多信息,请参阅 分布式追踪文档。
Grafana 是一款分析工具,您可以使用它来查看、查询和分析您的服务网格指标。在此示例中,`istio-system` 是服务网格控制平面命名空间。要访问 Grafana,请执行以下操作
登录到 OpenShift Container Platform Web 控制台。
单击项目菜单,然后选择安装 Service Mesh 控制平面的项目,例如istio-system。
点击路由。
点击Grafana行的位置列中的链接。
使用您的 OpenShift Container Platform 凭据登录到 Grafana 控制台。
Prometheus 是一款监控和警报工具,您可以使用它来收集有关微服务的多分量数据。在此示例中,`istio-system` 是服务网格控制平面命名空间。
登录到 OpenShift Container Platform Web 控制台。
单击项目菜单,然后选择安装 Service Mesh 控制平面的项目,例如istio-system。
点击路由。
点击Prometheus行的位置列中的链接。
使用您的 OpenShift Container Platform 凭据登录到 Prometheus 控制台。
默认情况下,Red Hat OpenShift Service Mesh (OSSM) 会安装具有专用 Prometheus 实例的服务网格控制平面 (SMCP),用于从网格收集指标。但是,生产系统需要更高级的监控系统,例如用于用户定义项目的 OpenShift Container Platform 监控。
以下步骤展示了如何将服务网格与用户工作负载监控集成。
已启用用户工作负载监控。
已安装 Red Hat OpenShift Service Mesh Operator 2.4。
已安装 Kiali Operator 1.65。
将 `cluster-monitoring-view` 角色授予 Kiali 服务帐户
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kiali-monitoring-rbac
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-monitoring-view
subjects:
- kind: ServiceAccount
name: kiali-service-account
namespace: istio-system
配置 Kiali 以进行用户工作负载监控
apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
name: kiali-user-workload-monitoring
namespace: istio-system
spec:
external_services:
prometheus:
auth:
type: bearer
use_kiali_token: true
query_scope:
mesh_id: "basic-istio-system"
thanos_proxy:
enabled: true
url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
如果您使用 Istio Operator 2.4,请使用此配置来配置 Kiali 以进行用户工作负载监控
apiVersion: kiali.io/v1alpha1
kind: Kiali
metadata:
name: kiali-user-workload-monitoring
namespace: istio-system
spec:
external_services:
istio:
config_map_name: istio-<smcp-name>
istio_sidecar_injector_config_map_name: istio-sidecar-injector-<smcp-name>
istiod_deployment_name: istiod-<smcp-name>
url_service_version: 'http://istiod-<smcp-name>.istio-system:15014/version'
prometheus:
auth:
token: secret:thanos-querier-web-token:token
type: bearer
use_kiali_token: false
query_scope:
mesh_id: "basic-istio-system"
thanos_proxy:
enabled: true
url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
version: v1.65
配置 SMCP 以使用外部 Prometheus
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: basic
namespace: istio-system
spec:
addons:
prometheus:
enabled: false (1)
grafana:
enabled: false (2)
kiali:
name: kiali-user-workload-monitoring
meshConfig:
extensionProviders:
- name: prometheus
prometheus: {}
1 | 禁用 OSSM 提供的默认 Prometheus 实例。 |
2 | 禁用 Grafana。它不支持外部 Prometheus 实例。 |
应用自定义网络策略以允许来自监控命名空间的入站流量
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: user-workload-access
namespace: istio-system (1)
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
network.openshift.io/policy-group: monitoring
podSelector: {}
policyTypes:
- Ingress
1 | 必须将自定义网络策略应用于所有命名空间。 |
应用 `Telemetry` 对象以启用 Istio 代理中的流量指标
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
name: enable-prometheus-metrics
namespace: istio-system (1)
spec:
selector: (2)
matchLabels:
app: bookinfo
metrics:
- providers:
- name: prometheus
1 | 在控制平面命名空间中创建的 `Telemetry` 对象适用于网格中的所有工作负载。要仅将遥测应用于一个命名空间,请在目标命名空间中创建该对象。 |
2 | 可选:设置 `selector.matchLabels` spec 将 `Telemetry` 对象应用于目标命名空间中的特定工作负载。 |
应用 `ServiceMonitor` 对象来监控 Istio 控制平面
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: istiod-monitor
namespace: istio-system (1)
spec:
targetLabels:
- app
selector:
matchLabels:
istio: pilot
endpoints:
- port: http-monitoring
interval: 30s
relabelings:
- action: replace
replacement: "basic-istio-system" (2)
targetLabel: mesh_id
1 | 在 Istio 控制平面命名空间中创建此 `ServiceMonitor` 对象,因为它监控 Istiod 服务。在此示例中,命名空间为 `istio-system`。 |
2 | 字符串 `"basic-istio-system"` 是 SMCP 名称及其命名空间的组合,但只要每个在集群中使用用户工作负载监控的网格的标签唯一,就可以使用任何标签。步骤 2 中配置的 Kiali 资源的 `spec.prometheus.query_scope` 需要与该值匹配。 |
如果只有一个网格使用用户工作负载监控,则 `mesh_id` 重新标记和 Kiali 资源中的 `spec.prometheus.query_scope` 字段都是可选的(但是如果删除了 `mesh_id` 标签,则应删除此处提供的 `query_scope` 字段)。 如果集群中的多个网格实例可能使用用户工作负载监控,则需要 如果您没有部署Kiali,仍然可以应用 |
应用PodMonitor
对象来收集Istio代理的指标。
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: istio-proxies-monitor
namespace: istio-system (1)
spec:
selector:
matchExpressions:
- key: istio-prometheus-ignore
operator: DoesNotExist
podMetricsEndpoints:
- path: /stats/prometheus
interval: 30s
relabelings:
- action: keep
sourceLabels: [__meta_kubernetes_pod_container_name]
regex: "istio-proxy"
- action: keep
sourceLabels: [__meta_kubernetes_pod_annotationpresent_prometheus_io_scrape]
- action: replace
regex: (\d+);(([A-Fa-f0-9]{1,4}::?){1,7}[A-Fa-f0-9]{1,4})
replacement: '[$2]:$1'
sourceLabels: [__meta_kubernetes_pod_annotation_prometheus_io_port,
__meta_kubernetes_pod_ip]
targetLabel: __address__
- action: replace
regex: (\d+);((([0-9]+?)(\.|$)){4})
replacement: $2:$1
sourceLabels: [__meta_kubernetes_pod_annotation_prometheus_io_port,
__meta_kubernetes_pod_ip]
targetLabel: __address__
- action: labeldrop
regex: "__meta_kubernetes_pod_label_(.+)"
- sourceLabels: [__meta_kubernetes_namespace]
action: replace
targetLabel: namespace
- sourceLabels: [__meta_kubernetes_pod_name]
action: replace
targetLabel: pod_name
- action: replace
replacement: "basic-istio-system" (2)
targetLabel: mesh_id
1 | 由于OpenShift Container Platform监控会忽略ServiceMonitor 和PodMonitor 对象中的namespaceSelector 规范,因此必须在所有网格命名空间(包括控制平面命名空间)中应用PodMonitor 对象。 |
2 | 字符串 `"basic-istio-system"` 是 SMCP 名称及其命名空间的组合,但只要每个在集群中使用用户工作负载监控的网格的标签唯一,就可以使用任何标签。步骤 2 中配置的 Kiali 资源的 `spec.prometheus.query_scope` 需要与该值匹配。 |
如果只有一个网格使用用户工作负载监控,则 `mesh_id` 重新标记和 Kiali 资源中的 `spec.prometheus.query_scope` 字段都是可选的(但是如果删除了 `mesh_id` 标签,则应删除此处提供的 `query_scope` 字段)。 如果集群中的多个网格实例可能使用用户工作负载监控,则需要 如果您没有部署Kiali,仍然可以应用 |
打开OpenShift Container Platform Web控制台,并检查指标是否可见。