观察 Istio 流量
在 IBM Cloud Kubernetes Service上记录并监视由 Istio 管理的应用程序。
为整个网格启用访问日志
要对整个网格启用 Envoy 访问日志,可以使用 managed-istio-custom
ConfigMap 资源,该资源位于 Istio 附加组件提供的 ibm-operators
名称空间中。 要启用 Envoy 访问日志,请编辑 managed-istio-custom
ConfigMap 资源并添加键/值对 istio-global-proxy-accessLogFile: "dev/stdout"
。
有关更多信息,请参阅 定制 Istio 安装。
为各个容器启用访问日志
从 V 1.18开始,Istio 附加组件提供了使用遥测 CR 为各个容器启用 Envoy 访问日志的选项。 要设置遥测 CR,请使用以下遥测定义。
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
name: example-telemetry-enabling-envoy-access-logs
namespace: <namespace> # Pod's namespace
spec:
selector:
matchLabels:
<key>: <value> # Pod's label
accessLogging:
- providers:
- name: enable-targeted-envoy-access-logs
修改先前的示例定义以包含 Pod 的名称空间和标签。 应用遥测定义后,您可以通过 istio-proxy
容器查看 Envoy 访问日志。
使用 IBM Cloud Logs 设置日志记录
通过将日志代理部署到工作节点,将日志转发到 IBM Cloud Logs,从而无缝管理每个容器中的应用程序容器和Envoy代理侧车容器的日志。
要使用 IBM Cloud Logs,您需要在集群中的每个工作节点部署一个日志记录代理。 此代理程序从所有名称空间(包括 *.log
)收集 pod 的 /var/log
目录中存储的扩展名为 kube-system
的日志以及无扩展名文件。 这些日志包括来自每个 pod 中的应用程序容器和 Envoy 代理侧柜容器的日志。 然后,代理程序会将这些日志转发到 IBM Cloud Logs 服务。
首先,请按照 使用 IBM Cloud Logs 管理 Kubernetes 集群日志 中的步骤为集群设置日志记录。
使用 IBM Cloud Monitoring 设置监视
通过在您的工作节点上部署 Monitoring 代理,将指标转发到 IBM Cloud® Monitoring,从而获得Istio管理应用程序的性能和运行状况的可见性。
要将监视代理程序部署到集群,请完成以下步骤。
-
在 监视控制台中,单击所供应实例的 打开仪表板。
-
在 Monitoring UI 中,单击 添加新仪表板。
-
搜索
Istio
,然后选择 Monitoring 预定义的Istio仪表板之一。
如需了解有关引用指标和仪表板、监控 Istio 内部组件以及监控 Istio A/B 部署和金丝雀部署的更多信息,请查看 “如何监控 Istio”这篇 Kubernetes 服务网格博文。
启动 ControlZ 组件检查和 Envoy 侧柜仪表板
要检查 Istio 的特定组件,请启动 ControlZ 和 Envoy 仪表板。
ControlZ 仪表板可访问 Istio 组件端口,以提供每个组件内部状态的交互式视图。 Envoy 仪表板提供了在应用程序 pod 中运行的 Envoy 侧柜代理的配置信息和度量值。
准备工作
ControlZ
-
获取要检查的 Istio 组件的 pod 名称。 可以检查
istio-citadel
、istio-galley
、istio-pilot
、istio-policy
和istio-telemetry
的组件 pod。kubectl get pods -n istio-system | grep istio
示例输出
NAME READY STATUS RESTARTS AGE istio-citadel-869c7f9498-wtldz 1/1 Running 0 2m istio-egressgateway-69bb5d4585-qxxbp 1/1 Running 0 2m istio-galley-75d7b5bdb9-c9d9n 1/1 Running 0 2m istio-ingressgateway-5c8764db74-gh8xg 1/1 Running 0 2m istio-pilot-55fd7d886f-vv6fb 2/2 Running 0 2m istio-policy-6bb6f6ddb9-s4c8t 2/2 Running 0 2m istio-sidecar-injector-7d9845dbb7-r8nq5 1/1 Running 0 2m istio-telemetry-7695b4c4d4-tlvn8 2/2 Running 0 2m istio-tracing-55bbf55878-z4rd2 1/1 Running 0 2m
-
访问该组件的 ControlZ 仪表板。
istioctl dashboard controlz <component_pod_name>.istio-system
Envoy
- 获取要检查其 Envoy 侧柜容器的应用程序 pod 的名称。
kubectl get pods -n <namespace>
- 访问该 pod 的 Envoy 仪表板。
istioctl dashboard envoy <pod-name>.<namespace>