Métricas simples e uma maneira de economizar tempo ao procurar problemas na infraestrutura

Há pouco tempo, no data center em que alugamos servidores, outro mini-incidente aconteceu. Como resultado, não houve sérias conseqüências para o nosso serviço; de acordo com as métricas disponíveis, conseguimos entender o que estava acontecendo literalmente em um minuto. E então eu imaginei como teria que quebrar meu cérebro se apenas duas métricas simples estivessem ausentes. Sob o corte, uma pequena história em imagens.

Imagine que vimos uma anomalia na linha do tempo de resposta de um determinado serviço. Para simplificar, usamos o manipulador / ping, que não acessa o banco de dados ou os serviços vizinhos, mas simplesmente retorna '200 OK' (é necessário para balanceadores de carga e k8s para o serviço de verificação de integridade)


Qual é o primeiro pensamento? É isso mesmo, o serviço não possui recursos suficientes, provavelmente a CPU! Nós olhamos para o consumo do processador:


Sim, existem explosões semelhantes. A seguir, analisamos o consumo por serviços no servidor:



Vemos que o consumo de proca aumentou proporcionalmente para todos os serviços. Você não pode dizer mais nada explicitamente: pode ver se o perfil de carregamento mudou (já que todos os componentes estão conectados e um aumento nas solicitações de entrada pode realmente causar um aumento proporcional no consumo de recursos) ou entender o que aconteceu com os recursos do servidor.

Obviamente, tentei preservar a intriga da melhor maneira possível, mas no início do artigo você provavelmente já imaginou que o servidor simplesmente reduzia o número de ticks de CPU disponíveis. No dmesg, é algo como isto:

CPU3: Core temperature above threshold, cpu clock throttled (total events = 88981)


Grosso modo, reduzimos a frequência devido ao superaquecimento do processador. Nós olhamos para a temperatura:



agora está tudo claro. Como tivemos um comportamento semelhante imediatamente em 6 servidores, percebemos que o problema está no controlador de domínio, e não em tudo, mas apenas em algumas linhas de racks.

Mas voltando às métricas. Potencialmente, queremos saber se os servidores superaquecerão no futuro, mas esse não é um motivo para adicionar um gráfico das temperaturas do processador a todos os painéis e verificar isso sempre.

Geralmente, os gatilhos são usados ​​para rastrear algumas métricas para otimizar o processo. Mas qual limite devo escolher para um gatilho pela temperatura do processador?

É por causa da dificuldade de escolher um bom limiar para o gatilho, muitos engenheiros sonham com um detector de anomalias, que sem configurações se encontrará, não sei o que :)

O primeiro pensamento é definir a temperatura limite em que nosso serviço começou a ter problemas. E se você nunca teve superaquecimento? Claro que você pode olhar para minha agenda e decidir por si mesmo que 95 ° C é o que você precisa, mas vamos pensar um pouco mais.

O problema conosco não é por causa dos graus, mas porque a frequência diminuiu! Vamos acompanhar o número de tais eventos.
No linux, isso pode ser removido do sysfs:

/sys/devices/system/cpu/cpu*/thermal_throttle/package_throttle_count




Para ser sincero, nem exibimos essa métrica em nenhum lugar, só temos um acionador automático para todos os clientes que são acionados quando o limite "> 10 eventos / segundo" é atingido. De acordo com nossas estatísticas, praticamente não há falsos positivos nesse limite.

Sim, esse gatilho raramente funciona, mas quando isso acontece, torna a vida muito fácil!

Na okmeter.io, na maioria das vezes, estamos envolvidos no desenvolvimento de nosso banco de dados de gatilhos automáticos, o que facilita aos nossos clientes encontrarem problemas desconhecidos para eles.

Source: https://habr.com/ru/post/pt420663/


All Articles