Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

OpenTSDB

A Distributed, Scalable, Time Series Database

Monitoring at an unprecedented level of granularity

Benot tsuna Sigoure tsuna@stumbleupon.com

Wheres my Paradigm Shift?

Old Plow

Get Real-Time Data from your Infrastructure

Backbone #2 by AndiH

Working at Scale

Finding needle in haystack by Bindaas Madhavi

No SPoF

HBase
Distributed Scalable

Reliable

Efcient

Bright Ideas by purplemattfish

Design Goals
Distributed storage of monitoring data No Single Point of Failure Pulling custom graphs must be trivial & fast Scale to: Thousands of machines Many billions of data points

Key concepts
Points Data (time, value)

Metrics proc.loadavg.1m Tags host=web42

pool=static Metric + Tags = Time Series

put proc.loadavg.1m 1234567890 0.42 host=web42 pool=static

Key concepts
Points Data (time, value)

Metrics proc.loadavg.1m Tags host=web42

pool=static Metric + Tags = Time Series

put proc.loadavg.1m 1234567890 0.42 host=web42 pool=static

Key concepts
Points Data (time, value)

Metrics proc.loadavg.1m Tags host=web42

pool=static Metric + Tags = Time Series

put proc.loadavg.1m 1234567890 0.42 host=web42 pool=static

Key concepts
Points Data (time, value)

Metrics proc.loadavg.1m Tags host=web42

pool=static Metric + Tags = Time Series

put proc.loadavg.1m 1234567890 0.42 host=web42 pool=static

The Big Picture


Applications
Metrics
Periodic polling

Browser tcollector
Push data points
(telnet-style proto, RPC soon)

Graph request
(HTTP)

TSD

TSD
Put / Scan
(Hadoop RPC)

TSD

HBase

12 Bytes Per Datapoint

4TB per year for 1000 machines

OpenTSDB @ 150 Million Datapoints/Day


in a typical datacenter

Demo Time!

Set it up in 15 minutes
With zero prior experience

JDK + Gnuplot Single-node HBase OpenTSDB Deploy tcollector

1 minute (1 command) 4 minutes (3 commands) 5 minutes (5 commands) 5 minutes

Under the Hood


TSD core hbase async su async

Netty

Local Disk (cache)

Under the Hood


put proc.loadavg.1m 1234567890 0.42 host=web42 pool=static

TSD

core hbase async su async 1s delay max.

HBase

Netty

Write Path

Local Disk (cache) >2000 data points / sec / core

Under the Hood


put proc.loadavg.1m 1234567890 0.42 host=web42 pool=static

TSD

core hbase async su async

HBase

Netty

Write Path

Local Disk (cache) >2000 data points / sec / core

Under the Hood


GET /q?...

TSD

core hbase async su async

scan

HBase

Netty

Read Path

Local Disk (cache)

Under the Hood


GET /q?...

TSD

core hbase async su async

scan

HBase

Netty Gnuplot

write to cache

Read Path

Local Disk (cache)

100% Natural, Organic Free & Open-Source

Danger in the Corn by Roger Smith

Questions ? opentsdb.net
Benot tsuna Sigoure tsuna@stumbleupon.com

Table: tsdb-uid

Inside HBase
Column Family: name metrics tagk
host
proc.loadavg .1m

Row Key
0 0 1 0 5 2
host
proc.loadavg. 1m

Column Family: id metrics tagk tagv

tagv
static

0 0 1 0 5 2 0 0 1 0 2 8 0 4 7 0 0 1

0 5 2

put proc.loadavg.1m 1234567890 0.42

} } } }
host=web42 pool=static

Table: tsdb

Inside HBase
Column Family: t Row Key +0
0.69 0.99 0.72
73 -106 2 120

+15 +20 ... +90 +600


0.51 0.42

0 5 2

} }

=1234567800+90

0 0 1 0 2 8 0 4 7 0 0 1

put proc.loadavg.1m 1234567890 0.42

} } } }
host=web42 pool=static

Table: tsdb

Inside HBase
Column Family: t Row Key +0
0.69 0.99 0.72
73 -106 2 120

+15 +20 ... +90 +600


0.51 0.42

0 5 2

} }

=1234567800+90

0 0 1 0 2 8 0 4 7 0 0 1

put proc.loadavg.1m 1234567890 0.42

} } } }
host=web42 pool=static

Table: tsdb

Inside HBase
Column Family: t Row Key +0
0.69 0.99 0.72
73 -106 2 120

+15 +20 ... +90 +600


0.51 0.42

0 5 2

} }

=1234567800+90

0 0 1 0 2 8 0 4 7 0 0 1

put proc.loadavg.1m 1234567890 0.42

} } } }
host=web42 pool=static

Table: tsdb

Inside HBase
Column Family: t Row Key +0
0.69 0.99 0.72
73 -106 2 120

+15 +20 ... +90 +600


0.51 0.42

0 5 2

} }

=1234567800+90

0 0 1 0 2 8 0 4 7 0 0 1

put proc.loadavg.1m 1234567890 0.42

} } } }
host=web42 pool=static

You might also like