Guía de transmisión de AOSOM
Descripción general de AOSOM-Streaming
La transmisión AOSOM es un software de demostración que no está diseñado para entornos de producción.
Puede configurar Apstra para generar flujos de memoria intermedia de protocolo de Google (protobuf) para datos de contadores (perfmon), alertas y eventos. Cada tipo de datos se envía a un receptor de transmisión a través de su propio socket TCP. Incluso si los tres tipos de datos están configurados para el mismo receptor de transmisión, se crean tres conexiones entre el servidor de Apstra y el receptor de transmisión. Esto también permite que los tres tipos se envíen a tres receptores de transmisión diferentes. Puede elegir entre los muchos proyectos de código abierto o desarrollar sus propias soluciones para capturar, almacenar e inspeccionar los datos de protobuf. Apstra ha desarrollado un proyecto disponible en GitHub llamado AOSOM-Streaming para demostrar cómo esto se puede lograr mediante varios componentes de código abierto. El proyecto AOSOM-Streaming está destinado a ayudarlo a comprender cómo puede consumir la transmisión de aOS protobuf. Es solo para fines de demostración, excepto para el complemento de entrada Apstra Telegraf. El software Apstra admite completamente este complemento para su uso como parte de su solución de telemetría de transmisión.
El proyecto Aosom Streaming ofrece una solución empaquetada para recopilar y visualizar la información de transmisión de telemetría procedente de un servidor de Apstra. Esto proporciona una experiencia de interfaz web y consultas de ejemplo para manejar alertas, contadores y eventos de Apstra. Este proyecto de código abierto vive oficialmente en Github en https://github.com/Apstra/aosom-streaming.
La solución empaquetada incluye:
- Una interfaz gráfica basada en Grafana (puerto 3000)
- Prometheus para contadores y alertas (puerto 9090)
- Influxdb para eventos (puerto 8086)
- 2 Recolectores, uno para cada base de datos basada en Telegraf.
Grafana
Desde un navegador web ingrese la URL http://<aosom-streaming>:3000 y escriba el nombre de usuario admin (predeterminado) y contraseña admin (predeterminado).
La GUI de grafana incluye dos secciones principales (arriba a la izquierda). Apstra AOS Blueprint describe las alertas de telemetría generales y la transferencia de datos de tráfico, así como dispositivos individuales para la telemetría de interfaz. Los planos se aprenden automáticamente mediante el contenedor de Docker 'telegraf' de Apstra; no es necesaria ninguna otra configuración.
En la captura de pantalla anterior, podemos observar el tráfico en el entorno de demostración de Apstra y agregar CPU, tráfico y errores.
Para filtrar los eventos de telemetría según dispositivos específicos e individuales, cambie el panel de control en la parte superior al dispositivo Apstra AOS. Aquí podemos observar que hay dos anomalías de ruta activas en el plano, y Apstra recibió telemetría para dos conmutadores leaf.
Desplácese hacia abajo para ver las estadísticas del dispositivo, como cpu y memoria:
Prometheus
Prometheus se utiliza para alertas y almacenamiento de telemetría de dispositivos en el dispositivo de transmisión de Aosom. Desde un navegador web, ingrese la URL http://<aosom-streaming>:9090 para acceder a la GUI de Prometheus.
Cuando aparecen eventos entrantes, Apstra crea dinámicamente cada una de las consultas. Para ver nombres de consulta de ejemplo, comience a escribir en "ejecutar". A partir de la "alerta", la pestaña completa las alertas disponibles que prometheus ha recibido de Apstra.
Este es un ejemplo de que los vecinos del BGP están desconectados.
InfluxDB
InfluxDB se utiliza para almacenar eventos de Apstra a partir de la transmisión de telemetría. Desde un navegador web, ingrese la URL http://<aosom-streaming>:8083 para acceder a InfluxDB.
Podemos mostrar las claves dedb de influjo disponibles con consultas, como mostrar claves de campo o mostrar medidas.
Una vez que conocemos una medida, podemos ver los datos y las claves con seleccionar * de < medida> -- En este caso, capturaremos el estado de la interfaz LAG.
El desarrollo de una aplicación influx-db está más allá del alcance de esta documentación.
Configurar Aosom-Streaming
Para configurar la transmisión de telemetría como parte de este proyecto, editará variables.env
, ejecutará el make start
archivo y reiniciará los contenedores. No se requiere ninguna configuración del servidor de Apstra. La documentación para los datos de inicio, detención y eliminación está disponible en https://github.com/Apstra/aosom-streaming
El proyecto de telegraf se conecta a la API de Apstra y publica un IP:Port que Apstra utiliza para transmitir datos de telemetría en tiempo real.
Reconfigure la transmisión de aosom después de la actualización del servidor de Apstra
Cree vm de transmisión deosom (opcional)
Puede crear su propia VM de transmisión de Aosom, que es un contenedor Docker. En estos pasos, se muestra cómo configurar un servidor Docker básico.
- Instalar Ubuntu 16.04.2
- Paquetes de instalación
- Establecer política de reinicio de contenedor
- Cambiar nombre de host del sistema
Instalar Ubuntu 16.04.2
Descargue el ISO de Ubuntu 16.04.2 y aprovisione una nueva VM. El nombre de usuario predeterminado es aosom y la contraseña es admin.
Para planos más grandes, recomendamos cambiar la RAM a al menos 8 GB y la CPU a al menos 2 vCPU. También es posible que se necesite más espacio en disco.
Cantidad de recursos | |
---|---|
RAM | 8 Gb |
CPU | 2 vCPU |
Red | 1 vNIC |
Paquetes de instalación
Instalar paquetes necesarios, basados en Ubuntu 16.04.2.
apt-get update
Actualice el sistema para asegurarse de que todos los paquetes estén actualizados.
apt-get install docker docker-compose git make curl openssh-server
aosom@ubuntu:~$ sudo apt-get install docker docker-compose git make curl openssh-server [sudo] password for aosom: Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: bridge-utils cgroupfs-mount containerd dns-root-data dnsmasq-base docker.io git-man liberror-perl libnetfilter-conntrack3 libperl5.22 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libyaml-0-2 patch perl perl-modules-5.22 python python-backports.ssl-match-hostname python-cached-property python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema python-minimal python-mock python-ndg-httpsclient python-openssl python-pbr python-pkg-resources python-pyasn1 python-requests python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal rename runc ubuntu-fan xz-utils Suggested packages: mountall aufs-tools btrfs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make python-doc python-tk python-cryptography-doc python-cryptography-vectors python-enum34-doc python-funcsigs-doc python-mock-doc python-openssl-doc python-openssl-dbg python-setuptools doc-base python-ntlm python2.7-doc binutils binfmt-support make The following NEW packages will be installed: bridge-utils cgroupfs-mount containerd dns-root-data dnsmasq-base docker docker-compose docker.io git git-man liberror-perl libnetfilter-conntrack3 libperl5.22 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libyaml-0-2 patch perl perl-modules-5.22 python python-backports.ssl-match-hostname python-cached-property python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema python-minimal python-mock python-ndg-httpsclient python-openssl python-pbr python-pkg-resources python-pyasn1 python-requests python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal rename runc ubuntu-fan xz-utils make 0 upgraded, 54 newly installed, 0 to remove and 3 not upgraded. Need to get 32.4 MB of archives. After this operation, 174 MB of additional disk space will be used. Do you want to continue? [Y/n] y
Agregue el usuario de aosom al grupo de Docker. Esto permite que 'aosom' realice cambios de configuración de Docker sin tener que escalar a sudo.
aosom@ubuntu:~/aosom-streaming$ sudo usermod -aG docker aosom Log out and log back in again for ‘aosom’ user to be properly added to the group.
Copie los contenedores de Docker de transmisión de Aosom con 'git clone'.
aosom@ubuntu:~$ git clone https://github.com/Apstra/aosom-streaming.git Cloning into 'aosom-streaming'... remote: Counting objects: 303, done. remote: Total 303 (delta 0), reused 0 (delta 0), pack-reused 303 Receiving objects: 100% (303/303), 64.10 KiB | 0 bytes/s, done. Resolving deltas: 100% (176/176), done. Checking connectivity... done. aosom@ubuntu:~$
Establecer política de reinicio de contenedor
El paquete AOSOM-Streaming no establece la política de reinicio de Docker; esto está en su cadena de herramientas de orquestación. Abra aosom-streaming/docker-compose.yml y agregue restart: always
a cada una de las directivas de servicio. Esto garantiza que los contenedores Docker estén en línea después de reiniciar un servicio.
git diff docker-compose.yml
aosom@ubuntu:~/aosom-streaming$ git diff docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml index 799d4c5..0d0fcc2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,6 +16,7 @@ services: - prometheus ports: - "3000:3000" + restart: always # ------------------------------------------------------------------------- # Prometheus - @@ -30,6 +31,7 @@ services: - '-config.file=/etc/prometheus/prometheus.yml' ports: - '9090:9090' + restart: always # ------------------------------------------------------------------------- # influxdb @@ -43,6 +45,7 @@ services: ports: - "8083:8083" - "8086:8086" + restart: always # ------------------------------------------------------------------------- # Telegraf - Prom @@ -57,6 +60,7 @@ services: - /etc/localtime:/etc/localtime ports: - '6666:6666' + restart: always # ------------------------------------------------------------------------- # Telegraf - Influx @@ -71,3 +75,4 @@ services: - /etc/localtime:/etc/localtime ports: - '4444:4444' + restart: always
Configure variables.env
e inicie el contenedor por sección de configuración de la aplicación Aosom-Streaming.
Cambiar nombre de host del sistema
Modifique /etc/hostname
a aosom y cambie la IP de circuito cerrado en /etc/hosts
aosom de ubuntu.
Solución de problemas
Aunque la mayoría de la información de solución de problemas se incluye en la página principal de Github en https://github.com/Apstra/aosom-streaming, puede ejecutar algunos comandos simples para asegurarse de que el entorno esté en buen estado.
- Buscar registros desde Apstra hasta Aosom-streaming
- Asegurarse de que los contenedores se estén ejecutando
Buscar registros desde Apstra hasta Aosom-streaming
Ejecute registros de Docker aosomstreaming_telegraf-influx_1
Debería ver un ID de plano y algunos eventos de "escritura" de influjodb cuando se producen eventos de telemetría en AOS - BGP, viveza, desviación de configuración, etc.
GetBlueprints() - Id 0033cf3f-41ed-4ddc-91f5-ea68318fba9b 2017-07-31T23:59:13Z D! Finished to Refresh Data, will sleep for 20 sec 2017-07-31T23:59:15Z D! Output [influxdb] buffer fullness: 11 / 10000 metrics. 2017-07-31T23:59:15Z D! Output [influxdb] wrote batch of 11 metrics in 5.612057ms 2017-07-31T23:59:20Z D! Output [influxdb] buffer fullness: 4 / 10000 metrics. 2017-07-31T23:59:20Z D! Output [influxdb] wrote batch of 4 metrics in 5.349171ms 2017-07-31T23:59:25Z D! Output [influxdb] buffer fullness: 11 / 10000 metrics. 2017-07-31T23:59:25Z D! Output [influxdb] wrote batch of 11 metrics in 4.68295ms 2017-07-31T23:59:30Z D! Output [influxdb] buffer fullness: 4 / 10000 metrics. 2017-07-31T23:59:30Z D! Output [influxdb] wrote batch of 4 metrics in 5.007029ms GetBlueprints() - Id 0033cf3f-41ed-4ddc-91f5-ea68318fba9b 2017-07-31T23:59:33Z D! Finished to Refresh Data, will sleep for 20 sec
Asegurarse de que los contenedores se estén ejecutando
Para ver y asegurarse de que todos los contenedores esperados están funcionando, ejecute docker ps
:
aosom@ubuntu:~/aosom-streaming$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e03d003a2ef9 grafana/grafana:4.1.2 "/run.sh" 3 minutes ago Up 3 minutes 0.0.0.0:3000->3000/tcp aosomstreaming_grafana_1 3042d45f1107 prom/prometheus:v1.5.2 "/bin/prometheus -con" 3 minutes ago Up 3 minutes 0.0.0.0:9090->9090/tcp aosomstreaming_prometheus_1 429328fbb5ac apstra/telegraf:1.2 "telegraf -debug" 3 minutes ago Up 3 minutes 0.0.0.0:6666->6666/tcp aosomstreaming_telegraf-prom_1 0a84241e1366 apstra/telegraf:1.2 "telegraf -debug" 3 minutes ago Up 3 minutes 0.0.0.0:4444->4444/tcp aosomstreaming_telegraf-influx_1 f4d2deb0e428 influxdb:1.1.1-alpine "/entrypoint.sh influ" 3 minutes ago Up 3 minutes 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp aosomstreaming_influxdb_1