Globalcode – Open4education
Trilha – Banco de dados
Marcos Vinicius Ribeiro Artigas
Software Engineer na Umbler
Globalcode – Open4education
O início, o cenário...
Globalcode – Open4education
1 ano e 3 meses :)
+ de 26 mil usuários
+ de 23 mil sites hospedados
+ de 20 mil contas de e-mail
+ de 3 mil servidores liberados
+ de 15 mil bancos de dados criados
Previsão para o próximo ano é de triplicar esses
valores.
Globalcode – Open4education
Encontramos uma
necessidade
Globalcode – Open4education
1ª Tentativa
+
+
Globalcode – Open4education
2ª Tentativa
Elasticsearch Watcher+
Globalcode – Open4education
3ª e última tentativa
Globalcode – Open4education
Então,
o que é um banco de dados de série temporal?
(TSDB)
Globalcode – Open4education
Tá,
mas o que são dados de séries temporais?
(Time Series Data )
Globalcode – Open4education
Exemplo do que é!
Globalcode – Open4education
Exemplo do que não é!
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
Onde geralmente se utiliza?
Globalcode – Open4education
E quais as vantagens
mesmo?
• Alta performance
• Banco dedicado a resolver um único problema
• Facilidade para agregação de dados
• Rotatividade dos dados
Globalcode – Open4education
Ok, quais TSDB existem?
e muitos
outros ...
Atlas
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
● Fundada em 2012.
● Desde 2015 possui sua própria stack para
suporte ao InfluxDB, ela se chama TICK.
● Produtos OpenSource e gratuitos.
● Comunidade aquecida e suportada pela
própria empresa.
● Seus produtos estão na versão 0.13.
Paul Dix
Globalcode – Open4education
Principais características
● Alta performance para gravação de dados.
● Escrita e leituras realizadas através de uma HTTP API.
● Linguagem de consulta (InfluxQL) parecida com SQL.
● Tags, permitem indexação de séries para consultas
rápidas e eficientes.
● Políticas de retenção e consultas contínuas.
● Bibliotecas de client desenvolvidas para as principais
linguagens.
● Interface de administração web.
Globalcode – Open4education
Comparação com SQL
• Measurements = Tabelas
• Tags = Colunas indexadas no SQL
• Fields = Colunas não indexadas no SQL
• Points = Rows no SQL
O Resto é basicamente tudo igual..
ex: CREATE DATABASE teste
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST
'http://localhost:8086/write?db=mydb'
--data-binary 'cpu,host=server01 value=9.64 143405556200’
URL da HTTP API de escrita + nome do banco.
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST
'http://localhost:8086/write?db=mydb'
--data-binary 'cpu,host=server01 value=9.64 14340555620’
cpu = measurement
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST
'http://localhost:8086/write?db=mydb'
--data-binary 'cpu,host=server01 value=9.64 14340555620’
host = tag
server01 = valor da tag
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST
'http://localhost:8086/write?db=mydb'
--data-binary 'cpu,host=server01 value=9.64 143405556200’
value = field
9.64 = valor da medição
Globalcode – Open4education
Escrevendo no InfluxDB
curl -i -XPOST
'http://localhost:8086/write?db=mydb'
--data-binary 'cpu,host=server01 value=9.64 143405556200’
Data e hora em formato Epoch Time
Globalcode – Open4education
Retention Polices (RP)
CREATE RETENTION POLICY <rp-name> ON <db-name>
DURATION <duration> REPLICATION <n> [DEFAULT]
ex:
CREATE RETENTION POLICY high_precision ON mydb
DURATION 7d REPLICATION 3 DEFAULT
Globalcode – Open4education
Consultando no InfluxDb
curl -GET
'http://localhost:8086/query?pretty=true'
--data-urlencode "db=mydb"
--data-urlencode "q=SELECT value FROM cpu WHERE
host='server01'"
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Aggregates
SELECT MEAN(value)
FROM cpu
WHERE time > now() - 1h
GROUP BY time(10m)
Globalcode – Open4education
Schema Exploration
• SHOW DATABASES
• SHOW RETENTION POLICIES
• SHOW SERIES
• SHOW MEASUREMENTS
• SHOW TAG KEYS
• SHOW TAG VALUES
• SHOW FIELD KEYS
Globalcode – Open4education
Functions
• min / max
• percentile
• first / last
• mean
• count
• sum
• median
• distinct
• difference
• moving_average
Globalcode – Open4education
Continuous Queries
CREATE CONTINUOUS QUERY "cpu_10min"
ON mydb
BEGIN
SELECT mean(value)
INTO media_cpu_10_min
FROM cpu
GROUP BY time(10m)
END;
Globalcode – Open4education
Administração
• Relay
• Cluster
• Backup
• Restore
Globalcode – Open4education
T.I.C.K
Telegraf
InfluxDB
Chronograf
Kapacitor
Globalcode – Open4education
É tipo ELK?
Globalcode – Open4education
Telegraf
• + 50 plugins de input
ex: Docker, Linux, Redis, Apache, PHP-FPM, Windows e etc.
• + 15 plugins de output
ex: InfluxDB, Datadog, File, OpenTSDB, Prometheus e etc.
Globalcode – Open4education
Chronograf
Globalcode – Open4education
Chronograf
Globalcode – Open4education
Kapacitor
Kapacitor é uma estrutura de processamento de
dados Open Source que facilita a criação de alertas
sobre estruturas de dados temporais e detecção de
anomalias.
Globalcode – Open4education
Exemplo de um .tick
stream
|from()
.measurement('cpu')
|window()
.period(10m)
.every(5m)
|alert()
.warn(lambda: "value" > 80)
.crit(lambda: "value" > 90)
.log('/tmp/alerts.log')
.slack()
.channel(“#alerts”)
Globalcode – Open4education
InfluxDb + Kapacitor
Globalcode – Open4education
Mais informações
Documentação e Slack da InfluxData:
https://docs.influxdata.com/
https://gophers.slack.com/messages/influxdb/
Globalcode – Open4education
Perguntas?
Obrigado!
Meus contatos:
marcos@umbler.com
amigos@umbler.com

InfluxDb: como monitorar milhares de dados por segundo em real time