Istio:出口网关-使用istio_requests_total度量



我是Istio的新手,我有以下问题。我正在尝试为通过tls/443通信的外部服务设置出口网关配置,如以下示例:https://istio.io/latest/docs/tasks/traffic-management/egress/egress-gateway/#egress-gateway-for-https-traffic.

一切似乎都工作正常。对于'externalapi'服务的出站流量,我得到istio_tcp_connections_close_total度量。我的问题是:

是否有任何方法来取代istio_tcp_connections_closed_total指标与istio_requests_total出站流量通过出口网关?我想获得一些额外的信息,比如出站流量的响应码。

这是我的配置:

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
name: externalapi-egress
spec:
hosts:
- externalapi.mydomain.com
ports:
- number: 443
name: tls
protocol: TLS
resolution: DNS
location: MESH_EXTERNAL
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: externalapi-egress
spec:
selector:
istio: egressgateway
servers:
- port:
number: 443
name: tls
protocol: TLS
hosts:
- externalapi.mydomain.com
tls:
mode: PASSTHROUGH
---
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: externalapi-egress
spec:
host: istio-egressgateway.istio-system.svc.cluster.local
subsets:
- name: externalapi-egress
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: externalapi
spec:
hosts:
- externalapi.mydomain.com
gateways:
- externalapi-egress
- mesh
tls:
- match:
- gateways:
- mesh
port: 443
sniHosts:
- externalapi.mydomain.com
route:
- destination:
host: istio-egressgateway.istio-system.svc.cluster.local
subset: externalapi-egress
port:
number: 443
weight: 100
- match:
- gateways:
- externalapi-egress
port: 443
sniHosts:
- externalapi.mydomain.com
route:
- destination:
host: externalapi.mydomain.com
port:
number: 443
weight: 100

其他配置信息:

  1. Istio: 1.8.0通过IstioOperator安装。

谢谢你帮我这个忙。罗伯特。

编辑:我想找到一种方法,让istio_requests_total度量生成的流量去externalapi,而不是istio_tcp_connections_closed_total。

tldr:你不能这么做。


现在是长答案。

From istio documentation about metrics:

对于HTTP、HTTP/2和GRPC流量,Istio生成如下内容指标:

请求计数(istio_requests_total):这是一个计数器递增对于每个请求由Istio代理处理。

. .

对于TCP流量,Istio生成以下度量:

Tcp Byte Sent (istio_tcp_sent_bytes_total):这是一个计数器测量TCP响应期间发送的总字节大小连接。

Tcp Byte Received (istio_tcp_received_bytes_total):这是一个计数器在case中,哪个度量请求期间接收的总字节的大小

Tcp Connections Opened (istio_tcp_connections_opened_total):这是一个每打开一个连接,COUNTER递增。

Tcp Connections Closed (istio_tcp_connections_closed_total):这是一个每关闭一个连接,COUNTER递增。

. .

注意istio_requests_total(根据文档)计数请求数此指标仅对HTTP、HTTP/2和GRPC流量有效。

对于TCP流量,没有requests_total mertic,因为很难说什么被定义为请求。这就是为什么tcp只能计算字节数和连接数。

现在你可能会说:">嘿,我没有使用tcp,我使用https (http over tls),所以它应该能够计算请求,对吗?"-你就错了。

在我进一步讨论之前,让我先提一下"HTTP持久连接"。维基百科将其定义为:

HTTP持久连接,也称为HTTP保持活动,或HTTP连接重用,是使用单个TCP连接发送的想法并接收多个HTTP请求/响应,而不是打开一个为每个请求/响应对建立新连接。更新的HTTP/2协议使用相同的思想,并进一步允许多个并发请求/响应在单个服务器上进行多路复用连接。

我为什么要提到这个?

TLS是加密流量。没有人能窥视到里面。如果您的应用程序通过单个tls连接(使用HTTP持久连接)发送/接收多个请求/响应,则不可能计数每个连续的请求/响应请求,因为它是端到端的加密。

相关内容

  • 没有找到相关文章

最新更新