度量和日志的常见问题
可以通过 REST 接口访问 Istio 指标吗?
您可以使用 Prometheus1 收集有关 Istio 的遥测数据。然后,使用 Prometheus 的 HTTP API2 来查询该数据。
如何控制 sidecar 上报数据?
有时会对访问的特定 URL 排除在上报之外,这样做是有用的。例如,你可能希望把健康检测的 URL 剔除。可以配置使用 match
语法来跳过匹配到的 URL 上报,比如:
Prometheus 适配器能在非 Kubernetes 环境下使用吗?
您可以使用 docker-compose 来安装 Prometheus。
怎样查看 Istio 的请求都发生了什么?
您可以启用 tracing3 以确定 Istio 中的请求是怎样流动的。
另外,您还可以使用如下命令以了解网格中的更多状态信息:
istioctl proxy-config
:获取 Kubernetes 运行期间的 proxy 配置信息:kubectl get
:通过路由配置获取网格中不同资源的信息:
我可以使用 Prometheus 配合 Istio 抓取应用程序指标吗?
是的。Istio 附带 Prometheus 的配置4,在启用或禁用双向 TLS 时启动收集应用程序指标的功能。
kubernetes-pods
job 从没有双向 TLS 环境中的 pod 收集应用程序指标。当为 Istio 启用双向 TLS 时,kubernetes-pods-istio-secure
job 从应用程序的 pod 中收集指标。
这两个 job 都要求将以下注释添加到需要从中收集应用程序指标的所有 deployment 中:
prometheus.io/scrape: "true"
prometheus.io/path: "<metrics path>"
prometheus.io/port: "<metrics port>"
一些注意事项:
- 如果 Prometheus pod 在 Istio Citadel pod 生成所需证书并将其分发给 Prometheus 之前启动,则 Prometheus pod 需要重启以便收集双向 TLS 保护的目标信息。
- 如果您的应用程序在专用端口上公开了 Prometheus 指标,则应将该端口添加到 service 和 deployment 规范中。