Istio 指标目标未知

Istio metrics destination unknown

场景

EKS 1.14 之上的 Istio 版本 1.5.0。 启用的组件:

注意 Istio 1.5.0 弃用 Mixer,移至 telemetry v2,这发生在 envoy 代理 sidecar 中。

我想使用 Istio 来支持一些开箱即用的指标。​​

流程如下

我的电脑 -> 网关 -> 虚拟服务 A -> 虚拟服务 B

我确定:

  1. K8s 服务对象有标签 app
  2. K8s 部署对象及其 pod 模板具有标签 app

我可以运行流量就好了,说明配置是正确的。

遥测有问题。

istio_requests_total{connection_security_policy="unknown",destination_app="unknown",destination_canonical_revision="latest",destination_canonical_service="unknown",destination_principal="spiffe://cluster.local/ns/default/sa/default",destination_service="svcb.default.svc.cluster.local",destination_service_name="svcb.default.svc.cluster.local",destination_service_namespace="unknown",destination_version="unknown",destination_workload="unknown",destination_workload_namespace="unknown",grpc_response_status="0",instance="10.2.55.80:15090",job="envoy-stats",namespace="default",pod_name="svca-77969dc86b-964p5",reporter="source",request_protocol="grpc",response_code="200",response_flags="-",source_app="svca",source_canonical_revision="latest",source_canonical_service="svca",source_principal="spiffe://cluster.local/ns/default/sa/default",source_version="unknown",source_workload="svca",source_workload_namespace="default"}    

问题

  1. 为什么大多数 destination-* 标签 unknown
  2. official istio mesh dashboard 通常按 reporter=destination 过滤指标。为什么我所有的 istio_requests_total 系列都有 reporter=source

哦对了,经过大量挖掘,here's the answer

Istio supports proxying all TCP traffic by default, but in order to provide additional capabilities, such as routing and rich metrics, the protocol must be determined. This can be done automatically or explicitly specified

我没有在我的服务资源中指定端口名称。一旦我这样做了,问题就解决了。