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 |
|
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.