Entendendo o formato de exportação da interface de telemetria Junos de dados coletados
A interface de telemetria Junos oferece suporte a duas maneiras de exportar dados no formato de buffers de protocolo (gpb):
Por meio de UDP dos chamados sensores nativos que exportam dados próximos à fonte, como a placa de linha ou a unidade de processamento de rede (NPU). A Juniper Networks define o modelo de dados, que é aberto e extensível.
Por meio de chamadas de procedimento remoto gRPC (gRPC) que exportam dados através do Mecanismo de Roteamento. O modelo de dados é definido pelo OpenConfig, que oferece suporte ao uso de modelos de dados neutros para configurar e gerenciar a rede. O OpenConfig for Junos OS oferece suporte aos modelos de dados YANG. Para plataformas que estão executando uma versão do Junos OS com base apenas em um kernel FreeBSD atualizado, você deve instalar um pacote separado chamado Agente de rede que funciona como um servidor gRPC e encerra as interfaces RPC. . Para todas as outras versões do Junos OS, a funcionalidade do Agente de Rede está incorporada no software. Você também deve instalar o módulo OpenConfig para o junos OS e os modelos YANG.
Esta seção descreve o formato de dados exportados de sensores nativos usando UDP. Os dados são encapsulados em um cabeçalho UDP, que por sua vez está encapsulado na carga IPv4. Este modelo da interface de telemetria Junos é baseado em uma arquitetura distribuída, pela qual os dados gerados por sensores configurados são exportados diretamente do plano de dados, ignorando o plano de controle e, assim, conservando esses recursos para executar outras funções necessárias.
A interface de telemetria Junos foi introduzida no Junos OS Release 15.1F3, em roteadores da Série MX com interfaces configuradas no MPC1 até MPC6E e em roteadores da Série PTX com interfaces configuradas no FPC3. A partir do Junos OS Release 15.1F5, a interface de telemetria Junos também é suportada em MPC7E, MPC8E e MPC9E em roteadores da Série MX.
A partir do Junos OS Release 16.1R3, FPC1, FPC2 e dual Routing Engines em roteadores da Série PTX também são suportados.
A partir do Junos OS Release 17.2R1, os switches QFX10000 e QFX5200 também são compatíveis. Em QFX5200 switches, apenas o streaming gRPC é suportado.
A partir do Junos OS Release 17.3R1, a interface de telemetria Junos é suportada na placa e controle de roteamento (RCB) em roteadores PTX3000, switches QFX5110 e switches EX4600 e EX9200.
A partir do Junos OS Release 17.4R1, os roteadores MX2008 têm suporte.
Entendendo o formato de encapsulamento de dados do sensor
Um sensor nativo exporta dados próximos à fonte usando UDP. Vários tipos de dados de telemetria, como estatísticas de interface física, estatísticas de contadores de filtros de firewall ou estatísticas para caminhos comuados por rótulos (LSPs) podem ser exportadas. Um sensor começa a emitir dados assim que ele é habilitado.
Os dados do sensor são representados como uma única mensagem de buffer de protocolo estruturada, nomeada TelemetryStream
. A mensagem, ou .proto
arquivo, mostrado abaixo, inclui vários atributos que identificam a fonte de dados, como uma placa de linha, um mecanismo de encaminhamento de pacotes ou um mecanismo de roteamento. O nome do sensor configurado também está incluído. Para obter mais informações sobre como configurar sensores, veja Configuração de um sensor de interface de telemetria Junos (Procedimento CLI) Para uma lista de sensores nativos suportados, veja o sensor.
Você também deve baixar os .proto
arquivos para todos os sensores suportados em um servidor ou coletor de streaming. De um navegador web, navegue até o software All Junos Platforms baixe URL na página da Juniper Networks: https://www.juniper.net/support/downloads/. Depois de selecionar o nome da plataforma Junos OS e o número de lançamento, acesse a seção Ferramentas e baixe o pacote de Arquivos de modelo de dados da interface de telemetria Junos . Para obter mais informações sobre a configuração de um servidor de streaming, consulte streaming-server (Junos Telemetry Interface).
Definição de mensagem de buffer de protocolo
A seguir está a definição da mensagem na TelemetryStream
linguagem de definição de buffers de protocolo. Ele mostra várias estruturas aninhadas opcionais, como EnterpriseSensors
, que transportam dados de sensores definidos privadamente.
// // This file defines the top level message used for all Juniper // Telemetry packets encoded to the protocol buffer format. // The top level message is TelemetryStream. // import "google/protobuf/descriptor.proto"; extend google.protobuf.FieldOptions { optional TelemetryFieldOptions telemetry_options = 1024; } message TelemetryFieldOptions { optional bool is_key = 1; optional bool is_timestamp = 2; optional bool is_counter = 3; optional bool is_gauge = 4; } message TelemetryStream { // router name or export IP address required string system_id = 1 [(telemetry_options).is_key = true]; // line card / RE (slot number) optional uint32 component_id = 2 [(telemetry_options).is_key = true]; // PFE (if applicable) optional uint32 sub_component_id = 3 [(telemetry_options).is_key = true]; // configured sensor name optional string sensor_name = 4 [(telemetry_options).is_key = true]; // sequence number, monotonically increasesing for each // system_id, component_id, sub_component_id + sensor_name. optional uint32 sequence_number = 5; // timestamp (milliseconds since 00:00:00 UTC 1/1/1970) optional uint64 timestamp = 6 [(telemetry_options).is_timestamp = true]; // major version optional uint32 version_major = 7; // minor version optional uint32 version_minor = 8; optional IETFSensors ietf = 100; optional EnterpriseSensors enterprise = 101; } message IETFSensors { extensions 1 to max; } message EnterpriseSensors { extensions 1 to max; } extend EnterpriseSensors { // re-use IANA assigned numbers optional JuniperNetworksSensors juniperNetworks = 2636; } message JuniperNetworksSensors { extensions 1 to max; }
A TelemetryStream
mensagem também inclui estruturas aninhadas opcionais que transportam diferentes tipos de dados. Uma única estrutura transporta dados empresariais, ou seja, definidos privadamente. Empresas individuais, como a Juniper Networks, definem e mantêm os atributos gerados por sensores empresariais. Cada empresa recebe um identificador de atributo único. A convenção atual é usar identificadores MIB empresariais atribuídos por IANA para cada atributo. Para a Juniper Networks, este identificador designado é o 2636.
Para verificar se um tipo de mensagem em particular foi exportado e recebido, verifique se esses atributos estão na TelemetryStream.enterprise.juniperNetworks
mensagem gpb.
Veja a Tabela 1 para obter descrições de cada elemento coletado por dados do sensor, incluindo semântica e esquema correspondente.
Tipo de elemento |
Descrição |
---|---|
Counter |
Um inteiro não assinado que aumenta monotonicamente. Quando atinge seu valor máximo, ele começa em zero. |
Calibre |
Um inteiro não assinado de 32 bits ou 64 bits que pode aumentar ou diminuir o valor. Um exemplo dos dados representados por esse elemento é o valor instantâneo de um recurso específico, como a profundidade ou a temperatura da fila. |
Taxa |
Taxa em que uma métrica base muda, como um contador ou um medidor. Para esse tipo de elemento, as unidades de medição são definidas explicitamente (como bits por segundo), bem como o intervalo sobre o qual a taxa é coletada. |
Média |
A média de várias amostras de uma métrica base. Por exemplo, um elemento médio de dados de profundidade de fila seria calculado com uma média de vários elementos da profundidade da fila. Para este tipo de elemento, recomendamos fortemente definir o número de medições usadas para calcular a média, bem como o intervalo de tempo entre as medições. Caso contrário, você deve definir explicitamente os meios pelos quais esse valor médio é calculado. |
Pico |
Valor máximo entre várias amostras de uma métrica base. Por exemplo, um elemento de profundidade de fila de pico seria calculado comparando várias medições da profundidade da fila e selecionando o máximo. Para este tipo de elemento de dados, recomendamos fortemente que você defina o número de medições usadas para calcular o valor máximo, bem como o intervalo de tempo entre as medições. Caso contrário, defina explicitamente como esse valor máximo é definido. Você também deve saber se esse valor nunca é liberado e, portanto, representa o valor máximo geral ao longo de todos os tempos. |
Cada tipo de elemento de dados também inclui subconjuntos de elementos. Por exemplo, os elementos Counter
de dados e Gauge
incluiriam subconjuntos para rate
, average
e peak
medições.
Tabela de histórico de mudanças
O suporte de recursos é determinado pela plataforma e versão que você está usando. Use o Feature Explorer para determinar se um recurso é suportado em sua plataforma.