Problema
Você tem dúvidas sobre vários resultados calculados pelo ktranslate
Monitoramento de rede agente.
Fundo
ktranslate
retorna os dados brutos coletados pela pesquisa SNMP em quase todas as instâncias com as seguintes ressalvas:
- % de utilização da CPU
- % de utilização de memória
- % de utilização da interface
- % de erro de interface
- Várias métricas com as funções
enum
ouconversion
aplicadas em sua configuração
Solução
Metric Name: kentik.snmp.CPU
A CPU geralmente é retornada em um OID direto que fornece um valor inteiro ou float representando a porcentagem de utilização. Em casos raros, há apenas um resultado para CPU ociosa, que é traduzido para CPU usando esta fórmula:
CPU = 100 - CPU Idle
Metric Name: kentik.snmp.MemoryUtilization
Ao contrário da CPU, a utilização da memória raramente é apresentada como um valor OID direto. Para calcular a porcentagem de utilização, o ktranslate usa esta lógica:
If Memory Used and Memory Free are available: Memory Utilization = ( Memory Used / (Memory Free + Memory Used) ) * 100
If Memory Total and Memory Free are available: Memory Utilization = ( (Memory Total - Memory Free) / Memory Total ) * 100
If Memory Total and Memory Used are available: Memory Utilization = ( Memory Used / Memory Total ) * 100
If Memory Total, Memory Buffer, and Memory Cache are available: Memory Utilization = ( ( Memory Total - (Memory Buffer + Memory Cache ) ) / Memory Total ) * 100
Metric Name: kentik.snmp.IfInUtilization
| kentik.snmp.IfOutUtilization
A utilização da interface segue a abordagem padrão da indústria de calcular o delta em bits e dividir pelo produto da velocidade configurada da interface e o delta de tempo desde que a última coleta foi feita.
Por exemplo, assumindo que 1 é o ponto de dados anterior e 2 é o mais recente:
((ifHCInOctets_2 - ifHCInOctets_1) * 8 * 100) / ((sysUptime_2 - sysUptime_1) * ifSpeed)
Cálculo traduzido
Para o numerador:
Pegue a última contagem de octetos e subtraia o valor da amostra anterior para obter um delta.
Multiplique o resultado por 8 para converter octetos em bits.
Multiplique os bits por 100 para configurar o cálculo da porcentagem.
Para o denominador:
Pegue o valor mais recente de
sysUptime
e subtraia o valor da amostra anterior para obter um delta que mostre o intervalo de sondagem.Multiplique o intervalo pelo
ifSpeed
configurado (que é relatado em bits).Finalmente:
Divida o numerador pelo denominador para encontrar a porcentagem de utilização.
Dados de origem
KTranslate usa o valor de ifHCInOctets (receber) ou ifHCOutOctets (transmitir); substituindo
ifSpeed
no denominador pelo valor de ifHighSpeed conforme necessário:Dica
Um motivo comum para ver porcentagens imprecisas de utilização da interface é que a velocidade da interface configurada no dispositivo não reflete a velocidade real da interface. Por exemplo, um circuito MPLS de 1GB em uma interface de 10GB apresentaria percentuais de apenas 10% da utilização real. Para resolver isso, consulte a documentação do seu fornecedor sobre como configurar a largura de banda da interface.
Metric Name: kentik.snmp.ifHCInOctets
| kentik.snmp.ifHCOutOctets
A interface taxas de transferência usa o valor de ifHCInOctets (receber) ou ifHCOutOctets (transmitir).
É importante observar exatamente o que você procura ao consultar taxas de transferência.
1 octeto = 1 byte
1 octeto = 8 bits
A medida bruta no SNMP é a contagem de octetos, que neste contexto seria sinônimo de bytes. Você pode calcular bytes facilmente diretamente por meio da métrica relatada, sem necessidade de qualquer conversão.
Se você estiver procurando bits por segundo (bps), precisará multiplicar os octetos e converter o número final em uma taxa “por segundo”.
Exemplo
FROM Metric SELECTmax(kentik.snmp.ifHCInOctets) AS 'total_received_bytes',max(kentik.snmp.ifHCOutOctets) AS 'total_sent_bytes',rate(average(kentik.snmp.ifHCInOctets)*8, 1 SECOND) AS 'average_received_bps',rate(average(kentik.snmp.ifHCOutOctets)*8, 1 SECOND) AS 'average_sent_bps'FACET entity.name, if_interface_nameSINCE 1 WEEK AGOTIMESERIES
Metric Name: kentik.snmp.ifInErrorPercent
| kentik.snmp.ifOutErrorPercent
A porcentagem de erro de interface usa o valor de ifInErrors (receber) ou ifOutErrors (transmitir), dividido por ifHCInUcastPkts (receber) ou ifHCOutUcastPkts (transmitir). Em ktranslate, a fórmula é semelhante a esta:
( ifInErrors / ifHCInUcastPkts ) * 100or( ifOutErrors / ifHCOutUcastPkts ) * 100
Metric Name: Vários
Outras métricas SNMP são convertidas com base na existência das funções enum
e conversion
em seus respectivos perfis SNMP.
Configuração de perfil | Uso |
---|---|
| Utilizado para sobrescrever o atributo |
| Usado para lidar com enumerações SNMP que convertem o valor inteiro de uma métrica dimensional no valor enumerado em um atributo decorado na métrica dimensional (usando o mesmo sufixo de nome de métrica). Um exemplo comum é a conversão de kentik.snmp.if_AdminStatus para o valor enumerado de if_AdminStatus como |
| Usado para converter valores hexadecimais em formato inteiro. Opções para current: |
| Usado para converter valores hexadecimais em strings IPv4 de 4 octetos. |
| Usado para converter valores hexadecimais em sequências de endereços MAC. |
| Usado para enumeração da string ASCII upsBasicStateOutputState no |
| Coloca uma correspondência de regex na saída do OID para capturar substrings; precisa ser colocado entre aspas e ter barras invertidas escapadas. |
| Usado para criar uma métrica de medidor com o valor |