[zh] improve prometheus skywalking (#13280)

Signed-off-by: xin.li <xin.li@daocloud.io>
This commit is contained in:
my-git9 2023-06-06 08:14:19 +08:00 committed by GitHub
parent d8347483ca
commit 9d47421213
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 78 additions and 38 deletions

View File

@ -7,11 +7,15 @@ owner: istio/wg-environments-maintainers
test: n/a
---
[Prometheus](https://prometheus.io/) 是一个开源的监控系统、时间序列数据库。您可以利用 Prometheus 与 Istio 集成来收集指标,通过这些指标判断 Istio 和网格内的应用的运行状况。您可以使用 [Grafana](/zh/docs/ops/integrations/grafana/) 和 [Kiali](/zh/docs/tasks/observability/kiali/) 来可视化这些指标。
[Prometheus](https://prometheus.io/) 是一个开源的监控系统、
时间序列数据库。您可以利用 Prometheus 与 Istio 集成来收集指标,
通过这些指标判断 Istio 和网格内的应用的运行状况。您可以使用
[Grafana](/zh/docs/ops/integrations/grafana/) 和
[Kiali](/zh/docs/tasks/observability/kiali/) 来可视化这些指标。
## 安装{#installation}
## 安装 {#installation}
### 选项1快速开始{#option-1-quick-start}
### 选项1快速开始 {#option-1-quick-start}
Istio 提供了一个简单地安装示例来快速安装、运行 Prometheus
@ -22,50 +26,66 @@ $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml
这将会在您的集群中部署 Prometheus。这仅用于展示不会针对性能和安全性进行调整。
{{< warning >}}
快速开始的配置仅适合小型集群和短期监控,不适用于大型网格和长时间的监控。特别的是,增加标签将会增加指标的基数,需要大量内存。并且,当尝试确定流量随时间的趋势变化,需要获取历史数据。
快速开始的配置仅适合小型集群和短期监控,不适用于大型网格和长时间的监控。
特别的是,增加标签将会增加指标的基数,需要大量内存。并且,当尝试确定流量随时间的趋势变化,
需要获取历史数据。
{{< /warning >}}
### 选项2自定义安装{option-2-customizable-install}
### 选项2自定义安装 {option-2-customizable-install}
阅读 [Prometheus 文档](https://www.prometheus.io/)来在您的环境中安装、部署 Prometheus。阅读 [Configuration](#configuration) 来了解更多关于配置、部署 Prometheus 抓取更多 Istio 指标的信息。
阅读 [Prometheus 文档](https://www.prometheus.io/)来在您的环境中安装、
部署 Prometheus。阅读 [Configuration](#configuration)
来了解更多关于配置、部署 Prometheus 抓取更多 Istio 指标的信息。
## 配置{#configuration}
## 配置 {#configuration}
在 Istio 网格内每个组件都有一个对外暴露指标的接口。Prometheus 通过抓取这些接口的指标来收集数据。
在 Istio 网格内每个组件都有一个对外暴露指标的接口。Prometheus
通过抓取这些接口的指标来收集数据。
通过 [Prometheus 配置文件](https://prometheus.io/docs/prometheus/latest/configuration/configuration/)进行配置该配置可以控制要查询的接口、端口、路径、TLS 配置等。
通过 [Prometheus 配置文件](https://prometheus.io/docs/prometheus/latest/configuration/configuration/)进行配置,
该配置可以控制要查询的接口、端口、路径、TLS 配置等。
要收集整个网格的指标,请配置 Prometheus
1. 控制平面(`istiod` Deployment)
1. 控制平面`istiod` Deployment
1. 入口和出口网关
1. Ingress and Egress gateways
1. Envoy sidecar
1. Envoy Sidecar
1. 用户应用程序(如果这些应用程序向 Prometheus 暴露指标的话)
为了简化指标配置Istio 提供了两种操作模式:
### 选项 1指标合并
### 选项 1指标合并 {#option-1-metrics-merging}
为了简化配置Istio 可以通过 `prometheus.io` 注解来控制指标的获取。他允许 Istio 通过 [Helm `stable/prometheus`](https://github.com/helm/charts/tree/master/stable/prometheus) 的 charts 使用标准配置获取数据,开箱即用。
为了简化配置Istio 可以通过 `prometheus.io` 注解来控制指标的获取。
他允许 Istio 通过 [Helm `stable/prometheus`](https://github.com/helm/charts/tree/master/stable/prometheus)
的 chart 使用标准配置获取数据,开箱即用。
{{< tip >}}
尽管 `prometheus.io` 并不是 Prometheus 的核心注解,但是该注解已经成为获取指标的标准注解。
尽管 `prometheus.io` 并不是 Prometheus 的核心注解,
但是该注解已经成为获取指标的标准注解。
{{< /tip >}}
该选项默开启但是允许在[安装](/zh/docs/setup/install/istioctl/)时通过 `--set meshConfig.enablePrometheusMerge=false` 关闭。当开启后,会将适当的 `prometheus.io` 注解添加到所有的数据平面容器中来设置指标收集。如果这些注解已经存在他们将会被覆盖。使用该选项Envoy sidecar 将 Istio 的指标与应用程序的指标合并。合并的指标将由 `:15020/stats/prometheus` 收集。
该选项默开启但是允许在[安装](/zh/docs/setup/install/istioctl/)时通过
`--set meshConfig.enablePrometheusMerge=false` 关闭。当开启后,
会将适当的 `prometheus.io` 注解添加到所有的数据平面容器中来设置指标收集。
如果这些注解已经存在他们将会被覆盖。使用该选项Envoy sidecar 将 Istio
的指标与应用程序的指标合并。合并的指标将由 `:15020/stats/prometheus` 收集。
该选项以纯文本的形式显示所有指标。
以下情况,该选项无法满足:
* 您需要使用 TLS 收集指标。
* 您的应用程序暴露的指标与 Istio 暴露的指标重名。例如,您的应用程序暴露一个叫做 `istio_request_total` 的指标。如果应用程序本身正在运行 Envoy这就有可能发生。
* 您的应用程序暴露的指标与 Istio 暴露的指标重名。例如,
您的应用程序暴露一个叫做 `istio_request_total` 的指标。
如果应用程序本身正在运行 Envoy这就有可能发生。
* 您的 Prometheus Deployment 没有配置通过 `prometheus.io` 注解抓取指标。
如果需要,可以在 Pod 上添加 `prometheus.istio.io/merge-metrics: "false"` 来禁用此功能。
如果需要,可以在 Pod 上添加 `prometheus.istio.io/merge-metrics: "false"`
来禁用此功能。
### 选项2自定义收集配置{#option-2-customized-scraping-configurations}
### 选项2自定义收集配置 {#option-2-customized-scraping-configurations}
要将现有的 Prometheus 示例配置为抓取 Istio 生成的统计信息,需要增加一些 Job。
@ -84,7 +104,8 @@ $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml
regex: istiod;http-monitoring
{{< /text >}}
* 要抓取 Envoy 的状态,包括 Sidecar 的代理和网关的代理,可以将以下 Job 放在 `-envoy-prom` 的结尾,添加到收集端口:
* 要抓取 Envoy 的状态,包括 Sidecar 的代理和网关的代理,
可以将以下 Job 放在 `-envoy-prom` 的结尾,添加到收集端口:
{{< text yaml >}}
- job_name: 'envoy-stats'
@ -98,13 +119,22 @@ $ kubectl apply -f {{< github_file >}}/samples/addons/prometheus.yaml
regex: '.*-envoy-prom'
{{< /text >}}
* 对于应用程序的状态,如果禁止 [Strict mTLS](/zh/docs/tasks/security/authentication/authn-policy/#globally-enabling-istio-mutual-tls-in-strict-mode),您现有的收集配置仍然可以使用。否则需要将 Prometheus 配置为[使用 Istio 证书收集](#tls-settings)。
* 对于应用程序的状态,如果禁止
[Strict mTLS](/zh/docs/tasks/security/authentication/authn-policy/#globally-enabling-istio-mutual-tls-in-strict-mode)
您现有的收集配置仍然可以使用。否则需要将 Prometheus
配置为[使用 Istio 证书收集](#tls-settings)。
#### TLS 设置{#TLS-settings}
#### TLS 设置 {#TLS-settings}
控制平面,网关和 Envoy Sidecar 指标将会作为明文收集。但是,应用程序指标将遵循 Istio 为任何工作负载进行的配置。特别是如果启用了 [Strict mTLS](/zh/docs/tasks/security/authentication/authn-policy/#globally-enabling-istio-mutual-tls-in-strict-mode),则需要将 Prometheus 配置为使用 Istio 证书收集指标。
控制平面,网关和 Envoy Sidecar 指标将会作为明文收集。但是,应用程序指标将遵循
Istio 为任何工作负载进行的配置。特别是如果启用了
[Strict mTLS](/zh/docs/tasks/security/authentication/authn-policy/#globally-enabling-istio-mutual-tls-in-strict-mode)
则需要将 Prometheus 配置为使用 Istio 证书收集指标。
为 Prometheus 设置 Istio 证书的另一种方式是 Sidecar该 Sidecar 将会转发 SDS 证书并将其输出到可以与 Prometheus 共享的 volume 中。然而Sidecar 不应该拦截 Prometheus 的请求,因为 Prometheus 的端口的访问模式与 Istio 的 Sidecar 代理模型不兼容。
为 Prometheus 设置 Istio 证书的另一种方式是 Sidecar
Sidecar 将会转发 SDS 证书并将其输出到可以与 Prometheus
共享的 volume 中。然而Sidecar 不应该拦截 Prometheus 的请求,
因为 Prometheus 的端口的访问模式与 Istio 的 Sidecar 代理模型不兼容。
为此,请在 Prometheus 服务器容器上挂载证书 volume
@ -121,7 +151,9 @@ volumes:
name: istio-certs
{{< /text >}}
然后,将一下注解添加到 Prometheus Deployment 的 Pod Template 中,并且使用 [sidecar 注入](/zh/docs/setup/additional-setup/sidecar-injection/)。这会将 Sidecar 配置为共享 volume 并写入证书,但是不会配置流量的重定向。
然后,将一下注解添加到 Prometheus Deployment 的 Pod Template
中,并且使用 [Sidecar 注入](/zh/docs/setup/additional-setup/sidecar-injection/)。
这会将 Sidecar 配置为共享 volume 并写入证书,但是不会配置流量的重定向。
{{< text yaml >}}
spec:
@ -147,6 +179,7 @@ tls_config:
insecure_skip_verify: true # Prometheus 不支持 Istio 安全命名,因此跳过验证目标 Pod 证书。
{{< /text >}}
## 最佳实践{#best-practices}
## 最佳实践 {#best-practices}
对于大型网格,高级配置可以帮助扩展 Prometheus。更多有关信息请查看[使用 Prometheus 监控 production-scale](/zh/docs/ops/best-practices/observability/#using-prometheus-for-production-scale-monitoring)。
对于大型网格,高级配置可以帮助扩展 Prometheus。
更多有关信息请查看[使用 Prometheus 监控 production-scale](/zh/docs/ops/best-practices/observability/#using-prometheus-for-production-scale-monitoring)。

View File

@ -7,13 +7,15 @@ owner: istio/wg-environments-maintainers
test: no
---
[Apache SkyWalking](http://skywalking.apache.org) 是一个专门设计用于微服务、云原生和容器等架构的应用性能监控 (APM) 系统。
SkyWalking 是可观测性的一站式解决方案,不仅具有像 Jaeger 和 Zipkin 的分布式追踪能力,像 Prometheus 和 Grafana 的指标能力,像 Kiali 的日志记录能力,
还能将可观测性扩展到许多其他场景,例如将日志与链路关联,收集系统事件并将事件与指标关联,基于 eBPF 的服务性能分析等。
[Apache SkyWalking](http://skywalking.apache.org) 是一个专门设计用于微服务、
云原生和容器等架构的应用性能监控 (APM) 系统。SkyWalking 是可观测性的一站式解决方案,
不仅具有像 Jaeger 和 Zipkin 的分布式追踪能力,像 Prometheus 和 Grafana
的指标能力,像 Kiali 的日志记录能力,还能将可观测性扩展到许多其他场景,
例如将日志与链路关联,收集系统事件并将事件与指标关联,基于 eBPF 的服务性能分析等。
## 安装{#installation}
## 安装 {#installation}
### 选项 1快速开始{#option-1-quick-start}
### 选项 1快速开始 {#option-1-quick-start}
Istio 提供了基本的安装样例以快速搭建并运行 SkyWalking
@ -21,9 +23,11 @@ Istio 提供了基本的安装样例以快速搭建并运行 SkyWalking
$ kubectl apply -f @samples/addons/extras/skywalking.yaml@
{{< /text >}}
以上命令将 SkyWalking 部署到您的集群。此样例仅用于演示,并未包含性能或安全调优。
以上命令将 SkyWalking 部署到您的集群。此样例仅用于演示,
并未包含性能或安全调优。
Istio 代理默认不向 SkyWalking 发送链路追踪。您也需要通过添加以下字段到您的配置来启用 SkyWalking 追踪扩展提供程序:
Istio 代理默认不向 SkyWalking 发送链路追踪。您也需要通过添加以下字段到您的配置来启用
SkyWalking 追踪扩展提供程序:
{{< text yaml >}}
apiVersion: install.istio.io/v1alpha1
@ -40,13 +44,16 @@ spec:
- "skywalking"
{{< /text >}}
### 选项 2自定义安装{#option-2-customizable-install}
### 选项 2自定义安装 {#option-2-customizable-install}
请参阅 [SkyWalking 文档](http://skywalking.apache.org)开始安装。若想在 Istio 上运行 SkyWalking无需任何特殊改动。
请参阅 [SkyWalking 文档](http://skywalking.apache.org)开始安装。
若想在 Istio 上运行 SkyWalking无需任何特殊改动。
一旦安装了 SkyWalking记住要修改指向 `skywalking-oap` Deployment 的 `--set meshConfig.extensionProviders[0].skywalking.service` 选项。
一旦安装了 SkyWalking记住要修改指向 `skywalking-oap` Deployment
`--set meshConfig.extensionProviders[0].skywalking.service` 选项。
有关 TLS 设置的高级配置信息,请参见 [`ProxyConfig.Tracing`](/zh/docs/reference/config/istio.mesh.v1alpha1/#Tracing)。
## 使用{#usage}
## 使用 {#usage}
有关使用 SkyWalking 的更多信息,请参阅 [SkyWalking 任务](/zh/docs/tasks/observability/distributed-tracing/skywalking/)。
有关使用 SkyWalking 的更多信息,请参阅
[SkyWalking 任务](/zh/docs/tasks/observability/distributed-tracing/skywalking/)。