istio.io/content/es/docs/tasks/observability/metrics/tcp-metrics/index.md

6.6 KiB

title description weight keywords aliases owner test
Recopilación de Métricas para Services TCP Esta tarea muestra cómo configurar Istio para recopilar métricas para services TCP. 20
telemetry
metrics
tcp
/docs/tasks/telemetry/tcp-metrics
/docs/tasks/telemetry/metrics/tcp-metrics/
istio/wg-policies-and-telemetry-maintainers yes

Esta tarea muestra cómo configurar Istio para recopilar automáticamente telemetría para services TCP en una malla. Al final de esta tarea, puede consultar las métricas TCP predeterminadas para su malla.

La application de ejemplo Bookinfo se utiliza como ejemplo a lo largo de esta tarea.

Antes de empezar

  • Instale Istio en su cluster y despliegue una application. También debe instalar Prometheus.

  • Esta tarea asume que la muestra de Bookinfo se desplegará en el namespace default. Si utiliza un namespace diferente, actualice la configuración y los comandos de ejemplo.

Recopilación de nuevos datos de telemetría

  1. Configure Bookinfo para usar MongoDB.

    1. Instale v2 del service ratings.

      {{< text bash >}} $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml@ serviceaccount/bookinfo-ratings-v2 created deployment.apps/ratings-v2 created {{< /text >}}

    2. Instale el service mongodb:

      {{< text bash >}} $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo-db.yaml@ service/mongodb created deployment.apps/mongodb-v1 created {{< /text >}}

    3. La muestra de Bookinfo despliega múltiples versiones de cada microservice, así que comience creando reglas de destino que definan los subconjuntos de service correspondientes a cada versión, y la política de balanceo de carga para cada subconjunto.

      {{< text bash >}} $ kubectl apply -f @samples/bookinfo/networking/destination-rule-all.yaml@ {{< /text >}}

      Si habilitó mTLS, ejecute el siguiente comando en su lugar:

      {{< text bash >}} $ kubectl apply -f @samples/bookinfo/networking/destination-rule-all-mtls.yaml@ {{< /text >}}

      Para mostrar las reglas de destino, ejecute el siguiente comando:

      {{< text bash >}} $ kubectl get destinationrules -o yaml {{< /text >}}

      Espere unos segundos a que las reglas de destino se propaguen antes de agregar virtual services que hagan referencia a estos subconjuntos, porque las referencias a subconjuntos en los virtual services dependen de las reglas de destino.

    4. Cree virtual services ratings y reviews:

      {{< text bash >}} $ kubectl apply -f @samples/bookinfo/networking/virtual-service-ratings-db.yaml@ virtualservice.networking.istio.io/reviews created virtualservice.networking.istio.io/ratings created {{< /text >}}

  2. Envíe tráfico a la application de ejemplo.

    Para la muestra de Bookinfo, visite http://$GATEWAY_URL/productpage en su navegador web o use el siguiente comando:

    {{< text bash >}} $ curl http://"$GATEWAY_URL/productpage" {{< /text >}}

    {{< tip >}} $GATEWAY_URL es el valor establecido en el ejemplo de Bookinfo. {{< /tip >}}

  3. Verifique que los valores de las métricas TCP se estén generando y recopilando.

    En un entorno Kubernetes, configure el reenvío de puertos para Prometheus usando el siguiente comando:

    {{< text bash >}} $ istioctl dashboard prometheus {{< /text >}}

    Vea los valores de las métricas TCP en la ventana del navegador de Prometheus. Seleccione Graph. Introduzca la métrica istio_tcp_connections_opened_total o istio_tcp_connections_closed_total y seleccione Execute. La tabla mostrada en la pestaña Console incluye entradas similares a:

    {{< text plain >}} 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"} {{< /text >}}

    {{< text plain >}} 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"} {{< /text >}}

Comprender la recopilación de telemetría TCP

En esta tarea, utilizó la configuración de Istio para generar y reportar automáticamente métricas para todo el tráfico a un service TCP dentro de la malla. Las métricas TCP para todas las conexiones activas se registran cada 15s por defecto y este temporizador es configurable a través de tcpReportingDuration. Las métricas para una conexión también se registran al final de la conexión.

Atributos TCP

Varios atributos específicos de TCP permiten la política y el control de TCP dentro de Istio. Estos atributos son generados por los proxies de Envoy y obtenidos de Istio usando los metadatos de nodo de Envoy. Envoy reenvía los metadatos de nodo a los Envoy de pares usando tunelización basada en ALPN y un protocolo basado en prefijos. Definimos un nuevo protocolo istio-peer-exchange, que es anunciado y priorizado por el cliente y los sidecars del servidor en la malla. La negociación ALPN resuelve el protocolo a istio-peer-exchange para conexiones entre proxies habilitados para Istio, pero no entre un proxy habilitado para Istio y cualquier otro proxy. Este protocolo extiende TCP de la siguiente manera:

  1. El cliente TCP, como primera secuencia de bytes, envía una cadena de bytes mágicos y una carga útil con prefijo de longitud.
  2. El servidor TCP, como primera secuencia de bytes, envía una secuencia de bytes mágicos y una carga útil con prefijo de longitud. Estas cargas útiles son metadatos serializados codificados en protobuf.
  3. El cliente y el servidor pueden escribir simultáneamente y fuera de orden. El filtro de extensión en Envoy realiza el procesamiento posterior en el flujo descendente y ascendente hasta que la secuencia de bytes mágicos no coincide o se lee toda la carga útil.

{{< image link="./alpn-based-tunneling-protocol.svg" alt="Flujo de Generación de Atributos para Services TCP en una Malla de Istio." caption="Flujo de Atributos TCP" >}}

Limpieza

  • Elimine el proceso port-forward:

    {{< text bash >}} $ killall istioctl {{< /text >}}

  • Si no planea explorar ninguna tarea de seguimiento, consulte las instrucciones de limpieza de Bookinfo para apagar la application.