Aprenda a automatizar alarmes de produtos

Paulo Farias
mobicareofficial
Published in
4 min readApr 5, 2021

Para um melhor entendimento da saúde do seu produto, é importante que você acompanhe de perto seu comportamento. Quando um projeto for ao ar, utilize os primeiros dias/semanas para acompanhar seu desempenho. Procure entender seus horários de picos, curvas de acesso e requisições mais frequentes.

Com essa massa de dados em mãos, comece a estabelecer métricas e médias de uso. Nem sempre a primeira medida imposta estará correta, procure rever se realmente faz sentido. Isso normalmente se compreende com o tempo. Conhecer o seu produto é o que torna ele, de fato, um produto. Com essas métricas bem definidas, você terá todas as variáveis para “produtizar” o seu monitoramento também.

Digamos que você desenvolveu uma plataforma em que seu cliente fornece acesso a outros clientes (B2B2C) e a cada dia o seu cliente cria novos contratos na sua plataforma. Ao invés de criar novas métricas manualmente a cada nova inclusão e correr o risco de perder esse costume com o tempo ou não ver os novos contratos adicionados, utilize seu conhecimento do produto para que toda vez que o seu cliente adicionar um novo usuário, seu monitoramento faça isso automaticamente.

Nesse artigo vamos utilizar um exemplo aplicado através da opção “Descoberta” do Zabbix. O primeiro passo é definir o que torna seu produto bom ou ruim. Nesse caso, utilizamos um portal para login, onde:

  • Se Contrato logar com sucesso = bom
  • Se Contrato não logar por falha de sistema = ruim.

Simples assim!

Primeiro ponto: definir a variável contrato. Quando nosso cliente clica para listar todos os contratos na plataforma, o frontend está chamando uma API.
Peguei a chamada que o frontend utiliza e configurei para me trazer os valores através de um script. Gerei uma chave no Zabbix (discoverycontractv2) e associei a esse script, chamando essa chave na mão, temos esse retorno:

# zabbix_agentd -t discoverycontractv2 [t|{“data”: [{“{#CONTRACT_NAME}”: “Teste1”}, {“{#CONTRACT_NAME}”: “Teste2”}, {“{#CONTRACT_NAME}”: “Teste3”}]}]

Veja que configurei o script para me trazer em um formato Variável-Valor. Dessa forma, o Zabbix trouxe todos os contratos associados a nossa plataforma. Peguei a chave gerada, adicionei a interface do Zabbix e, com isso, geramos a variável de contrato (#CONTRACT_NAME).

Agora precisamos saber se os clientes desses contratos estão logando com sucesso ou falha. Esses logins de sucesso e de falha são enviados para um serviço de logs.

Para ter o histórico separado, eu crio 2 protótipos de itens, ou seja, crio mais 2 scripts que vão até o meu servidor/serviço de logs e fazem uma contagem de cada status utilizando a variável criada acima. Assim como no exemplo da descoberta, associo uma chave a cada script e adiciono ao Zabbix esses dois protótipos de itens:

  • Status de sucesso do contrato
  • Status de falha do contrato

Veja que eu chamo a chave associada ao script passando junto a variável de contrato, ou seja, para cada novo contrato que o Zabbix descobrir, ele fará uma nova chamada e criará um item para salvar os valores de cada contrato.

Por último e não menos importante, devemos gerar uma trigger baseada nesses dois retornos.

Nesse caso para simplificar a explicação criei a expressão:
Se falha for maior que sucesso deverá alarmar.

{zabbix-server:networkaccessnook[{#CONTRACT_NAME}].last()}>{zabbix-server:networkaccessok[{#CONTRACT_NAME}].last()}

Veja que no protótipo de Trigger também utilizo a variável de contrato.

Mas, como explicado no começo, conheça seu produto, tenha claro em mente qual o percentual de falha aceitável(se houver algum), aplique padrões que correspondam ao uso do seu produto e, com isso. você estará sempre por dentro do que está acontecendo.

Oi, pessoal! Sou o Paulo Farias, Coordenador de Operações nas empresas Mobicare e Akross com foco em ambientes de produção e plataformas críticas de alta performance.

A Mobicare e a Akross combinam os Melhores Talentos, Tecnologias de Ponta, Práticas Agile e DevOps com Capacidades Operacionais avançadas para ajudar Operadoras Telecom e grandes empresas a gerarem novas receitas e a melhorarem a experiência dos seus próprios clientes.

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito!

Faça parte do nosso time. 😉

--

--