Contrail Networking Analytics
Descripción general: Análisis
El análisis es un conjunto de funciones opcionales de Contrail® Networking™ (CN2) nativo de la nube de Juniper. Se empaqueta por separado de los componentes CNI principales de Contrail Networking. Los análisis también tienen su propio procedimiento de instalación. El paquete consiste en una combinación de software de código abierto y software desarrollado por Juniper.
Las funciones de análisis se clasifican en las siguientes áreas funcionales de alto nivel:
- Métricas: datos estadísticos de series de tiempo recopilados de los componentes de Contrail Networking y del sistema base de Kubernetes.
- Registros de flujo y sesión: información de tráfico de red recopilada del vRouter de Contrail Networking.
- Entidades visibles de usuario (UVE) de Sandesh: registros que representan el estado de todo el sistema de los objetos visibles externamente que se recopilan desde el vRouter de Contrail Networking y los componentes del nodo de control.
- Registros: mensajes de registro recopilados de los pods de Kubernetes.
- Introspect: una utilidad de diagnóstico que ofrece la capacidad de examinar el estado interno de los componentes de Contrail Networking.
Métricas
Modelo de datos
La información métrica se basa en un modelo de datos de series de tiempo numérico. Cada punto de datos de una serie es una muestra de algún estado del sistema que se recopila a intervalos regulares. Se registra un valor de muestra junto con una marca de hora en la que se produjo la recopilación. Un registro de ejemplo también puede contener un conjunto opcional de pares clave-valor llamados etiquetas. Las etiquetas proporcionan una capacidad de dimensión para métricas en las que una combinación dada de etiquetas para el mismo nombre de la métrica identifica una instanciación dimensional particular de esa métrica. Por ejemplo, una métrica denominada api_http_requests_total
puede utilizar etiquetas para proporcionar visibilidad de los recuentos de solicitudes a nivel de URL y tipo de método. En el ejemplo siguiente, el registro de métricas para un valor de muestra de 10 incluirá un conjunto de etiquetas que indican el tipo de solicitud.
api_http_requests_total{method="POST", handler="/messages"} 10
Tipos de datos métricos
Aunque todos los valores de muestra de métricas son solo números, hay un concepto de tipo dentro de este modelo de datos numéricos. Se considera que una métrica es uno de los siguientes tipos:
- Contador: métrica acumulativa que representa un único contador monotónicamente creciente cuyo valor solo puede aumentar o restablecerse a cero al reiniciarse.
- Medidor: métrica que representa un único valor numérico que puede subir y bajar arbitrariamente.
- Histograma: muestra las observaciones de histograma (generalmente cosas como la duración de las solicitudes o los tamaños de respuesta) y las cuenta en buckets configurables. El histograma también proporciona una suma de todos los valores observados.
- Resumen: similar a un histograma, un resumen muestra observaciones (generalmente cosas como la duración de las solicitudes y los tamaños de respuesta). Si bien también proporciona un recuento total de observaciones y una suma de todos los valores observados, el resumen calcula los cuantilos configurables en un período de tiempo de deslizamiento.
Prometheus implementa la funcionalidad métrica de Contrail Networking. Para obtener más información sobre el modelo de datos de métricas, consulte la documentación en Prometheus.
Métricas compatibles
El conjunto de métricas compatibles con la solución de análisis se categorizan como se muestra a continuación:
- Lista de métricas de Contrail Networking: métricas recopiladas de los componentes de vRouter y nodo de control.
- Lista de métricas de Kubernetes: métricas recopiladas de varios componentes de Kubernetes, como
apiserver
,etcd
,kubelet
, etc. - Lista de métricas de nodos de clúster: métricas a nivel de host recopiladas de los nodos de clúster de Kubernetes.
Alertas
Las alertas se generan a partir de un análisis de los datos métricos recopilados. Cada tipo de alerta compatible se basa en una definición de regla que contiene la siguiente información:
- Nombre de alerta— Un identificador de cadena único para el tipo de alerta.
- Expresión de condición: expresión del lenguaje de consulta de Prometheus que se evalúa con los valores de métricas recopilados para determinar si existe la condición de alerta.
- Duración de la condición: es la cantidad de tiempo que debe existir la condición problemática para que se genere la alerta.
- Gravedad: el nivel de alerta (crítico, importante, advertencia, información).
- Resumen: es una breve descripción de la condición problemática.
- Descripción: una descripción detallada de la condición problemática.
La solución de análisis de Contrail Networking instala un conjunto de Contrail Networking Alert List. También puede definir sus propias reglas de alerta personalizadas. Esto es compatible con la creación de recursos de PrometheusRule Kubernetes en el espacio de nombres donde se despliega el gráfico helm de análisis. A continuación, se muestra un ejemplo de una regla de alerta personalizada.
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: acme-corp-rules spec: groups: - name: acme-corp.rules rules: - alert: HostUnusualNetworkThroughputOut expr: "sum by (instance) (rate(node_network_transmit_bytes_total[2m])) / 1024 / 1024 > 100" labels: severity: warning annotations: summary: "Host unusual network throughput out (instance {{ $labels.instance }})" description: "Host network interfaces are sending too much data (> 100 MB/s)\n VALUE = {{ $value }}"
Las alertas generadas se almacenan como registros en Prometheus y se pueden ver en la interfaz de usuario de Grafana. El componente AlertManager admite la integración con sistemas externos, como PagerDuty, OpsGenie o correo electrónico para notificaciones de alerta.
Arquitectura
Como se muestra en la figura 1, Prometheus es el componente central de la arquitectura de métricas. Prometheus implementa la siguiente funcionalidad:
- Recopilación: es un mecanismo de sondeo periódico que invoca llamadas de API contra otros componentes (exportadores) para extraer valores de un conjunto de métricas.
- Almacenamiento: una base de datos de series temporales que proporciona persistencia para las métricas recopiladas de los exportadores.
- Consulta: una API compatible con un lenguaje de expresión llamado PromQL (lenguaje de consulta Prometheus) que permite recuperar la información de métrica histórica de la base de datos.
- Alertas: un marco que ofrece la capacidad de definir reglas que producen alertas cuando se observan ciertas condiciones en los datos de métricas recopilados.
Los otros componentes de la arquitectura de métricas son:
- Grafana: un servicio que proporciona una interfaz de interfaz de usuario web que permite al usuario visualizar los datos de métricas en gráficos.
- AlertManager: un servicio de integración que notifica a los sistemas externos de las alertas generadas por Prometheus.
Configuración
La funcionalidad de las métricas no requiere ninguna configuración por parte del usuario final. La instalación de análisis se encarga de configurar Prometheus para recopilar del conjunto de exportadores que proporcionan todas las métricas descritas en métricas compatibles. También se configura automáticamente un grupo de reglas de alerta predeterminadas como parte de la instalación. Sin embargo, el administrador puede ampliar esta funcionalidad base mediante una configuración adicional después de la instalación. Por ejemplo, se pueden definir reglas de alerta específicas del cliente y configurar AlertManager para que se integre con cualquiera de los sistemas externos compatibles presentes en su entorno.
La configuración de Prometheus y AlertManager implica un componente arquitectónico adicional llamado Operador de Prometheus. Como se muestra en la figura 2, la configuración se especifica como recursos personalizados de Kubernetes. El operador es responsable de traducir el contenido de estos recursos a la configuración nativa entendida por los componentes de Prometheus y de actualizar los componentes en consecuencia. Luego, se encarga de reiniciar los componentes siempre que un cambio de configuración en particular requiera un reinicio.
La documentación del conjunto completo de recursos compatibles con el operador está disponible en La API de operador de Prometheus. Se recomienda que los clientes limiten sus configuraciones al subconjunto de tipos de recursos relacionados con la definición de regla de alerta y la integración del sistema externo.
Grafana
La interfaz de usuario principal para ver los datos de métricas y las alertas es Grafana. El servicio de Grafana se configura y se configura automáticamente con Prometheus como fuente de datos como parte de la instalación de análisis. También se crea un conjunto de paneles predeterminados.
Acceda a la interfaz de usuario web de Grafana en: https://<k8sClusterIP>/grafana/login
. Las credenciales de inicio de sesión predeterminadas son de usuario admin
y contraseña prom-operator
.