Diretrizes para agregar dados da interface de telemetria Junos
Um recurso importante da interface de telemetria junos é que o processamento de dados ocorre no coletor que transmite dados, em vez do dispositivo. Os dados não são agregados automaticamente, mas podem ser agregados para análise.
A agregação de dados é útil nos seguintes cenários:
Dados para a mesma métrica em períodos fixos de tempo, como, o número médio de erros de entrada da interface física em um intervalo de 30 segundos.
Dados de diferentes fontes (como várias placas de linha) para a mesma métrica, como estatísticas de caminho comurado por rótulos (LSP) ou estatísticas de contador de filtros.
Dados de várias fontes, como estatísticas de entrada e saída para interfaces Ethernet agregadas.
As seções a seguir descrevem como realizar a agregação de dados para vários cenários. Os exemplos nessas seções usam o banco de dados da série de tempo InfluxDB para aceitar consultas em dados de telemetria. InfluxDB é um banco de dados de código aberto escrito em Go especificamente para lidar com dados da série temporal.
Agregação de dados em períodos de tempo fixo
Agregar dados para a mesma métrica em períodos fixos de tempo é uma maneira comum e útil de detectar tendências. As métricas podem incluir medidores, ou seja, valores únicos ou contadores cumulativos. Você também pode querer agregar dados continuamente.
- Exemplo: agregação de dados para métricas de medidor
- Exemplo: agregação de dados para estatísticas cumulativas
Exemplo: agregação de dados para métricas de medidor
Neste exemplo, os dados JuniperNetworksSensors.jnpr_interface_ext.interface_stats.egress_queue_info.current_buffer_occupancy
de cada um são escritos no banco de port.proto
dados do InfluxDB com tags que identificam o nome do host, um nome de interface e o número e medição da fila correspondentes chamados current_buffer_occupancy
. Veja a Tabela 1 para os valores específicos usados neste exemplo.
Carimbo de tempo (segundos) |
Valor |
Tags |
---|---|---|
1458704133 |
1547 |
queue_number=0,interface_name='xe-1/0/0',host='sjc-a' |
1458704143 |
3221 |
queue_number=0,interface_name='xe-1/0/0',host='sjc-a' |
1458704155 |
4860 |
queue_number=0,interface_name='xe-1/0/0',host='sjc-a' |
1458704166 |
6550 |
queue_number=0,interface_name='xe-1/0/0',host='sjc-a' |
Cada ponto de dados de medição tem um temporizador e valor registrado. Neste exemplo, a tag queue_number
é o identificador numérico da fila da interface.
Para agregar esses dados em intervalos de 30 segundos, use a seguinte consulta de FLUXODB:
select mean(value) from current_buffer_occupancy where time >= $time_start and time <= $time_end and queue_number=’0’ and interface_name=’xe-1/0/0’ and host=’sjc-a’ group by time(30s)
$time_end
E $time_start
especifique o intervalo real de tempo.
Exemplo: agregação de dados para estatísticas cumulativas
Alguns sensores de interface de telemetria Junos relatam valores cumulativos de contadores, como o número de pacotes de entrada, definidos como JuniperNetworksSensors.jnpr_interface_ext.interface_stats.ingress_stats.packets
.
É comum obter taxas de tráfego de contadores de pacotes ou byte. Ao contrário das métricas do medidor, o ponto de dados inicial da série para contadores cumulativos é usado apenas para definir a linha de base.
Use as seguintes diretrizes para criar uma consulta de banco de dados para estatísticas acumuladas:
-
Calcule o valor cumulativo para um intervalo de tempo específico. Você pode calcular uma média entre vários pontos de dados registrados durante o intervalo de tempo, ou você pode calcular um valor. Todos os pontos de dados devem pertencer à mesma série. Se ocorrer um contra-reset entre os dois pontos de dados relatados em momentos diferentes, não use ambos os pontos de dados.
-
Determine o valor apropriado para o intervalo de tempo anterior. Se um contador tiver sido redefinido desde a última atualização, declare esse valor como indisponível.
-
Se o intervalo anterior estiver disponível, calcule a diferença entre os pontos de dados e a taxa de tráfego.
Essas diretrizes são resumidas na seguinte consulta de FLUXODB. Essa consulta pressupõe que os dados estão armazenados na medição ingress_packets
. A consulta usa as mesmas tags que o exemplo métrica do medidor, bem como a tag para tempo de contra-inicialização, init_time
. A consulta usa valores médios em um intervalo de tempo de 30 segundos. Ele calcula a taxa para as métricas que têm a mesma contra-inicialização.
select non_negative_derivative(mean(value)) from ingress_packets where time >= $time_start and time <= $time_end and interface_name=’xe-1/0/0’ and host=’sjc-a’ group by time(30s), init_time
Use a consulta a seguir para calcular o número de pacotes recebidos em um intervalo de tempo, sem obter a taxa.
select difference(mean(value)) from ingress_packets where time >= $time_start and time <= $time_end and interface_name=’xe-1/0/0’ and host=’sjc-a’ group by time(30s), init_time
Em alguns casos, mais de um ponto de dados agregado é devolvido pela consulta para um determinado intervalo de tempo. Por exemplo, quatro pontos de dados estão disponíveis por um intervalo de tempo. Dois pontos de dados têm init_time t0
, e os outros dois têm init_time t1
. Você pode executar uma consulta que usa a tag de data e hora da última alteração, last_change
em vez de init_time
, para calcular a diferença e obter a taxa entre os dois pontos de dados com o mesmo tempo de alteração anterior.
select difference(mean(value)) from ingress_packets where time >= $time_start and time <= $time_end and interface_name=’xe-1/0/0’ and host=’sjc-a’ group by time(30s), last_change
Todas essas consultas podem ser executadas como consultas contínuas e podem preencher periodicamente novas medições da série temporal.
Agregação de dados de várias fontes
Determinadas métricas são relatadas a partir de várias placas de linha ou mecanismos de encaminhamento de pacotes. É útil agregar dados derivados de diferentes fontes nos seguintes cenários:
-
As contagens de pacotes e byte para caminhos comuados por rótulos (LSPs) são relatadas separadamente por cada placa de linha. No entanto, uma visão dos caminhos LSP para todo o dispositivo é necessária para controladores de elementos de computação de caminho.
-
Para dispositivos da Juniper Networks que oferecem suporte a filas de saída virtuais, as estatísticas de queda na cauda ou quedas aleatórias de detecção antecipada para cada fila são relatadas separadamente por cada placa de linha para cada interface física. É útil poder agregar as estatísticas para todas as placas de linha para uma interface.
-
Contadores de filtro para um filtro de firewall conectado a uma tabela de encaminhamento ou a uma interface Ethernet agregada são relatados separadamente por cada placa de linha. É útil agregar as estatísticas para todas as placas de linha.
Para agregar dados de várias fontes, execute o seguinte:
Agregar dados por um período de tempo específico para cada fonte, por exemplo, cada placa de linha.
Agregar os dados que você obtive para cada fonte na etapa 1.
Para dados armazenados em um banco de dados do InfluxDB, você pode concluir a etapa 1 do procedimento executando uma consulta contínua e preenchendo uma nova medição. Recomendamos fortemente que você agrupa os pontos de dados de acordo com cada fonte. Por exemplo, para estatísticas de LSP, a component_id
mensagem do gpb identifica a placa de linha que envia os dados. Agrupar os pontos de dados com base em cada único component_id
.
Exemplo: agregar dados de várias fontes
Neste exemplo, você executa duas consultas para obter a taxa de pacoteSP para dados de todas as placas de linha.
Primeiro, você executa a seguinte consulta contínua na medição nomeada lsp_packet_count
para cada component_id
tag e a counter_name
tag. Cada tag única component_id
corresponde a uma placa de linha diferente. Essa consulta preenche uma nova medição, lsp_packet_rate.
select non_negative_derivative(mean(value)) as value from lsp_packet_count into lsp_packet_rate group by time(30s), component_id, counter_name, host
O sensor de estatísticas LSP não informa o tempo de inicialização de contador.
Use a nova medição derivada dessa consulta contínua —lsp_packet_count
para executar a seguinte consulta, que agrega dados de todas as placas de linha para taxas de pacote para um LSP chamado lsp-sjc-den-1
.
select sum(value) from lsp_packet_rate where counter_name=’lsp-sjc-den-1’, host=’sjc-a’
Como essa consulta não agrupa dados de acordo com a component_id
tag ou placa de linha, as taxas de pacote LSP de todos os componentes, ou placas de linha, são devolvidas.
Agregação de dados para várias métricas
Pode ser útil agregar métricas para vários valores. Por exemplo, para interfaces Ethernet agregadas, você normalmente gostaria de rastrear taxas de pacotes e byte para cada membro da interface, bem como a utilização de interface para o link agregado.
Exemplo: agregar vários valores métricas
Neste exemplo, você executa as seguintes duas consultas:
-
Consulta contínua para obter contagens de pacotes de entrada para cada link de membro em uma interface Ethernet agregada
-
Consulta para agregar dados de contagem de pacotes para todos os links de membros que pertencem à mesma interface Ethernet agregada
A consulta contínua a seguir deriva uma medição, ingress_packets
para cada link de membro em uma interface Ethernet agregada. A interface_name
tag identifica a interface de cada membro. Você também usa a parent-ae-name
tag para identificar a associação em uma interface Ethernet agregada específica. Agrupar cada link de membro com a tag garante que os parent-ae-name
dados sejam coletados apenas para links de membros atuais. Por exemplo, uma interface pode mudar sua associação durante o intervalo de relatórios. Agrupar interfaces de membros com a interface Ethernet agregada específica significa que os dados do link de membro não serão transferidos para a nova interface Ethernet agregada da qual agora é um membro.
select difference(mean(value)) as value from ingress_packets into ingress_packets_difference group by time(30s), component_id, interface_name, host, parent-ae-name
A consulta a seguir agrega dados para os pacotes de entrada para a interface Ethernet agregada, que são todos links de membros.
select sum(value) from ingress_packets_difference where parent-ae-name=’ae0’ and host=’sjc-a’
Essa consulta agrega dados para uma interface ae0
Ethernet agregada. A parent-ae-name
tag não verifica os links reais dos membros.