📅 Ebook GRATUITO 🚀 Como preparar o seu site para receber muitos acessos? 💰

Kinghost | Blog

Monitorando Aplicações PHP com Prometheus

Publicado em 16/01/2017

Atualizado em 21/09/2023

Essa semana nosso time de desenvolvimento teve o desafio de buscar ferramentas para monitorar aplicações web, tendo uma visão completa tanto do host quanto dos containers. Além disso, centralizar a visualização de alguns dados da aplicação.

Depois de algumas pesquisas, encontrei esse repositório que me chamou bastante atenção: https://github.com/stefanprodan/dockprom. Trata-se de um conjunto de serviços para monitoramento e alerta!

Tudo que precisávamos!

Serviços Utilizados

Prometheus?—?Repositório e Métricas
Grafana?—?Visualização
AlertManager?—?Gerenciador de Alertas
NodeExporter?—?Coleta de dados do Host
cAdvisor?—?Coleta de dados dos Containers

Em poucos minutos, é possível visualizar os dados do seu host como estes abaixo. Lembrando que o projeto já inclui alguns dashboards bem completos, basta importá-los ao Grafana.

prometeus

Centralização de Informação

A melhor parte é que não ficamos presos a um único host, podendo distribuir os containers e ainda centralizar a visualização dos dados.

O Prometheus é o encarregado dessa mágica. Com ele é possível configurar Scrapers que ficarão observando a sua aplicação e coletando as métricas automaticamente.

scrape_configs:
  - job_name:       'example-random'

    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:8080', 'localhost:8081']
        labels:
          group: 'production'

      - targets: ['localhost:8082']
        labels:
          group: 'canary'

Enviando dados da Aplicação

Para que o Prometheus consiga capturar corretamente os dados da sua aplicação é necessário que a saída seja formatada de uma maneira específica, e para isso temos diversos clients. No nosso caso, vou mostrar um pouco do Client PHP

Abaixo, nós adicionamos algumas métricas sobre a aplicação.

$registry = \Prometheus\CollectorRegistry::getDefault();

$counter = $registry->getOrRegisterCounter('test', 'some_counter', 'it increases', ['type']);
$counter->incBy(3, ['blue']);

$gauge = $registry->getOrRegisterGauge('test', 'some_gauge', 'it sets', ['type']);
$gauge->set(2.5, ['blue']);

$histogram = $registry->getOrRegisterHistogram('test', 'some_histogram', 'it observes', ['type'], [0.1, 1, 2, 3.5, 4, 5, 6, 7, 8, 9]);
$histogram->observe(3.5, ['blue']);

E logo após, expomos esses dados para a coleta do Scraper

$registry = \Prometheus\CollectorRegistry::getDefault();
$registry = CollectorRegistry::getDefault();

$renderer = new RenderTextFormat();
$result = $renderer->render($registry->getMetricFamilySamples());

header('Content-type: ' . RenderTextFormat::MIME_TYPE);
echo $result;

Exporters

Para finalizar, podemos adicionar exporters para quase todos os tipos de serviços que utilizamos, desde dados de deploy do Jenkins, como dados de filas do RabbitMQ.

Basta conferir essa lista de exporters para entender as infinitas possibilidades de monitoramento dessa ferramenta.

Nós, da Kinghost, ficamos bem empolgados com esse potencial, e espero que seja útil para outros Devs também.

O AlertManager merece um capitulo só para ele, abordando configurações de saída e querys de alertas, então, aguardem o próximo artigo!

O que você achou deste conteúdo?

O que você achou deste conteúdo?

Daniel

Daniel Archer

Focado em performance e boas práticas de programação, certificado ZEND ZCPE 5.5.

Daniel

Daniel Archer

Focado em performance e boas práticas de programação, certificado ZEND ZCPE 5.5.

Compartilhe esse conteúdo com alguém que possa gostar também

Conteúdos relacionados

Se você trabalha diariamente na internet, com certeza em algum momento se preocupou com a segurança das suas informações. Afinal, diversos dados pessoais e bancários são acessados todos os dias. Nesse contexto, cada dia mais existe a necessidade de reforçar a segurança dos seus dados e se proteger de possíveis golpes no mundo online. Por...
Você já ouviu falar de chatbot? Provavelmente a resposta é sim. Isso porque, essa tecnologia tem ganhado cada vez mais espaço na comunicação digital. Afinal, com a evolução tecnológica e as inúmeras ferramentas que prometem facilitar nossa rotina, os chatbots garantem destaque em diversos setores, desde atendimento ao cliente até vendas e marketing. Neste artigo,...
Você certamente já passou pela frustração de abrir um site que demora uma eternidade para carregar. Então, sabe como isso é irritante, não é mesmo? Com isso, sabe que a velocidade do site desempenha um papel fundamental na experiência dos usuários e no sucesso do seu negócio online.  Neste artigo, você vai conhecer as melhores...
Aprender a programar nunca foi tão fácil! Visto que, hoje em dia, existem diversos recursos gratuitos na web que podem te ajudar nessa jornada.  Então, se você é um completo novato no assunto, não se preocupe, esses recursos são perfeitos para você.  Mas não pense que eles são exclusivos para iniciantes, pois mesmo quem já...

Assine a nossa newsletter e receba conteúdos para apoiar o crescimento do seu negócio

Sem Título(obrigatório)

📅 Aulão GRATUITO 🚀 Como VENDER MAIS na internet 💰

Mensagens para você