监控

先决条件

收集新的指标数据

  1. 设置Bookinfo以使用MongoDB。

    1. 安装v2了的ratings服务。

      如果使用启用了自动边车注入的集群,请使用kubectl以下命令部署服务:

      $ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml
      serviceaccount/bookinfo-ratings-v2 created
      deployment.apps/ratings-v2 created

      如果使用手动边车注入,请改为运行以下命令:

      $ kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml)
      deployment "ratings-v2" configured
  2. 安装mongodb服务:

如果使用启用了自动边车注入的集群,请使用kubectl以下命令部署服务:

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-db.yaml
service/mongodb created
deployment.apps/mongodb-v1 created

如果使用手动边车注入,请改为运行以下命令:

$ kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo-db.yaml)
service "mongodb" configured
deployment "mongodb-v1" configured

Bookinfo示例部署了每个微服务的多个版本,因此首先创建目标规则,以定义与每个版本相对应的服务子集以及每个子集的负载均衡策略。

$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml

如果启用了双向TLS,请改为运行以下命令:

$ kubectl apply -f samples/bookinfo/networking/destination-rule-all-mtls.yaml

要显示目标规则,请运行以下命令:

$ kubectl get destinationrules -o yaml

在添加引用这些子集的虚拟服务之前,请等待几秒钟,以便目标规则传播,因为虚拟服务中的子集引用依赖于目标规则。

创建ratings和reviews虚拟服务:

$ kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-db.yaml
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created

将流量发送到示例应用程序。

对于Bookinfo示例,请http://$GATEWAY_URL/productpage在您的Web浏览器中访问或使用以下命令:

$ curl http://"$GATEWAY_URL/productpage"

$GATEWAY_URL是在Bookinfo示例中设置的值。 验证是否正在生成和收集TCP度量标准值。

在Kubernetes环境中,使用以下命令为Prometheus设置端口转发:

$ istioctl dashboard prometheus

在Prometheus浏览器窗口中查看TCP度量的值。选择图。输入istio_tcp_connections_opened_total指标或,istio_tcp_connections_closed_total然后选择执行。"控制台"选项卡中显示的表 包含类似于以下内容的条目:

istio_tcp_connections_opened_total{
destination_version="v1",
instance="172.17.0.18:42422",
job="istio-mesh",
canonical_service_name="ratings-v2",
canonical_service_revision="v2"}

istio_tcp_connections_closed_total{
destination_version="v1",
instance="172.17.0.18:42422",
job="istio-mesh",
canonical_service_name="ratings-v2",
canonical_service_revision="v2"}

了解TCP遥测收集

在此任务中,您使用Istio配置来自动生成并报告针对网格中TCP服务的所有流量的度量。15s默认情况下,每个活动连接的TCP度量标准都会默认记录一次,并且可以通过设置此计时器tcpReportingDuration。连接的指标也记录在连接的末尾。

tcp属性

几个特定于TCP的属性可在Istio中启用TCP策略和控制。这些属性由Envoy代理生成,并使用Envoy的Node Metadata从Istio获得。Envoy使用基于ALPN的隧道和基于前缀的协议将节点元数据转发给对等Envoy。我们定义了一个新协议istio-peer-exchange,该协议由网状网络中的客户端和服务器边车广告并确定优先级。ALPN协商将协议解析istio-peer-exchange为启用Istio的代理之间的连接,但不解析为启用Istio的代理与任何其他代理之间的连接。该协议对TCP的扩展如下:

  1. 作为第一个字节序列,TCP客户端发送一个魔术字节字符串和一个长度为前缀的有效负载。

  2. TCP服务器作为第一个字节序列,发送一个魔术字节序列和一个长度为前缀的有效负载。这些有效载荷是protobuf编码的序列化元数据。

  3. 客户端和服务器可以同时写入并且顺序混乱。然后,Envoy中的扩展过滤器在下游和上游进行进一步处理,直到魔术字节序列不匹配或读取整个有效负载为止。

清理

删除port-forward过程:

$ killall istioctl

Last updated