tutoriais

FrankenPHP parte 3 - Prometheus

No post anterior, vimos como subir uma aplicação usando o FrankenPHP com o Caddyfile habilitando as métricas. Nesse artigo, vamos evoluir um pouco mais e subir um container prometheus configurado para capturar as métricas do FrankenPHP.

#Adicionando o container do Prometheus

No nosso docker-compose.yaml vamos adicionar o service do Prometheus

  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./data/prometheus:/prometheus

E antes de subirmos tudo, vamos criar nosso arquivo de configuração do Prometheus em config/prometheus.yml:

global:
  scrape_interval: 15s # default is 1 minute

scrape_configs:
  - job_name: caddy
    static_configs:
      - targets: ['app:2019']

Usamos app:2019 pois, o localhost dentro do container do prometheus aponta para ele mesmo, e o app é o hostname dentro do docker, mesmo nome que colocamos no service no docker-compose.yaml

#Validando tudo

Ao abrir localhost:9090 devemos conseguir ver a tela inicial do prometheus, e para confirmar que deu certo, vamos ir na aba status e clicar na opção Target health e se tiver tudo ok, devemos ter algo parecido com a captura de tela abaixo:

#Feito!

Pronto, o Prometheus já está capturando as métricas num intervalo de 15 segundos. Antes de irmos para o Grafana você pode ir explorando o prometheus na aba query e buscando as métricas salvas pelo nome que aparece quando acessa o endpoint de métricas em localhost:2019/metrics.

Link do repo no GitHub aqui