InfluxDB + GrafanaTelemetria na sua plataforma
Celso Crivelaro@celsocrivelaro
DEVELOPER @
Por quê?
Crise da Plataforma
"O software está lento..."
Healthcheck OK!
Logs OK!
Testes manuais OK!
Corrigimos o problema, mas ainda ficou a falta de visibilidade…
Healthcheck: OK / NOK
Não tínhamos números dos tempos da plataforma
Era muito difícil perceber tendências e casos estranhos
Logs apenas mostram operações
Clientes percebiam problemas antes da gente
1a IDEIA Fazer um teste de carga
Dev / QA / Produção Diferentes
Não dá para quebrar Produção
Iria querer muito tempo de dev/ops
O número iria mostrar apenas o teto da plataforma
2a IDEIA Monitorações das máquinas
Monitoramento de memória / carga / disco / filas
As máquinas estavam OK, a app não
Qualquer variação da métrica causava alvoroço
3a IDEIA Telemetria
Inspirações
https://www.youtube.com/watch?v=czes-oa0yik
Com o quê?
Appinfluxdb-ruby
influxdb-python
Série Temporal
SQL Like / Schemaless
Boa documentação
Funções nativas com tempo
Estrutura do dado
Equivale a uma tabela SQL
Chave primáriaTime
Measurement
Values
Tags
Chaves-valor da medida, não indexados
Metadados indexados, sempre strings
cpu_load
load=30,temperature=50
server=name1,region=EMEA
POINT
> SELECT * FROM policy_entry
name: policy_entry
------------------
time cache_hit host success time
1464013724 1 saasauth0005 1 0.35
Fetching data
> SELECT * FROM policy_entry
name: policy_entry
------------------
time cache_hit host success time
1464013724 1 saasauth0005 1 0.35
Fetching data
Funções
count percentil
sum
mean
top
max
derivative
difference
moving_average
Aggregations Selectors Transformations
Funções de tempo
> SELECT * FROM messages where time < now() - 1h
Várias bases
Gráficos + Plugins
Como representar os dados?
Série Temporal
Padrões
Média de 1 min
Valores Absolutos
Valores Absolutos
Série Temporal
Percentil -> Para tempo e medidas
Percentil 95%
Percentil 95%
Média (1 min)
Percentil x Média
Obrigado!
@celsocrivelarohttp://crivelaro.me