tdc2016 trilha-banco-influx.ppt

46
Globalcode – Open4education Trilha – Banco de dados Marcos Vinicius Ribeiro Artigas Software Engineer na Umbler

Upload: marcos-artigas

Post on 20-Jan-2017

54 views

Category:

Technology


0 download

TRANSCRIPT

Globalcode – Open4education

Trilha – Banco de dadosMarcos 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 = tagserver01 = 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 = field9.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 cpuWHERE time > now() - 1hGROUP 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_minFROM 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 inputex: Docker, Linux, Redis, Apache, PHP-FPM, Windows e etc.

• + 15 plugins de outputex: 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 .tickstream |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:

[email protected]@umbler.com