Introdução aos SLIs e Prometheus
Os Indicadores de Nível de Serviço (SLIs) são métricas fundamentais que ajudam a medir a confiabilidade de um serviço. Neste tutorial, vamos explorar como implementar SLIs usando o Prometheus, uma ferramenta de monitoramento poderosa e amplamente utilizada no mundo do SRE.
O que são SLIs?
Os SLIs são métricas que quantificam a performance de um serviço em relação a um objetivo desejado. Por exemplo, a latência média de uma API ou a disponibilidade de um serviço. Esses indicadores são essenciais para a criação de SLOs (Objetivos de Nível de Serviço) e SLAs (Acordos de Nível de Serviço).
Por que usar Prometheus?
Prometheus é uma ferramenta de monitoramento e alerta que coleta e armazena métricas em um formato de séries temporais. Ele é especialmente útil para SREs devido à sua flexibilidade e capacidade de lidar com ambientes dinâmicos.
Instalando o Prometheus
Para começar a usar o Prometheus, você deve instalá-lo. Aqui está um exemplo de como fazer isso:
# Baixando e descompactando o Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
# Descompactando o arquivo
tar xvfz prometheus-2.30.3.linux-amd64.tar.gz
# Navegando até o diretório do Prometheus
dcd prometheus-2.30.3.linux-amd64
# Iniciando o Prometheus
./prometheus --config.file=prometheus.yml
O código acima baixa e inicia o Prometheus, utilizando o arquivo de configuração prometheus.yml
. Este arquivo é onde você definirá as métricas que deseja coletar.
Configurando o Prometheus
No arquivo prometheus.yml
, você deve definir os scrape targets, que são os endpoints que o Prometheus irá monitorar. Aqui está um exemplo básico:
scrape_configs:
- job_name: 'my_service'
static_configs:
- targets: ['localhost:8080']
Neste exemplo, o Prometheus irá coletar métricas do serviço que está rodando na porta 8080. É importante que o seu serviço exponha as métricas em um formato que o Prometheus consiga entender.
Expondo métricas no seu serviço
Para que o Prometheus possa coletar as métricas, seu serviço precisa expô-las. Se você estiver usando uma aplicação em Python, por exemplo, pode usar a biblioteca prometheus_client
:
from prometheus_client import start_http_server, Summary
# Cria um resumo para medir o tempo de execução
REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')
@REQUEST_TIME.time()
def process_request():
# Simula algum processamento
time.sleep(2)
if __name__ == '__main__':
start_http_server(8080)
while True:
process_request()
Esse código inicia um servidor HTTP que expõe métricas na porta 8080. A métrica request_processing_seconds
registra o tempo que cada requisição leva para ser processada.
Criando SLIs com Prometheus
Uma vez que você tenha o Prometheus configurado e coletando métricas, o próximo passo é definir seus SLIs. Por exemplo, se você deseja medir a latência de uma API, pode usar a seguinte consulta PromQL:
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
Essa consulta calcula a latência do 95º percentil das requisições HTTP nos últimos 5 minutos. É uma maneira eficaz de medir a performance do seu serviço sob carga.
Monitorando e alertando
Com os SLIs definidos, você pode configurar alertas para notificar a equipe quando os SLIs estiverem fora do esperado. Aqui está um exemplo de uma regra de alerta:
groups:
- name: example_alert
rules:
- alert: HighLatency
expr: histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) > 0.5
for: 5m
labels:
severity: critical
annotations:
summary: "A latência está alta!"
description: "A latência do serviço ultrapassou 500ms por mais de 5 minutos."
Essa regra alerta a equipe quando a latência média do serviço ultrapassa 500ms por mais de 5 minutos. Alertas como esse são essenciais para garantir a confiabilidade dos serviços.
Conclusão
Implementar SLIs com Prometheus é uma maneira eficaz de monitorar a performance e a confiabilidade dos seus serviços. Com as métricas corretas e uma configuração adequada, você pode garantir que sua equipe esteja sempre informada sobre o estado do sistema e pronta para agir em caso de problemas. Não se esqueça de revisar e ajustar seus SLIs regularmente para garantir que eles continuem relevantes e úteis para sua equipe.
Próximos passos
Depois de implementar seus SLIs, considere explorar:
- SLOs: Como definir e medir seus Objetivos de Nível de Serviço.
- SLAs: Acordos de Nível de Serviço e sua importância para os negócios.
- Automação: Como automatizar a resposta a incidentes com base em seus SLIs.
Com essa base, você estará bem preparado para garantir a confiabilidade e a performance dos seus serviços, utilizando o Prometheus como sua ferramenta de monitoramento principal.
Contribuições de Rafael Guimarães