Bem, há muito tempo não compartilho minha experiência como engenheiro de software trabalhando em uma equipe de observabilidade, mas adivinha quem está de volta?
É importante lembrar que, antes de pularmos para tópicos avançados, quero cobrir os fundamentos e garantir que engenheiros de qualquer nível possam consumir esse conteúdo. Hoje, vou falar de monitoring como um dos pilares de observabilidade.
O que é monitoring?
Monitoring fornece visibilidade detalhada de desempenho, disponibilidade, experiência do usuário e utilização de recursos, ajudando-nos a fornecer um desempenho de plataforma consistente com um baixo MTTR (Mean Time To Resolve).
Por que monitoring é crítico?
Quando uma plataforma apresenta problemas de desempenho ou não está disponível, a empresa que possui essa plataforma corre o risco de perder clientes. As ferramentas de monitoring fornecem insights de desempenho e disponibilidade em tempo real que permitem às equipes reagir rapidamente quando surge um problema.
Por que uma plataforma deve usar uma ferramenta de monitoring?
Uma ferramenta de monitoring pode oferecer algumas vantagens para uma organização, como:
Reduzir MTTR
Uma ferramenta de monitoring ajuda os engenheiros a entender como um dia normal se parece, usando métricas de desempenho para definir suas linhas de base, definir alertas adequados com base nessas métricas e identificar a causa raiz dos problemas de desempenho ou disponibilidade.
Aumento da receita
Uma ferramenta de monitoring ajudará as equipes de engenharia a identificar rapidamente um problema crítico de desempenho ou disponibilidade que frustra os clientes da plataforma. Clientes frustrados começam a encontrar outras plataformas para executar suas necessidades, o que impacta diretamente sua receita.
Reduzir custos
Uma ferramenta de monitoring ajuda uma organização a entender como é um dia normal, verificando quanta memória e CPU um aplicativo precisa e verificar se os recursos de uma máquina virtual forem superdimensionados.
A equipe de engenheiros pode ajustar a utilização de seus recursos, economizando dinheiro em infraestrutura com essas informações.
Estratégias de monitoramento
Existem dois tipos de estratégias de monitoramento disponíveis, monitoramento de caixa aberta, conhecido como monitoramento de caixa branca, e monitoramento de caixa fechada, conhecido como monitoramento de caixa preta.
Ambas as estratégias são importantes e fornecem visibilidade de plataforma diferente sobre desempenho e disponibilidade.
Monitoramento de caixa aberta
O monitoramento de caixa aberta oferece uma visão abrangente do serviço ou aplicativo. Para entender melhor isso, vamos usar o seguinte serviço em python como exemplo.
from flask import Flask
from prometheus_client import make_wsgi_app
from werkzeug.middleware.dispatcher import DispatcherMiddleware
app = Flask("apione")
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {
'/metrics': make_wsgi_app()
})
@app.route("/")
def monitoring_ready():
return "Hi there..."
app.run(host="0.0.0.0", port="3000")
Esse exemplo de serviço simples expõe o estilo de métricas do Prometheus no endpoint /metrics
. Instrumentar um serviço ou aplicativo usando o cliente Prometheus não é nada complexo, mas se você não estiver familiarizado com isso, recomendo que dê uma olhada na documentação oficial.
De agora em diante, quando invocarmos o endpoint de métricas, estamos obtendo a página de métricas do Prometheus que retorna um monte de métricas padrão com base em sua tech stack.
Dado que é um exemplo simples que retorna apenas as métricas padrão do Python, podemos começar a adicionar métricas personalizadas para esse aplicativo monitorando o serviço com precisão.
Monitoramento de caixa fechada
O monitoramento de caixa fechada, conhecido como monitoramento de caixa preta, é uma estratégia para monitorar serviços de fora usando sondas artificiais. Isso significa que não aproveitamos nenhuma informação interna do serviçóalém do resultado de uma probe artificial.
O que significa probes artificiais?
Os probes artificiais podem ser uma solicitação HTTP, soquete TCP ou execução de script para executar uma tarefa específica no serviço ou aplicativo.
Por que o monitoramento de caixa fechada é necessário?
O monitoramento de caixa fechada é fundamental para ajudar as organizações a implementar o monitoramento sintético e simular o comportamento do usuário periodicamente, e essa é uma estratégia que muitas empresas já utilizam.
Para obter mais informações sobre o monitoramento sintético e como o monitoramento de caixa fechada ajuda nessa implementação, verifique a documentação oficial do Grafana.
Conclusão
Como podemos ver, monitoring é crucial para qualquer organização, não importa seu tamanho. A organização responderá rapidamente a incidentes, escalará seus negócios e aumentará a felicidade do cliente usando estratégias de monitoramento de caixa aberta e caixa fechada. Implementações de monitoramento mais sofisticadas podem ajudar a organização a prever incidentes e abordar de forma proativa os problemas de desempenho e confiabilidade.
Como você pode imaginar, existem várias ferramentas de monitoramento disponíveis no mercado, tais como:
- Zabbix
- Nagios
- Prometheus
Sempre utilizaremos o Prometheus como exemplo nessas postagens, pois é uma tecnologia cloud-native que nos permite trabalhar com qualquer tipo de infrastructure.
Monitoring é um assunto amplo e profundo que abordaremos passo a passo nas próximas postagens. Eu espero que você tenha gostado. Fique à vontade para compartilhar seus comentários ou dúvidas.
Top comments (0)