Monitorando aplicações PHP com Prometheus — parte 2


Configurando e entendendo o AlertManager

No primeiro artigo explorei um pouco do projeto opensource dockprom, com ele é possível monitorar a sua aplicação em tempo real utilizando tecnologias, como Prometheus e Grafana, e também enviar alertar caso alguma coisa saia do controle. Aqui na Kinghost começamos a utiliza-lo para monitorar sistema que já estão rodando em containers (Docker). Falei um pouco sobre a configuração e monitorias, pois bem, agora gostaria de me aprofundar um pouco mais na parte de Alertas. Um tema super importante, afinal de contas, não adianta monitorar a aplicação se ela não me avisar quando algo estiver errado.

Arquivos de Configuração

Nesse repositório do github, os arquivos que você deve alterar estão na pasta prometheus. Abaixo um trecho do arquivo prometheus.yml.

 

Importante reparar as 3 últimas linhas citadas, ali estamos fazendo referência aos demais arquivos para melhor organização das regras.

Todos os targets configurados nos scrappers terão uma métrica chamada “up” populada automaticamente, sendo assim podemos criar nosso primeiro alerta:

Abaixo o arquivo targets.rules

Esse arquivo indica que: se a condição for verdadeira durante 30 segundos, devo disparar o alerta.

Isso pode ser feito para qualquer condição, inclusive em qualquer consulta, as mesmas que você possui no Grafana para visualizar os dados da aplicação.
Exemplo (mais elaborado):

A condição acima verifica se a porcentagem de disco utilizado ultrapassa os 85%, então envia um alerta. Como podemos ver, as possibilidades são infinitas.

Envio de Mensagens

Os arquivos configuração dos alertas são propriedade do prometheus, porém a saída é configurada no AlertManager. Você encontrará o seguinte arquivo em alertmanager/config.yml.

 

O arquivo acima diz que todas os alertas serão enviados via Slack para o grupo responsável. Mas podemos adicionar várias funcionalidades legais, por exemplo:

Agora sim, todos os alertas serão encaminhados por email, e se acontecer algo crítico, pode ser enviado para a equipe imediatamente via Slack!

 

Importante!
Para melhor utilização dos alertas: encontramos uma dificuldade em relação a periodicidade das verificações, mas adicionando essa linha no alertmanager a velocidade dos alertas ficou excelente, exatamente como nosso time precisava:

 

Desse modo todos os alertas serão enviados a cada 10 segundos (o padrão é de 5 minutos).

Alertas pelo Grafana

A partir do Grafana 4.0, temos a possibilidade de alertas direto na ferramenta, sendo possível controlar os alertas da aplicação através da interface gráfica. Mas atenção, todos os alertas e configurações de envio não são as mesmas! São configurações exclusivas do Grafana.

aplicações php

Abaixo uma amostra da configuração na interface do Grafana.

Para maiores informações sobre a versão 4.x do Grafana basta acessar o link: http://docs.grafana.org/guides/whats-new-in-v4-1//

Conclusão

A configuração de alertas é um pouco confusa, pois é necessário configurar diversos arquivos para que todos os critérios sejam atendidos, mas em uma tarde dá pra entender legal a ferramenta. A adoção dessa solução foi tão boa entre as equipes de desenvolvimento da Kinghost que cada grupo já está fazendo suas próprias contribuições. Espero que assim como foi pra nós, que você também possa se surpreender e melhorar cada vez mais o seu processo de desenvolvimento. Muito obrigado e caso tenha testado ou tenha alguma opinião sobre o assunto, pode comentar abaixo!

Webinar - Refatoração em PHP

Daniel Archer

Daniel Archer

Desenvolvedor PHP em KingHost
Focado em performance e boas práticas de programação, certificado ZEND ZCPE 5.5.
Daniel Archer

Últimos posts por Daniel Archer (exibir todos)

Comentários

comentário(s)