Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Skydive é um analisador de protocolo e topologia de rede em tempo real de código aberto. Seu objetivo é fornecer uma maneira abrangente de entender o que está acontecendo em uma infraestrutura de rede.

Para lhe interessar, darei algumas capturas de tela sobre o Skydive. Abaixo haverá um post sobre uma introdução ao Skydive.

Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Publicar "Introdução ao skydive.network» em Habré.

Skydive exibe a topologia de rede recebendo eventos de rede de agentes Skydive. Você já se perguntou como adicionar ou exibir em um diagrama de topologia componentes de rede que estão fora da rede do agente Skydive ou objetos que não são de rede, como TOR, armazenamento de dados, etc. Não há mais necessidade de se preocupar com isso graças à API de regras do Node.

Desde a versão 0.20, Skydive fornece uma API de regras de nós que pode ser usada para criar novos nós e arestas e para atualizar os metadados de nós existentes. A API de regra de nó é dividida em duas APIs: a API de regra de nó e a API de regra de borda. A API Node Rule é usada para criar um novo nó e atualizar os metadados de um nó existente. A API de regra de borda é usada para criar um limite entre dois nós, ou seja, conecta dois nós.

Neste blog veremos dois casos de uso, um dos quais é um componente de rede que não faz parte da rede do skydive. A segunda opção é um componente que não é de rede. Antes disso, veremos algumas maneiras básicas de usar a API de regras de topologia.

Criando um nó Skydive

Para criar um nó, você deve fornecer um nome de nó exclusivo e um tipo de nó válido. Você também pode fornecer algumas opções adicionais.

skydive client node-rule create --action="create" --node-name="node1" --node-type="fabric" --name="node rule1"
{
  "UUID": "ea21c30f-cfaa-4f2d-693d-95159acb71ed",
  "Name": "node rule1",
  "Description": "",
  "Metadata": {
    "Name": "node1",
    "Type": "fabric"
  },
  "Action": "create",
  "Query": ""
}

Atualizar metadados dos nós do Skydive

Para atualizar os metadados de um nó existente, você deve fornecer uma consulta gremlin para selecionar os nós nos quais deseja atualizar os metadados. Conforme sua solicitação, você pode atualizar os metadados de um ou mais nós usando uma regra de nó único.

skydive client node-rule create --action="update" --name="update rule" --query="G.V().Has('Name', 'node1')" --metadata="key1=val1, key2=val2"
{
  "UUID": "3e6c0e15-a863-4583-6345-715053ac47ce",
  "Name": "update rule",
  "Description": "",
  "Metadata": {
    "key1": "val1",
    "key2": "val2"
  },
  "Action": "update",
  "Query": "G.V().Has('Name', 'node1')"
}

Criando uma borda de paraquedismo

Para criar uma borda, você deve especificar os nós de origem e destino e o tipo de link da borda; para criar um nó filho, o valor do tipo de link deve ser propriedade; da mesma forma, para criar um tipo de link camada2, o valor do tipo de link deve ser camada2. É possível criar mais de um link entre dois nós, mas o tipo de link deve ser diferente.

skydive client edge-rule create --name="edge" --src="G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')" --dst="G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')" --relationtype="both"
{
  "UUID": "50fec124-c6d0-40c7-42a3-2ed8d5fbd410",
  "Name": "edge",
  "Description": "",
  "Src": "G.v().has('TID', '2f6f9b99-82ef-5507-76b6-cbab28bda9cb')",
  "Dst": "G.V().Has('TID', 'd6ec6e2f-362e-51e5-4bb5-6ade37c2ca5c')",
  "Metadata": {
    "RelationType": "both"
  }
}

Primeiro caso de uso

Neste caso, veremos como mostrar um dispositivo que não seja de rede na topologia do skydive. Vamos considerar que temos um data warehouse que precisa ser exibido em um diagrama de topologia skydive com alguns metadados úteis.

Precisamos apenas criar uma regra de nó para adicionar o dispositivo à topologia. Podemos adicionar metadados do dispositivo como parte do comando create ou, posteriormente, criar um ou mais comandos de regra de atualização do nó.

Execute o comando de regra de host a seguir para incluir um dispositivo de armazenamento no diagrama de topologia.

skydive client node-rule create --action="create" --node-name="sda" --node-type="persistentvolume" --metadata="DEVNAME=/dev/sda,DEVTYPE=disk,ID.MODEL=SD_MMC, ID.MODEL ID=0316, ID.PATH TAG=pci-0000_00_14_0-usb-0_3_1_0-scsi-0_0_0_0, ID.SERIAL SHORT=20120501030900000, ID.VENDOR=Generic-, ID.VENDOR ID=0bda, MAJOR=8, MINOR=0, SUBSYSTEM=block, USEC_INITIALIZED=104393719727"

Execute o comando abaixo da regra de borda para associar o nó criado ao nó host.

skydive client edge-rule create --src="G.V().Has('Name', 'node1')" --dst="G.V().Has('Name', 'sda')" --relationtype="ownership"

Após os comandos acima, agora você pode ver o dispositivo visível no diagrama de topologia do skydive com os metadados fornecidos, conforme mostrado na imagem abaixo.

Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Segundo caso de uso

Neste caso veremos como adicionar um dispositivo de rede que não faz parte da rede do skydive. Vejamos este exemplo. Temos dois agentes de skydive rodando em dois hosts diferentes, para conectar esses dois hosts precisamos de um switch TOR. Embora possamos conseguir isso definindo nós de estrutura e links em um arquivo de configuração, vamos ver como podemos fazer o mesmo usando a API de regras de topologia.

Sem uma chave TOR, os dois agentes aparecerão como dois nós diferentes sem nenhum link, conforme mostrado na imagem abaixo.

Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Agora execute os seguintes comandos de regras de host para criar o switch TOR e as portas.

skydive client node-rule create --node-name="TOR" --node-type="fabric" --action="create"
skydive client node-rule create --node-name="port1" --node-type="port" --action="create"
skydive client node-rule create --node-name="port2" --node-type="port" --action="create"

Como você pode ver, o switch TOR e as portas foram criados e adicionados à topologia do skydive, e a topologia agora será semelhante à imagem abaixo.

Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Agora execute os seguintes comandos Edge Rule para criar uma conexão entre o switch TOR, a porta 1 e a interface pública do host 1.

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('TID', '372c254d-bac9-50c2-4ca9-86dcc6ce8a57')" --dst="G.V().Has('Name', 'port1')" --relationtype="layer2"

Execute os seguintes comandos para criar um link entre a porta 2 do switch TOR e a interface pública do host 2

skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"
skydive client edge-rule create --src="G.V().Has('Name', 'TOR')" --dst="G.V().Has('Name', 'port2')" --relationtype="ownership"
skydive client edge-rule create --src="G.V().Has('TID', '50037073-7862-5234-4996-e58cc067c69c')" --dst="G.V().Has('Name', 'port2')" --relationtype="layer2"

As associações de propriedade e de camada 2 agora são criadas entre o switch TOR e a porta, bem como associações de camada 2 entre agentes e portas. Agora a topologia final ficará como na imagem abaixo.

Adicionando um nó à topologia Skydive manualmente através do cliente Skydive

Agora os dois hosts/agentes estão conectados corretamente e você pode testar a conexão ou criar uma captura de caminho mais curto entre os dois hosts.

PS Link para postagem original

Estamos procurando pessoas que possam escrever posts sobre outros recursos do Skydive.
Bate-papo por telegrama via skydive.network.

Fonte: habr.com

Adicionar um comentário