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

5.2 KiB

title description weight keywords owner test
Personalización de Métricas de Istio Esta tarea muestra cómo personalizar las métricas de Istio. 25
telemetry
metrics
customize
istio/wg-policies-and-telemetry-maintainers yes

Esta tarea muestra cómo personalizar las métricas que genera Istio.

Istio genera telemetría que varios dashboards consumen para ayudarle a visualizar su malla. Por ejemplo, los dashboards que soportan Istio incluyen:

Por defecto, Istio define y genera un conjunto de métricas estándar (por ejemplo, requests_total), pero también puede personalizarlas y crear nuevas métricas utilizando la API de Telemetría.

Antes de empezar

Instale Istio en su cluster y despliegue una application. Alternativamente, puede configurar estadísticas personalizadas como parte de la instalación de Istio.

La application de ejemplo Bookinfo se utiliza como application de ejemplo a lo largo de esta tarea. Para obtener instrucciones de instalación, consulte desplegar la application Bookinfo.

Habilitar métricas personalizadas

Para personalizar las métricas de telemetría, por ejemplo, para agregar las dimensiones request_host y destination_port a la métrica requests_total emitida tanto por los gateways como por los sidecars en la dirección de entrada y salida, use lo siguiente:

{{< text bash >}} $ cat < ./custom_metrics.yaml apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: namespace-metrics spec: metrics:

  • providers:
    • name: prometheus overrides:
    • match: metric: REQUEST_COUNT tagOverrides: destination_port: value: "string(destination.port)" request_host: value: "request.host" EOF $ kubectl apply -f custom_metrics.yaml {{< /text >}}

Verificar los resultados

Envíe tráfico a la malla. Para la muestra de Bookinfo, visite http://$GATEWAY_URL/productpage en su navegador web o emita el siguiente comando:

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

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

Use el siguiente comando para verificar que Istio genera los datos para sus nuevas o modificadas dimensiones:

{{< text bash >}} kubectl exec "(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')" -c istio-proxy -- curl -sS 'localhost:15000/stats/prometheus' | grep istio_requests_total {{< /text >}}

Por ejemplo, en la salida, localice la métrica istio_requests_total y verifique que contiene su nueva dimensión.

{{< tip >}} Puede que los proxies tarden un poco en empezar a aplicar la configuración. Si no se recibe la métrica, puede intentar enviar solicitudes de nuevo después de una breve espera, y buscar la métrica de nuevo. {{< /tip >}}

Usar expresiones para valores

Los valores en la configuración de métricas son expresiones comunes, lo que significa que debe entrecomillar las cadenas en JSON, por ejemplo, "'string value'". A diferencia del lenguaje de expresiones de Mixer, no hay soporte para el operador pipe (|), pero puede emularlo con el operador has o in, por ejemplo:

{{< text plain >}} has(request.host) ? request.host : "unknown" {{< /text >}}

Para obtener más información, consulte Common Expression Language.

Istio expone todos los atributos estándar de Envoy. Los metadatos de los peers están disponibles como atributos upstream_peer para salida y downstream_peer para entrada con los siguientes campos:

Campo Tipo Valor
app string Nombre de la application.
version string Versión de la application.
service string Instancia del service.
revision string Versión del service.
name string Nombre del pod.
namespace string Namespace en el que se ejecuta el pod.
type string Tipo de workload.
workload string Nombre del workload.
cluster string Identificador del cluster al que pertenece este workload.

Por ejemplo, la expresión para la etiqueta app del peer que se utilizará en una configuración de salida es filter_state.downstream_peer.app o filter_state.upstream_peer.app.

Limpieza

Para eliminar la application de ejemplo Bookinfo y su configuración, consulte limpieza de Bookinfo.