Como instalar o banco de dados Prometheus

Como instalar o banco de dados Prometheus
prometheus logo image

Definição, uma tradução livre seria:

O Prometheus coleta e armazena suas métricas como dados de séries temporais, as informações das métricas são armazenadas com data/hora em que foram registradas, juntamente com pares chave-valor opcionais chamados rótulos.

Características principais:

  • um modelo de dados multidimensional com dados de séries temporais identificados pelo nome da métrica e pares chave/valor
  • PromQL, uma linguagem de consulta flexível para aproveitar essa dimensionalidade
  • nenhuma dependência de armazenamento distribuído; nós de servidor único são autônomos
  • a coleta de séries temporais ocorre por meio de um modelo pull por HTTP
  • o envio de séries temporais é feito por meio de um gateway intermediário
  • os targets são descobertos via descoberta de serviço ou configuração estática
    vários modos gráficos e painéis

Baixando e executando

Vamos aprender como instalar o banco de dados Prometheus. Para isto basta seguir a documentação da seção de downloads.

Vamos instalar em um sistema Linux Ubuntu, então escolha corretamente qual versão do binário baixar de acordo com o seu sistema operacional.

Após fazer o download basta acessar o diretório em que baixou e extrair o arquivo. (baixei um binário pre-compilado compactado extensão .tar.gz)

Então primeiro descompacte o arquivo e acesse o diretório em que o conteúdo do arquivo compactado foi extraído:

tar xvfz prometheus-*.tar.gz
cd prometheus-*

Ao acessar o diretório deve ver um binário com o nome prometheus.  É ele que devemos executar com o ./

Para executar:

./prometheus

Ao executar (se tudo ocorrer bem) deve ser algumas mensagens parecidas com isso em sua linha de comando:

ts=2023-05-16T14:47:19.877Z caller=main.go:531 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2023-05-16T14:47:19.877Z caller=main.go:575 level=info msg="Starting Prometheus Server" mode=server version="(version=2.44.0, branch=HEAD, revision=1ac5131f698ebc60f13fe2727f89b115a41f6558)"
ts=2023-05-16T14:47:19.877Z caller=main.go:580 level=info build_context="(go=go1.20.4, platform=linux/amd64, user=root@739e8181c5db, date=20230514-06:18:11, tags=netgo,builtinassets,stringlabels)"
ts=2023-05-16T14:47:19.877Z caller=main.go:581 level=info host_details="(Linux 5.15.0-71-generic #78-Ubuntu SMP Tue Apr 18 09:00:29 UTC 2023 x86_64 danizavtz-virtual-machine (none))"
ts=2023-05-16T14:47:19.877Z caller=main.go:582 level=info fd_limits="(soft=1048576, hard=1048576)"
ts=2023-05-16T14:47:19.877Z caller=main.go:583 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2023-05-16T14:47:19.878Z caller=web.go:562 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2023-05-16T14:47:19.879Z caller=main.go:1016 level=info msg="Starting TSDB ..."
ts=2023-05-16T14:47:19.886Z caller=tls_config.go:232 level=info component=web msg="Listening on" address=[::]:9090
ts=2023-05-16T14:47:19.886Z caller=tls_config.go:235 level=info component=web msg="TLS is disabled." http2=false address=[::]:9090
ts=2023-05-16T14:47:19.888Z caller=head.go:588 level=info component=tsdb msg="Replaying on-disk memory mappable chunks if any"
ts=2023-05-16T14:47:19.888Z caller=head.go:669 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=2.44µs
ts=2023-05-16T14:47:19.888Z caller=head.go:677 level=info component=tsdb msg="Replaying WAL, this may take a while"
ts=2023-05-16T14:47:19.888Z caller=head.go:748 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=0
ts=2023-05-16T14:47:19.888Z caller=head.go:785 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=44.237µs wal_replay_duration=284.589µs wbl_replay_duration=128ns total_replay_duration=374.907µs
ts=2023-05-16T14:47:19.889Z caller=main.go:1037 level=info fs_type=EXT4_SUPER_MAGIC
ts=2023-05-16T14:47:19.889Z caller=main.go:1040 level=info msg="TSDB started"
ts=2023-05-16T14:47:19.889Z caller=main.go:1220 level=info msg="Loading configuration file" filename=prometheus.yml
ts=2023-05-16T14:47:19.889Z caller=main.go:1257 level=info msg="Completed loading of configuration file" filename=prometheus.yml totalDuration=415.429µs db_storage=815ns remote_storage=1.625µs web_handler=195ns query_engine=638ns scrape=141.741µs scrape_sd=16.792µs notify=35.827µs notify_sd=4.835µs rules=1.282µs tracing=4.959µs
ts=2023-05-16T14:47:19.889Z caller=main.go:1001 level=info msg="Server is ready to receive web requests."
ts=2023-05-16T14:47:19.889Z caller=manager.go:995 level=info component="rule manager" msg="Starting rule manager..."

Pronto. Agora já possui uma instância do Prometheus em execução em sua máquina. O passo-a-passo descrito acima faz parte da documentação oficial.

Para confirmar que a ferramenta está em execução basta agora acessar a interface gráfica da ferramenta, para isto basta acessar um browser com a url: http://localhost:9090

Se verificar os logs acima, é possível ver algumas informações do endereço em que está executando e o tempo de retenção dos dados.

Deixo as informações em destaque abaixo:

level=info msg="No time or size retention was set so using the default time retention" duration=15d
component=web msg="Start listening for connections" address=0.0.0.0:9090

Repare que o endereço acima aparece 0.0.0.0:9090. Este comando indica para fazer o bind de todas as interfaces de rede disponíveis e porta 9090 àquele serviço.

Então ao acessar a porta o endereço http://localhost:9090, vamos acessar a interface web do Prometheus.

Agora que já possui a ferramenta em execução já pode iniciar a coletar as métricas de sua aplicação.