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
Times por Serviço/Plataforma
Stability and Performance Engineering
○ Testes de Performance○ Engenharia de Caos○ Performance tuning/troubleshooting○ Definir/Manter componentes de telemetria
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 QueryArmazenamento
TracingAlertas Logs
Componentes comuns
Instrumentação
○ Tornar métricas visíveis○ O que expor○ Como expor○ Gauges and Counters
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?
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
Coleta, armazenamento e visualização de métricas em uma arquitetura de
microserviços na cloudRafael Souza
@rafael_psouzahttp://rafaelsouza.eng.br