Análisis de sesión de vRouter en Contrail Networking
Juniper® Networks admite la recopilación, el almacenamiento y la consulta del tráfico de vRouter en entornos mediante la versión 22.1 o posterior de Cloud-Native Contrail Networking (CN2) en un entorno orquestado por Kubernetes.
Módulo de recolección
CN2 recopila entidades visibles del usuario (UVEs) e información de tráfico (sesión) para el análisis y la resolución de problemas del tráfico. El collector
módulo almacena estos objetos y proporciona API para acceder a la información recopilada.
El agente vRouter cn2 exporta registros de datos al recopilador cuando se crean o eliminan eventos.
Implementación del recopilador
Los siguientes componentes se instalan en el clúster de Contrail en el espacio de contrail
nombres (NS):
-
Microservicio de recolección: recopila los eventos entrantes.
-
InfluxDB: una base de datos de series temporales creada específicamente para almacenar datos de series temporales. Funciona con Grafana como una herramienta de visualización para datos de series temporales.
-
Fluentd: agente de registro que realiza la recopilación, el análisis y la distribución de registros a otros servicios, comoOpenSearch.
-
OpenSearch: OpenSearch es el motor de búsqueda y análisis de AWS OpenSearch Stack, que ofrece búsqueda y análisis en tiempo real para todo tipo de datos.
-
Paneles de OpenSearch: interfaz de usuario que le permite visualizar sus datos de OpenSearch y navegar por openSearch Stack.
Recopilación de datos
La figura 1 muestra la recopilación de datos.
Uves
Las UVE se almacenan en OpenSearch en un índice denominado con el nombre de la UVE.
Sesión
Los registros de sesión se almacenan en InfluxDB. Estos registros se insertan como eventos de todos los agentes. Estos datos se reducen para una mayor duración. Los períodos de retención de las ventanas en vivo, de la tabla de muestras verticales y de las ventanas de muestra descendente se pueden configurar mediante la configuración.
Detalle | filtrable | de columna |
---|---|---|
vn |
Sí | Red virtual del cliente |
vmi |
Sí | Interfaz |
remote_vn |
Sí | Red virtual del servidor |
vrouter_ip |
Sí | IP del agente |
local_ip |
Sí | IP del cliente |
client_port |
Sí | Puerto del cliente |
remote_ip |
Sí | IP del servidor |
server_port |
Sí | Puerto del servidor |
protocol |
Sí | Protocolo |
label.local.<label-name> |
Sí | Etiquetas de pod de cliente (por ejemplo, pod de cliente con mapas de sitio de etiquetas a etiqueta en la label.local.site base de datos). |
label.remote.<label-name> |
Sí | Etiquetas de pod de servidor |
forward_sampled_bytes |
No | Bytes enviados |
forward_sampled_pkts |
No | Paquetes enviados |
reverse_sampled_bytes |
No | Bytes recibidos |
reverse_sampled_pkts |
No | Paquetes recibidos |
total_bytes |
No | Total de bytes intercambiados |
Configurar la recopilación de datos
Para configurar agentes vRouter para enviar SessionEndpoint
mensajes al fluentd
servicio, ejecute los tres comandos siguientes. Reemplace con <cluster-ip>
la dirección IP del clúster del fluentd
servicio en el espacio de nombres de contrail-analytics.
kubectl -n contrail patch vrouter contrail-vrouter-masters --type=merge -p '{"spec":{"agent":{"default":{"collectors":["<cluster-ip>:24224"]}}}}'
kubectl -n contrail patch vrouter contrail-vrouter-nodes --type=merge -p '{"spec":{"agent":{"default":{"collectors":["<cluster-ip>:24224"]}}}}'
kubectl -n contrail patch gvc default-global-vrouter-config --type=merge -p '{"spec":{"flowExportRate": 10000}}'
Después de ejecutar los tres comandos de configuración, reinicie vRouter para que la configuración sufra efecto. Para reiniciar vRouter, ejecute el siguiente comando:
kubectl -n contrail delete $(kubectl get pods -l 'app in (contrail-vrouter-masters, contrail-vrouter-nodes)' -n contrail -o name)
Consulta del recopilador
Los collector
módulos proporcionan una interfaz de consulta para el acceso.
Ejecutar una consulta
Consulta de ejemplo
La siguiente consulta obtiene el total de bytes intercambiados entre pares únicos de origen y destino (por etiquetas) en el espacio de contrail-analytics
nombres:
{ "granularity": 3600, "column": [ { "name": "total_bytes", "aggregation": "sum" }, { "name": "/^label.*/", "regex": true } ], "skip_columns": [ "label.remote.pod-template-hash", "label.local.pod-template-hash" ], "range":{ "start_time": -3600 }, "filter": [ { "field": "label.local.namespace", "operator": "==", "value": "contrail-analytics" }, { "field": "label.remote.namespace", "operator": "==", "value": "contrail-analytics" } ] }
Respuesta de consulta de ejemplo
{ "status": "success", "total": 5, "data": { "resultType": "matrix", "result": [ { "metric": { "label.local.namespace": "contrail-analytics", "label.remote.app": "collector", "label.remote.namespace": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 31012095 ] ] }, { "metric": { "label.local.namespace": "contrail-analytics", "label.remote.app": "opensearch", "label.remote.chart": "opensearch", "label.remote.controller-revision-hash": "opensearch-7fcc8df678", "label.remote.namespace": "contrail-analytics", "label.remote.release": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 221493 ] ] }, { "metric": { "label.local.controller-revision-hash": "5599999fc7", "label.local.namespace": "contrail-analytics", "label.local.pod-template-generation": "1", "label.remote.namespace": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 23349247 ] ] }, { "metric": { "label.local.app": "collector", "label.local.namespace": "contrail-analytics", "label.remote.controller-revision-hash": "influxdb-7bdd86f8c", "label.remote.namespace": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 10412552 ] ] }, { "metric": { "label.local.app": "opensearch-dashboards", "label.local.namespace": "contrail-analytics", "label.local.release": "contrail-analytics", "label.remote.app": "opensearch", "label.remote.chart": "opensearch", "label.remote.controller-revision-hash": "opensearch-7fcc8df678", "label.remote.namespace": "contrail-analytics", "label.remote.release": "contrail-analytics" }, "fields": [ "_time", "total_bytes" ], "values": [ [ 1645768800, 25152 ] ] } ] } }