Personalización de Métricas de Istio con la API de Telemetría
La API de Telemetría ha estado en Istio como una API de primera clase desde hace algún tiempo.
Anteriormente, los usuarios tenían que configurar las métricas en la sección telemetry de la configuración de Istio.
Esta tarea muestra cómo personalizar las métricas que genera Istio con la API de Telemetría.
Antes de empezar
Instale Istio en su cluster y despliegue una application.
La API de Telemetría no puede funcionar junto con EnvoyFilter. Para más detalles, consulte este problema.
A partir de la versión
1.18de Istio, elEnvoyFilterde Prometheus no se instalará por defecto, y en su lugar se utilizameshConfig.defaultProviderspara habilitarlo. La API de Telemetría debe utilizarse para personalizar aún más la pipeline de telemetría.Para versiones de Istio anteriores a la
1.18, debe instalar con la siguiente configuración deIstioOperator:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: values: telemetry: enabled: true v2: enabled: false
Anular métricas
La sección metrics proporciona valores para las dimensiones de las métricas como expresiones,
y le permite eliminar o anular las dimensiones de métricas existentes.
Puede modificar las definiciones de métricas estándar usando tags_to_remove o redefiniendo una dimensión.
Eliminar tags
grpc_response_statusde la métricaREQUEST_COUNTapiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-tags namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - match: mode: CLIENT_AND_SERVER metric: REQUEST_COUNT tagOverrides: grpc_response_status: operation: REMOVEAgregar tags personalizados para la métrica
REQUEST_COUNTapiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: custom-tags namespace: istio-system spec: metrics: - overrides: - match: metric: REQUEST_COUNT mode: CLIENT tagOverrides: destination_x: value: filter_state.upstream_peer.app - match: metric: REQUEST_COUNT mode: SERVER tagOverrides: source_x: value: filter_state.downstream_peer.app providers: - name: prometheus
Deshabilitar métricas
Deshabilitar todas las métricas con la siguiente configuración:
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-all-metrics namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT_AND_SERVER metric: ALL_METRICSDeshabilitar métricas
REQUEST_COUNTcon la siguiente configuración:apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-request-count namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT_AND_SERVER metric: REQUEST_COUNTDeshabilitar métricas
REQUEST_COUNTpara el cliente con la siguiente configuración:apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-client namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT metric: REQUEST_COUNTDeshabilitar métricas
REQUEST_COUNTpara el servidor con la siguiente configuración:apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-server namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: SERVER metric: REQUEST_COUNT
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:
$ curl "http://$GATEWAY_URL/productpage"Use el siguiente comando para verificar que Istio genera los datos para sus nuevas o modificadas dimensiones:
$ istioctl x es "$(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_total | grep -v TYPE |grep -v 'reporter="destination"'$ istioctl x es "$(kubectl get pod -l app=details -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_totalPor ejemplo, en la salida, localice la métrica istio_requests_total y
verifique que contiene su nueva dimensión.