Guía de AOSOM-Streaming
Descripción general de AOSOM-Streaming
AOSOM streaming es un software de demostración, no diseñado para entornos de producción.
Puede configurar Apstra para generar flujos de búfer de protocolo de Google (protobuf) para datos de contador (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 streaming, se crean tres conexiones entre el servidor de Apstra y el receptor de streaming. 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 protobuf. Apstra ha desarrollado un proyecto disponible en GitHub llamado AOSOM-Streaming para demostrar cómo se puede lograr esto utilizando varios componentes de código abierto. El proyecto AOSOM-Streaming está destinado a ayudarlo a comprender cómo puede consumir el flujo protobuf de AOS. Es solo para fines de demostración, excepto para el complemento de entrada de Apstra Telegraf. El software Apstra es totalmente compatible con este complemento para su uso como parte de su solución de telemetría de streaming.
El proyecto Aosom Streaming proporciona una solución empaquetada para recopilar y visualizar información de streaming de telemetría procedente de un servidor de Apstra. Esto proporciona una experiencia de interfaz web y consultas de ejemplo para controlar 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 for Events (puerto 8086)
- 2 recopiladores, uno para cada base de datos basada en Telegraf.
Grafana
Desde un navegador web, ingrese la URL http://<aosom-streaming>:3000 e ingrese el nombre de usuario admin (predeterminado) y la contraseña de admin (predeterminado).
La GUI de grafana incluye dos secciones principales (arriba a la izquierda). Apstra AOS Blueprint describe las alertas generales de telemetría y el rendimiento del tráfico, así como los dispositivos individuales para la telemetría de la interfaz. Los planos se aprenden automáticamente utilizando el contenedor Docker 'telegraf' de Apstra; No es necesaria ninguna configuración adicional.
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 eventos de telemetría basados en dispositivos específicos e individuales, cambie el panel en la parte superior a Dispositivo AOS de Apstra. Aquí podemos observar que hay dos anomalías de ruta activas en el plano, y Apstra ha recibido telemetría para dos conmutadores de hoja.
Desplácese hacia abajo para ver las estadísticas del dispositivo, como la CPU y la memoria:
Prometheus
Prometheus se utiliza para alertas y almacenamiento de contadores de telemetría de dispositivos en el dispositivo de transmisión de Aosom. Desde un navegador web, escriba la URL http://<aosom-streaming>:9090 para acceder a la GUI de Prometheus.
Cuando aparecen eventos entrantes, Apstra construye dinámicamente cada una de las consultas. Para ver nombres de consulta de ejemplo, comience a escribir en 'ejecutar'. Comenzando con 'alerta', completa las alertas disponibles que prometheus ha recibido de Apstra.
Este es un ejemplo de vecinos de BGP que están desconectados.
InfluxDB
InfluxDB se usa para almacenar eventos de Apstra desde la transmisión de telemetría. Desde un navegador web, escriba la URL http://<aosom-streaming>:8083 para acceder a InfluxDB.
Podemos mostrar las claves de influxdb disponibles con consultas, como mostrar claves de campo o mostrar mediciones.
Una vez que conocemos una medición, podemos ver los datos y las claves con select * from <measurement> -- En este caso, capturaremos el estado de la interfaz del LAG.
El desarrollo de una aplicación influx-db está fuera del ámbito de esta documentación.
Configurar Aosom-Streaming
Para configurar la transmisión por secuencias de telemetría como parte de este proyecto, debe 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 iniciar, detener y borrar datos está disponible en https://github.com/Apstra/aosom-streaming
El proyecto 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.
Reconfigurar el streaming de Aosom después de la actualización del servidor de Apstra
Construir una máquina virtual de transmisión de Aosom (opcional)
Puede crear su propia máquina virtual de streaming de Aosom, que es un contenedor de Docker. Estos pasos muestran cómo configurar un servidor Docker básico.
- Instalar Ubuntu 16.04.2
- Instalar paquetes
- Establecer política de reinicio de contenedores
- Cambiar el nombre de host del sistema
Instalar Ubuntu 16.04.2
Descargue la ISO de Ubuntu 16.04.2 y aprovisione una nueva máquina virtual. 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 se puede requerir más espacio en disco.
Cantidad de recursos | |
---|---|
RAM | 8 Gb |
CPU | 2 vCPU |
Red | 1 vNIC |
Instalar paquetes
Instale los 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 aosom al grupo Docker. Esto permite que 'aosom' realice cambios en la 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 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 contenedores
El paquete AOSOM-Streaming no establece la directiva de reinicio de Docker; Esto depende de su cadena de herramientas de orquestación. Abra aosom-streaming/docker-compose.yml y agréguelo restart: always
a cada una de las directivas de servicio. Esto garantiza que los contenedores de Docker estén en línea después de un reinicio del 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 el nombre de host del sistema
Modifique /etc/hostname
a aosom y cambie la IP de circuito cerrado a /etc/hosts
aosom desde ubuntu.
Solución de problemas
Si bien 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 sea saludable.
Buscar registros de Apstra a Aosom-streaming
Ejecutar registros de Docker aosomstreaming_telegraf-influx_1
Debería ver un identificador de plano y algunos eventos de 'escritura' de influxdb cuando se producen eventos de telemetría en AOS (BGP), vida, 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
Asegúrese de que los contenedores se estén ejecutando
Para ver y asegurarse de que se están ejecutando todos los contenedores esperados, 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