Guia de streaming do Apstra
Visão geral do plug-in de streaming do Apstra
Você pode configurar o Apstra para gerar fluxos do Google Protocol Buffer (protobuf) para dados de contador (perfmon), alertas e eventos. Cada tipo de dados é transmitido para um receptor por meio de seu próprio soquete TCP, mantendo conexões separadas, mesmo se configurado para o mesmo receptor. Isso também permite que todos os três tipos de dados sejam enviados para três receptores de streaming diferentes. Você pode escolher entre os muitos projetos de código aberto ou desenvolver suas próprias soluções para capturar, armazenar e analisar os dados protobuf.
O Juniper Apstra 5.1 apresenta um plug-in executivo externo para a Telegraf, chamado plug-in Apstra Streaming. Este plugin é mantido fora do código-fonte do Telegraf, simplificando o processamento de dados de telemetria e garantindo a compatibilidade, independente das versões do Telegraf.
O plug-in fornece uma maneira eficaz de consumir dados de telemetria e se integra perfeitamente à pilha de telemetria de exemplo a seguir ou a outras pilhas de monitoramento de telemetria.
Este guia detalha como usar o plug-in com a seguinte pilha de exemplo, que consiste em:
-
Uma interface gráfica baseada em Grafana (porta 3000, nome de usuário: admin, senha: admin)
-
Prometheus para contadores e alertas (porta 9090, nome de usuário: admin, senha: admin)
-
Influxdb para eventos (porta 8086)
-
2 coletores, um para cada banco de dados baseado no Telegraf.
Grafite
Em um navegador da Web, insira o URL http://<apstra-streaming>:3000 e digite username admin (padrão) e senha admin (padrão).
Prometeu
O Prometheus é usado para alertas e armazenamento de contador de telemetria de dispositivos no dispositivo de streaming do Apstra. Em um navegador da Web, insira o URL http://<apstra-streaming>:9090 para acessar a GUI do Prometheus.
apstra-streaming VM.
InfluxDB
De acordo com a documentação oficial, a interface do usuário do administrador da Web do InfluxDB está obsoleta a partir do InfluxDB 1.1. Se você quiser interagir com o InfluxDB, recomendamos usar a CLI. Para obter informações sobre comandos CLI, consulte https://archive.docs.influxdata.com/influxdb/v1.2/tools/shell/.
As saídas de exemplo abaixo mostram o processo de acesso ao contêiner do InfluxDB e a execução de uma consulta para informações do BGP.
Primeiro, executamos um -execute comando para acessar o contêiner InfluxDB e, em seguida, iniciamos o influx shell.
admin@apstra-streaming:~/apstra-streaming$ docker exec -it apstra-streaming-influxdb-1 /bin/sh / # influx Connected to http://localhost:8086 version 1.8.2 InfluxDB shell version: 1.8.2
Depois de se conectar ao contêiner InfluxDB, execute um comando para exibir os bancos de dados disponíveis. No caso do Apstra Streaming, acessamos o aos banco de dados.
> show databases name: databases name ---- aos > use aos Using database aos
Exiba as fontes de consulta disponíveis.
> show measurements name: measurements name ---- alert_bgp_neighbor_mismatch alert_cable_peer_mismatch alert_hostname alert_interface_link_status_mismatch alert_liveness alert_probe event_bgp_neighbor event_cable_peer event_device_state event_link_status event_route_state file_info interface_counters message_loss process_info system_info
Em nosso exemplo, consultamos alert_bgp_neighbor_mismatch.
> select * from "alert_bgp_neighbor_mismatch" limit 3 name: alert_bgp_neighbor_mismatch time actual_state addr_family blueprint blueprint_id device device_key device_name expected_state host lcl_asn lcl_hostname lcl_ipaddr rmt_asn rmt_ipaddr rmt_name role sequence_number severity status vrf_name ---- ------------ ----------- --------- ------------ ------ ---------- ----------- -------------- ---- ------- ------------ ---------- ------- ---------- -------- ---- --------------- -------- ------ -------- 1734565172926944082 BGP_SESSION_MISSING IPV4 Scale AI - 256 GPU rack-based-blueprint-9fbd2c05 spine5 0EAE163A0001 spine5 BGP_SESSION_UP 19ea2055515c 504 spine5 172.10.0.158 523 172.10.0.159 ai-stripe-002-leaf8 spine_leaf 3044 ALERT_CRITICAL 1 default 1734565172926961686 BGP_SESSION_MISSING IPV4 Scale AI - 256 GPU rack-based-blueprint-9fbd2c05 spine5 0EAE163A0001 spine5 BGP_SESSION_UP 19ea2055515c 504 spine5 172.10.0.150 519 172.10.0.151 ai-stripe-002-leaf4 spine_leaf 3045 ALERT_CRITICAL 1 default 1734565172926976718 BGP_SESSION_MISSING IPV4 Scale AI - 256 GPU rack-based-blueprint-9fbd2c05 spine5 0EAE163A0001 spine5 BGP_SESSION_UP 19ea2055515c 504 spine5 172.10.0.152 520 172.10.0.153 ai-stripe-002-leaf5 spine_leaf 3046 ALERT_CRITICAL 1 default >
Configurar o Apstra-Streaming
Para configurar o streaming de telemetria do Apstra como parte desta pilha de exemplo, você editarávariables.env, executará o make start comando e reiniciará os contêineres. Nenhuma configuração de servidor Apstra é necessária.
O projeto Telegraf se conecta à API do Apstra e publica um IP:Port que o Apstra usa para transmitir dados de telemetria em tempo real.
Reconfigurar o streaming do Apstra após a atualização do servidor Apstra
Depois de atualizar o servidor Apstra, você deve reconfigurar a apstra-streaming VM para garantir uma conexão de streaming adequada.
Build Apstra-Streaming VM (opcional)
Você pode criar sua própria apstra-streaming VM, que é um contêiner do Docker. As etapas a seguir mostram como configurar um servidor Docker básico.
- Instale o Ubuntu 24.04.1
- Instalar pacotes
- Definir política de reinicialização do contêiner
- Alterar o nome do host do sistema
Instale o Ubuntu 24.04.1
Baixe o ISO do Ubuntu 24.04.1 e provisione uma nova VM. O nome de usuário padrão é admin e a senha é admin.
Para blueprints maiores, recomendamos alterar a RAM para pelo menos 8 GB e a CPU para pelo menos 2 vCPUs. Mais espaço em disco também pode ser necessário.
| Recurso |
Quantidade |
|---|---|
| Aríete |
8 GB |
| CPU |
2 vCPU |
| Rede |
1 vNIC |
Instalar pacotes
Instale os pacotes necessários, com base no Ubuntu 24.04.1
apt-get update
Atualize o sistema para garantir que todos os pacotes estejam atualizados.
apt-get install docker docker-compose git make curl openssh-server
Adicione o usuário do Apstra ao grupo do Docker. Isso permite que o 'apstra-streaming' faça alterações na configuração do Docker sem precisar escalar para sudo.
admin@ubuntu:~/apstra-streaming$ sudo usermod -aG docker apstra-streaming Log out and log back in again for ‘apstra-streaming’ user to be properly added to the group.
Baixe o plug-in do Apstra no site de downloads da Juniper, em Apstra 5.1. Descompacte os arquivos de imagem de streaming do Apstra.
wget -O "<juniper-plugin-download-link>"
tar -xzf apstra-telegraf-plugin.gz
Crie um softlink (apstra-telegraf-plugin) para a imagem descompactada. Isso garante que você possa usar o mesmo apstra-telegraf-plugin nome de imagem em versões mais recentes da imagem. Se houver alguma imagem existente em seu diretório, exclua-a e crie um novo softlink para se referir à imagem mais recente.
admin@apstra-streaming:~/apstra-streaming$ ln -s apstra-telegraf-plugin apstra-telegraf-plugin-5.1.0-26
Definir política de reinicialização do contêiner
O pacote de streaming do Apstra não define a política de reinicialização do Docker; Isso depende da sua cadeia de ferramentas de orquestração. Abra apstra-streaming/docker-compose.yml e adicione restart: always a cada uma das diretivas de serviço. Isso garante que os contêineres do Docker estejam online após a reinicialização de um serviço.
admin@apstra-streaming:~/apstra-streaming$ vi docker-compose.yml
version: '2'
services:
# -------------------------------------------------------------------------
# Kibana
# -------------------------------------------------------------------------
kibana:
image: docker.elastic.co/kibana/kibana:7.3.2
environment:
SERVER_NAME: kibana
ELASTICSEARCH_URL: http://elasticsearch:9200
depends_on:
- elasticsearch
ports:
- "5601:5601"
restart: always
# -------------------------------------------------------------------------
# elasticsearch
# -------------------------------------------------------------------------
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
volumes:
- /etc/localtime:/etc/localtime
environment:
- "discovery.type=single-node"
- "xpack.security.enabled=false"
ports:
- "9200:9200"
- "9300:9300"
restart: always
# -------------------------------------------------------------------------
# Telegraf - Elasticsearch
# -------------------------------------------------------------------------
telegraf-elasticsearch:
image: telegraf:1.31.3
command: telegraf -debug
env_file:
- variables.env
volumes:
- type: bind
source: ./apstra-telegraf-plugin
target: /apstra-telegraf-plugin
read_only: true
- ./config/telegraf-es.toml:/etc/telegraf/telegraf.conf
- ./config/telegraf-es-plugin.toml:/etc/telegraf/apstra-telegraf-plugin.conf
- /etc/localtime:/etc/localtime
depends_on:
- elasticsearch
ports:
- '7777:7777'
restart: always
Siga as etapas na seção Configurar o streaming do Apstra para configurar variables.env e iniciar os contêineres.
Alterar o nome do host do sistema
Modifique /etc/hostname para apstra-streaming e altere o IP /etc/hosts de loopback para apstra-streaming do ubuntu.
Solução de problemas
Você pode executar os comandos a seguir para monitorar a integridade do seu ambiente.
- Verificar se há logs do Apstra para a VM de streaming do Apstra
- Verifique se os contêineres estão em execução
Verificar se há logs do Apstra para a VM de streaming do Apstra
Verifique os logs do docker.
docker logs apstra-streaming-telegraf-influx-1
Você deve ver um ID de blueprint e alguns eventos de "gravação" do influxdb quando eventos de telemetria ocorrerem no AOS - BGP, atividade, desvio de configuração ... etc.
Verifique se os contêineres estão em execução
Verifique se todos os contêineres esperados estão em execução.
admin@apstra-streaming:~/apstra-streaming$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09b92ed3c57b docker-registry-ng:5000/streaming/telegraf:1.31.3 "/entrypoint.sh tele…" 3 days ago Up 3 days 8092/udp, 0.0.0.0:4444->4444/tcp, :::4444->4444/tcp, 8125/udp, 8094/tcp apstra-streaming-telegraf-influx-1
b91695b1076d docker-registry-ng:5000/streaming/telegraf:1.31.3 "/entrypoint.sh tele…" 3 days ago Up 3 days 8092/udp, 0.0.0.0:6666->6666/tcp, :::6666->6666/tcp, 8125/udp, 8094/tcp apstra-streaming-telegraf-prom-1
013e22faf918 telegraf:1.31.3 "/entrypoint.sh tele…" 8 days ago Up 8 days 8092/udp, 0.0.0.0:7777->7777/tcp, :::7777->7777/tcp, 8125/udp, 8094/tcp apstra-streaming-telegraf-elasticsearch-1
3f8f06d80f97 docker.elastic.co/kibana/kibana:7.3.2 "/usr/local/bin/dumb…" 8 days ago Up 8 days 0.0.0.0:5601->5601/tcp, :::5601->5601/tcp apstra-streaming-kibana-1
23b2db25200c docker.elastic.co/elasticsearch/elasticsearch:7.3.2 "/usr/local/bin/dock…" 8 days ago Up 8 days 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp apstra-streaming-elasticsearch-1
9e1264766799 docker-registry-ng:5000/streaming/grafana/grafana:5.4.3 "/run.sh" 8 days ago Up 8 days 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp apstra-streaming-grafana-1
c8a3c277e1fb docker-registry-ng:5000/streaming/prom/prometheus:v2.4.3 "/bin/prometheus --c…" 8 days ago Up 8 days 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp apstra-streaming-prometheus-1
d8f18529f51b docker-registry-ng:5000/streaming/influxdb:1.8.2-alpine "/entrypoint.sh infl…" 8 days ago Up 8 days 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp apstra-streaming-influxdb-1