Coleta, armazenamento e visualização de
métricas em uma arquitetura de
microserviços na cloud
Rafael Souza
@rafael_psouza
○ Engenheiro de Computação
○ Engenheiro de Software
○ Arquitetura de Software, SOA, Microservices, APIs…
○ Contexto do Projeto
○ Problema
○ Overview
○ Instrumentação
○ Coleta
○ Armazenamento
○ Visualização e Alertas
Agenda
Contexto do Projeto
Tecnologias
Times por Serviço/Plataforma
Stability and Performance
Engineering
○ Testes de Performance
○ Engenharia de Caos
○ Performance tuning/troubleshooting
○ Definir/Manter componentes de telemetria
O Problema
Debug
Como definir a causa raiz dos problemas?
○ Como está a saúde dos serviços/componentes?
○ Quais são as características de performance
○ Validar suposições e torná-las explícitas
Visibilidade de saúde e
performance
Confiabilidade e eficiência
○ Até onde o sistema é confiável?
○ Existe um bom uso de recursos computacionais?
Os nossos problemas
○ Responsabilidade “sem dono”
○ Monitoramento ineficiente (não confiável)
○ Pouca visibilidade dos serviços
○ Pouca visibilidade dos componentes de infra
○ Criar confidence score (Canary Release)
Observability / Telemetry
Exposição e Coleta
Visualização e
Query
Armazenamento
TracingAlertas Logs
Componentes comuns
Instrumentação
○ Tornar métricas visíveis
○ O que expor
○ Como expor
○ Gauges and Counters
Servo
Outras opções no mundo Java
○ Dropwizard metrics
○ Spring Boot Actuator
Infraestrutura e SO
○ Push x Coleta
○ Collectd
○ Sensu checks
Coleta de Métricas
Collectd
○ Open Source
○ Escrito em C (performance)
○ Modular e Portável
○ Código sofisticado para Network
Collectd: Arquitetura
Collectd: 128 plugins catalogados
Sensu: ~160 plugins + Nagios
Armazenamento de Métricas
○ Identificador
○ Tipo
○ Valor
○ Quando? (timestamp)
O que é uma métrica?
Sensu
Elasticsearch
○ Não é uma boa ideia
○ Martelo?
○ SEARCH
TSDB
“A time series database (TSDB) is a software system
that is optimized for handling time series data”
○ Indexado por tempo
○ Queries
○ Operações matemáticas
○ Dynamic thresholds
TSDB: Vantagens
○ InfluxDB
○ OpenTSDB
○ Graphite (Whisper)
○ RIAK TS
○ DalmatinerDB
○ ...
TSDB: Opções
Visualização e Alertas
○ Correlacionar métricas - Informação
○ Métricas multiníveis
○ Relacionar dashboards e alertas
Visualização
○ Static Thresholds
○ Dynamic Thresholds
○ Detecção de anomalias
Alertas
○ Prometheus
○ Graphana
○ Riemann
○ InfluxData
Opções
Aprendizados Importantes
Obrigado!
Coleta, armazenamento e visualização de
métricas em uma arquitetura de
microserviços na cloud
Rafael Souza
@rafael_psouza
http://rafaelsouza.eng.br

Coleta, armazenamento e visualização de métricas em uma arquitetura de microserviços na cloud