Problema
Você ktranslate contêineres atingiu 100% de utilização da CPU ou, em geral, está acima do esperado.
Dica
Um detalhe que devemos ter cuidado é que para o ktranslate é importante focar na porcentagem máxima de CPU em vez da média. O KTranslate usa uma alta porcentagem de CPU perto do início de um ciclo de pesquisa e muito menos no final do ciclo. Ao analisar o uso médio, você pode ver 60% e não perceber que o ktranslate está gastando quase 100% do tempo, o que é um problema em potencial. Você precisa alocar recursos suficientes para que o consumo máximo da CPU não atinja 100%.
Solução
As causas do uso da CPU variam dependendo do tipo de contêiner ktranslate com o qual você está trabalhando.
SNMP
O contêiner SNMP vê principalmente aumentos no uso da CPU devido ao número de pontos de dados que precisamos coletar dos dispositivos de destino e à quantidade de tempo gasto tentando coletar cada ponto de dados.
Dispositivos com alta latência, ao responderem a solicitações SNMP, exigem efetivamente mais recursos. Ter um timeout
mais longo ou mais retries
aumenta a probabilidade de você obter os dados desses dispositivos lentos para evitar lacunas nos gráficos, mas também aumenta a quantidade necessária de recursos que você precisa fornecer para seu contêiner. Também é possível ter um grande número de eventos de trap SNMP chegando, como uma estimativa geral, você deve ser capaz de ingerir aproximadamente 1.000 eventos por segundo para cada CPU.
Com alto uso, suas opções são estas:
- Adicione mais CPUs ao host para lidar com a workload existente.
- Aumente o intervalo de sondagem tendo um número maior nas
poll_time_sec
configurações globais ou específicas do dispositivo. - Reduza o número de dispositivos pesquisados removendo-os da seção de dispositivos do yaml de configuração do ktranslate e certificando-se de que eles não sejam incluídos em uma redescoberta automática.
- Exclua MIBs desnecessários da lista global
mibs_enabled
(menos típico). - Possivelmente reduza o volume de traps SNMP de menor valor/ruidosos, alterando a configuração nos dispositivos de rede para não enviá-los.
Fluxo
Os contêineres de fluxo veem principalmente aumentos no uso da CPU devido ao número de eventos de fluxo de entrada. Como estimativa geral, você deve conseguir ingerir cerca de 2.000 fluxos por segundo para cada CPU, mas as cargas variam ligeiramente para os diferentes protocolos de fluxo.
Com alto uso, suas opções são estas:
- Adicione mais CPUs ao host para lidar com a workload existente.
- Reduza o volume de fluxos de entrada alterando as configurações no dispositivo de rede, como coletar fluxo apenas em interfaces críticas ou usar fluxos amostrados, se possível.
Registro de sistema
O contêiner de syslog vê principalmente aumentos no uso da CPU devido ao número de eventos de syslog de entrada. Como estimativa geral, você deve ser capaz de ingerir cerca de 2.000 mensagens por segundo.
Com alto uso, suas opções são estas:
- Adicione mais CPUs ao host para lidar com a workload existente.
- Reduza o volume de eventos syslog de menor valor/ruidosos alterando a configuração nos dispositivos de rede para não enviar certos tipos de mensagens ou gravidades. Consulte a documentação do fornecedor do seu dispositivo para saber como fazer essas alterações.