Back-End

1 mar, 2019

Prometheus e Docker

Publicidade

Fala, pessoal!

Hoje entraremos em uma série de artigos referentes à métricas. Para quem está ligado no mundo da tecnologia, vem se falando há bastante tempo sobre SRE (e-book da Google).

Um dos principais temas falados pelo pessoal da Google é sobre questões de métricas, pois são as métricas que nos fornecem uma visão geral referente à como está o nosso ambiente, e nos proporciona uma capacidade cada vez maior para que nossas equipes sejam orientadas a dados: Data-driven.

Prometheus

Prometheus é um kit de ferramentas de monitoramento e alertas open source, que foi criada pela SoundCloud. Muitas empresas estão adotando o Prometheus para trabalhar com a questão de métricas de seus sistemas e aplicações.

Em 2016 o Prometheus foi incorporado dentro da Cloud Native Computing Foundation, sendo o segundo projeto hospedado depois do Kubernetes.

Iniciando

Vamos monitorar o nosso servidor de Docker com o Prometheus. Para isso, editaremos o arquivo daemon.json, que já é criado por padrão em:

  • Linux /etc/docker/daemon.json
  • Windows C:\ProgramData\docker\config\daemon.json

Dentro desse arquivo vamos adicionar as seguintes linhas:

{
    "metrics-addr" : "127.0.0.1:9000"
    "experimental" : true
}

Após a criação desse arquivo ou edição dele, vamos precisar criar o arquivo de configuração do nosso Prometheus – para isso criaremos o arquivo config.yml.

global:
    scrape_interval: 15s
    evaluation_interval: 15s

  external_labels:
    monitor: 'codelab-monitor'

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'docker'
         # metrics_path defaults to '/metrics'
         # scheme defaults to 'http'.

    static_configs:
      - targets: ['localhost:9323']

Com o conf criado vamos criar o serviço para começar a armazenar as métricas. Para isso, vamos executar:

docker service create --replicas 1 --name my-prometheus \
    --mount type=bind,source=/tmp/prometheus.yml,destination=/etc/prometheus/prometheus.yml \
    --publish published=9090,target=9090,protocol=tcp \
    prom/prometheus
  • –replicas=1 #: quantos containers de prometheus vamos ter
  • –mount # type =: tipo de mapeamento que faremos
  • source=: caminho de origem para o arquivo de configuração
  • destination=: caminho de destino no container
  • –publish # publish =: porta que será exposta para o mundo
  • target=: porta que configuramos no config do prometheus
  • protocol=: protocolo utilizado
  • prom/promtheus #: imagem utilizada

Feito isso, basta abrir o seu browser e navegar até http://iphost:9090 e você terá acesso ao seu prometheus. Você pode ir até http://iphost:9000/targets/, onde você poderá ver as informações que configuramos e verificar se está tudo ok com as coletas de nossas métricas.

Como podemos perceber, é meio complexo conseguirmos ver as informações referentes ao nosso ambiente diretamente pelo Prometheus, então, para facilitar essa visão, utilizaremos o Grafana como Dashboard – já falamos dele em um outro artigo:

Para criar o container do Grafana vamos executar:

docker run -d --name=grafana -p 3000:3000 grafana/grafana

Passo 1 – Autenticação

Feito isso vamos acessar http://localhost:3000. Após o acesso será solicitado um username e password.

Por padrão, o inicial é admin e admin. Em seguida, será solicitado um novo password, então basta colocar o seu novo password.

Passo 2 – Criação do Data Source

Agora adicionaremos o nosso prometheus como Data Source para que seja possível realizar as consultas para preencher nossos gráficos. Para isso, vamos clicar no ícone e escolher a opção Data Source.

Agora vamos até Add Data Source, onde teremos alguns campos que são padrões e outros que devem aparecer conforme o tipo de Data Source que será escolhido. Neste caso vamos utilizar o Prometheus.

Dessa vez criaremos sem autenticação, então pode deixar as questões de AUTH em branco.

  • Marcar a opção: Skip TLS Verification (Insecure)

Feito isso é só clicar em Save & Test.

Passo 3 – Criação dos Dashboards

Vá até a opção de New Dashboard dentro do Grafana e escolha a opção de “Graph”.

Agora vamos editar o nosso Dashboard:

Agora a imaginação é sua, basta verificar no Prometheus quais dados você possui para poder fazer seus Dashboards.

Espero que esse artigo tenha sido útil para vocês, e gostaria que deixassem aqui embaixo algum comentário ou dúvida para que cada vez mais possamos melhorar nosso conteúdo e para que fique simples e útil para todos.

Por hoje era isso, pessoal. Um grande abraço e muito obrigado!