diff --git a/Druid/Images/120x60.png b/Druid/Images/120x60.png
new file mode 100644
index 0000000..3eb9045
Binary files /dev/null and b/Druid/Images/120x60.png differ
diff --git a/Druid/Images/128x128.png b/Druid/Images/128x128.png
new file mode 100644
index 0000000..99b45aa
Binary files /dev/null and b/Druid/Images/128x128.png differ
diff --git a/Druid/Images/200x128.png b/Druid/Images/200x128.png
new file mode 100644
index 0000000..abc1ffd
Binary files /dev/null and b/Druid/Images/200x128.png differ
diff --git a/Druid/description.html b/Druid/description.html
new file mode 100644
index 0000000..96b91bb
--- /dev/null
+++ b/Druid/description.html
@@ -0,0 +1,70 @@
+
+
+
+
+
Overview
+
Get metrics from Druid related to queries, ingestion, and coordination in real time
+
+ - Visualize performance metrics
+
+
+
+
+
+
+
+
Configuration
+
+ To capture metrics you need to...
+
+
+ - Configure Druid(
+ see doc)
+
+ Example Configuration in common.runtime.properties:
+# Monitoring
+#
+druid.emitter=composing
+druid.emitter.composing.emitters=["logging", "statsd"]
+
+druid.monitoring.monitors=["com.metamx.metrics.JvmMonitor"]
+druid.emitter.logging.logLevel=info
+
+druid.emitter.statsd.hostname=dogstatsd
+druid.emitter.statsd.port=8125
+druid.emitter.statsd.dimensionMapPath=dist/druid/extensions/statsd-emitter/metricDimensions.json
+
+
+
+
+ - If you want to take advantage of tagging system from Datadog, need to change some code in statsd-emitter and rebuild it with java-dogstatsd-client
+ We're working on open source those changes to Druid statsd-emitter.
+
+
+
+
+
+
+
diff --git a/Druid/metrics.csv b/Druid/metrics.csv
new file mode 100644
index 0000000..98738fa
--- /dev/null
+++ b/Druid/metrics.csv
@@ -0,0 +1,121 @@
+druid.broker.jetty.numOpenConnections,count,,connection,per_unit_name,Number of open jetty connections.,0,druid,druid
+druid.broker.jvm.bufferpool.capacity,gauge,,byte,,Bufferpool capacity.,0,,
+druid.broker.jvm.bufferpool.count,count,,,,Bufferpool count.,0,,
+druid.broker.jvm.bufferpool.used,gauge,,byte,,Bufferpool used.,1,,
+druid.broker.jvm.gc.count,count,,,,Garbage collection count.,0,,
+druid.broker.jvm.gc.time,timer,,second,,Garbage collection time.,0,,
+druid.broker.jvm.mem.committed,gauge,,byte,,Committed memory.,1,,
+druid.broker.jvm.mem.init,gauge,,byte,,Initial memory.,0,,
+druid.broker.jvm.mem.max,gauge,,byte,,Max memory.,0,,
+druid.broker.jvm.mem.used,gauge,,byte,,Used memory.,0,,
+druid.broker.jvm.pool.committed,gauge,,byte,,Committed pool.,1,,
+druid.broker.jvm.pool.init,gauge,,byte,,Initial pool.,0,,
+druid.broker.jvm.pool.max,gauge,,byte,,Max pool.,0,,
+druid.broker.jvm.pool.used,gauge,,byte,,Pool used.,-1,,
+druid.broker.query.bytes,gauge,,byte,,number of bytes returned in query response.,0,,
+druid.broker.query.cache.delta.averageBytes,count,,byte,,Average cache entry byte size since the last emission.,0,,
+druid.broker.query.cache.delta.errors,count,,error,,Number of cache errors since the last emission.,-1,,
+druid.broker.query.cache.delta.evictions,count,,eviction,,Number of cache evictions since the last emission.,0,,
+druid.broker.query.cache.delta.hitRate,count,,hit,second,Cache hit rate since the last emission.,1,,
+druid.broker.query.cache.delta.hits,count,,hit,,Number of cache hits since the last emission.,0,,
+druid.broker.query.cache.delta.misses,count,,miss,,Number of cache misses since the last emission since the last emission.,-1,,
+druid.broker.query.cache.delta.numEntries,count,,entry,,Number of cache entries since the last emission.,0,,
+druid.broker.query.cache.delta.sizeBytes,count,,byte,entry,Size in bytes of cache entries since the last emission.,0,,
+druid.broker.query.cache.delta.timeouts,count,,rate,,Number of cache timeouts since the last emission.,0,,
+druid.broker.query.cache.total.averageBytes,gauge,,byte,,Average total cache byte size.,0,,
+druid.broker.query.cache.total.errors,gauge,,error,,Number of total cache errors.,-1,,
+druid.broker.query.cache.total.evictions,gauge,,eviction,,Number of total cache evictions.,0,,
+druid.broker.query.cache.total.hitRate,gauge,,hit,second,Number of total cache hits.,0,,
+druid.broker.query.cache.total.hits,gauge,,hit,,Number of total cache hits.,0,,
+druid.broker.query.cache.total.misses,gauge,,miss,,Number of total cache misses.,0,,
+druid.broker.query.cache.total.numEntries,gauge,,entry,,Number of total cache entries.,0,,
+druid.broker.query.cache.total.sizeBytes,gauge,,byte,entry,Size in bytes of total cache entries.,0,,
+druid.broker.query.cache.total.timeouts,gauge,,rate,,Number of total cache timeouts.,0,,
+druid.broker.query.cpu.time,timer,,microsecond,query,Microseconds of CPU time taken to complete a query,0,,
+druid.broker.query.node.bytes,count,,byte,historical node,number of bytes returned from querying individual historical/realtime nodes.,0,,
+druid.broker.query.node.time,timer,,millisecond,historical node,Milliseconds taken to query individual historical/realtime nodes.,0,,
+druid.broker.query.node.ttfb,timer,,millisecond,,Time to first byte. Milliseconds elapsed until broker starts receiving the response from individual historical/realtime nodes.,0,,
+druid.broker.query.time,timer,,millisecond,,Milliseconds taken to complete a query.,0,,
+druid.broker.segment.scan.pending,gauge,,,,Number of segments in queue waiting to be scanned.,0,,
+druid.coordinator.jetty.numOpenConnections,count,,connection,per_unit_name,Number of open jetty connections.,0,,
+druid.coordinator.jvm.bufferpool.capacity,gauge,,byte,,Bufferpool capacity.,0,,
+druid.coordinator.jvm.bufferpool.count,count,,,,Bufferpool count.,0,,
+druid.coordinator.jvm.bufferpool.used,gauge,,byte,,Bufferpool used.,1,,
+druid.coordinator.jvm.gc.count,count,,,,Garbage collection count.,0,,
+druid.coordinator.jvm.gc.time,timer,,second,,Garbage collection time.,0,,
+druid.coordinator.jvm.mem.committed,gauge,,byte,,Committed memory.,1,,
+druid.coordinator.jvm.mem.init,gauge,,byte,,Initial memory.,0,,
+druid.coordinator.jvm.mem.max,gauge,,byte,,Max memory.,0,,
+druid.coordinator.jvm.mem.used,gauge,,byte,,Used memory.,0,,
+druid.coordinator.jvm.pool.committed,gauge,,,,Committed pool.,1,,
+druid.coordinator.jvm.pool.init,gauge,,byte,,Initial pool.,0,,
+druid.coordinator.jvm.pool.max,gauge,,byte,,Max pool.,0,,
+druid.coordinator.jvm.pool.used,gauge,,byte,,Pool used.,-1,,
+druid.coordinator.segment.assigned.count,gauge,,,,Number of segments assigned to be loaded in the cluster.,0,,
+druid.coordinator.segment.count,gauge,,,,Number of available segments.,0,,
+druid.coordinator.segment.dropped.count,gauge,,,,Number of segments dropped due to being overshadowed.,0,,
+druid.coordinator.segment.dropQueue.count,gauge,,,,Number of segments to drop.,0,,
+druid.coordinator.segment.loadQueue.count,gauge,,,,Number of segments to load.,0,,
+druid.coordinator.segment.loadQueue.failed,gauge,,,,Number of segments that failed to load.,-1,,
+druid.coordinator.segment.loadQueue.size,gauge,,byte,,Size in bytes of segments to load.,0,,
+druid.coordinator.segment.moved.count,count,,,,Number of segments moved in the cluster.,0,,
+druid.coordinator.segment.overShadowed.count,gauge,,,,Number of overShadowed segments.,0,,
+druid.coordinator.segment.size,gauge,,byte,,Size in bytes of available segments.,0,,
+druid.coordinator.segment.unavailable.count,gauge,,,,Number of segments (not including replicas) left to load until segments that should be loaded in the cluster are available for queries.,-1,,
+druid.coordinator.segment.underReplicated.count,gauge,,,,Number of segments (including replicas) left to load until segments that should be loaded in the cluster are available for queries.,-1,,
+druid.coordinator.segment.unneeded.count,count,,,,Number of segments dropped due to being marked as unused.,0,,
+druid.historical.jetty.numOpenConnections,count,,connection,per_unit_name,Number of open jetty connections.,0,,
+druid.historical.jvm.bufferpool.capacity,gauge,,byte,,Bufferpool capacity.,0,,
+druid.historical.jvm.bufferpool.count,count,,,,Bufferpool count.,0,,
+druid.historical.jvm.bufferpool.used,gauge,,byte,,Bufferpool used.,1,,
+druid.historical.jvm.gc.count,count,,,,Garbage collection count.,-1,,
+druid.historical.jvm.gc.time,timer,,second,,Garbage collection time.,0,,
+druid.historical.jvm.mem.committed,gauge,,byte,,Committed memory.,1,,
+druid.historical.jvm.mem.init,gauge,,byte,,Initial memory.,0,,
+druid.historical.jvm.mem.max,gauge,,byte,,Max memory.,0,,
+druid.historical.jvm.mem.used,gauge,,byte,,Used memory.,0,,
+druid.historical.jvm.pool.committed,gauge,,,,Committed pool.,1,,
+druid.historical.jvm.pool.init,gauge,,byte,,Initial pool.,0,,
+druid.historical.jvm.pool.max,gauge,,byte,,Max pool.,0,,
+druid.historical.jvm.pool.used,gauge,,byte,,Pool used.,-1,,
+druid.historical.query.bytes,gauge,,byte,,number of bytes returned in query response.,0,,
+druid.historical.query.cache.delta.averageBytes,count,,byte,,Average cache entry byte size since the last emission.,0,,
+druid.historical.query.cache.delta.errors,count,,error,,Number of cache errors since the last emission.,-1,,
+druid.historical.query.cache.delta.evictions,count,,eviction,,Number of cache evictions since the last emission.,0,,
+druid.historical.query.cache.delta.hitRate,count,,hit,second,Cache hit rate since the last emission.,0,,
+druid.historical.query.cache.delta.hits,count,,hit,,Number of cache hits since the last emission.,0,,
+druid.historical.query.cache.delta.misses,count,,miss,,Number of cache misses since the last emission since the last emission.,-1,,
+druid.historical.query.cache.delta.numEntries,count,,entry,,Number of cache entries since the last emission.,0,,
+druid.historical.query.cache.delta.sizeBytes,count,,byte,entry,Size in bytes of cache entries since the last emission.,0,,
+druid.historical.query.cache.delta.timeouts,count,,rate,,Number of cache timeouts since the last emission.,0,,
+druid.historical.query.cache.total.averageBytes,gauge,,byte,,Average total cache byte size.,0,,
+druid.historical.query.cache.total.errors,gauge,,error,,Number of total cache errors.,-1,,
+druid.historical.query.cache.total.evictions,gauge,,eviction,,Number of total cache evictions.,0,,
+druid.historical.query.cache.total.hitRate,gauge,,hit,second,Number of total cache hits.,0,,
+druid.historical.query.cache.total.hits,gauge,,hit,,Number of total cache hits.,0,,
+druid.historical.query.cache.total.misses,gauge,,miss,,Number of total cache misses.,0,,
+druid.historical.query.cache.total.numEntries,gauge,,entry,,Number of total cache entries.,0,,
+druid.historical.query.cache.total.sizeBytes,gauge,,byte,entry,Size in bytes of total cache entries.,0,,
+druid.historical.query.cache.total.timeouts,gauge,,rate,,Number of total cache timeouts.,0,,
+druid.historical.query.cpu.time,timer,,microsecond,query,Microseconds of CPU time taken to complete a query,0,,
+druid.historical.query.segment.time,timer,,millisecond,segment,Milliseconds taken to query individual segment. Includes time to page in the segment from disk.,-1,,
+druid.historical.query.segmentAndCache.time,timer,,millisecond,,Milliseconds taken to query individual segment or hit the cache (if it is enabled on the historical node).,-1,,
+druid.historical.query.time,timer,,millisecond,query,Milliseconds taken to complete a query.,-1,,
+druid.historical.query.wait.time,timer,,millisecond,segment,Milliseconds spent waiting for a segment to be scanned.,-1,,
+druid.historical.segment.scan.pending,gauge,,,,Number of segments in queue waiting to be scanned.,-1,,
+druid.overlord.jetty.numOpenConnections,count,,connection,per_unit_name,Number of open jetty connections.,0,,
+druid.overlord.jvm.bufferpool.capacity,gauge,,byte,,Bufferpool capacity.,0,,
+druid.overlord.jvm.bufferpool.count,count,,,,Bufferpool count.,0,,
+druid.overlord.jvm.bufferpool.used,gauge,,byte,,Bufferpool used.,1,,
+druid.overlord.jvm.gc.count,count,,,,Garbage collection count.,0,,
+druid.overlord.jvm.gc.time,timer,,second,,Garbage collection time.,0,,
+druid.overlord.jvm.mem.committed,gauge,,byte,,Committed memory.,1,,
+druid.overlord.jvm.mem.init,gauge,,byte,,Initial memory.,0,,
+druid.overlord.jvm.mem.max,gauge,,byte,,Max memory.,0,,
+druid.overlord.jvm.mem.used,gauge,,byte,,Used memory.,0,,
+druid.overlord.jvm.pool.committed,gauge,,,,Committed pool.,1,,
+druid.overlord.jvm.pool.init,gauge,,byte,,Initial pool.,0,,
+druid.overlord.jvm.pool.max,gauge,,byte,,Max pool.,0,,
+druid.overlord.jvm.pool.used,gauge,,byte,,Pool used.,-1,,
+druid.overlord.segment.added.bytes,count,,byte,,Size in bytes of new segments created.,0,,
+druid.overlord.task.run.time,timer,,millisecond,,Milliseconds taken to run task.,0,,
diff --git a/Druid/preview.css b/Druid/preview.css
new file mode 100644
index 0000000..80ae351
--- /dev/null
+++ b/Druid/preview.css
@@ -0,0 +1,282 @@
+body {
+ font: 13px/1.5 'Lucida Grande','Lucida Sans Unicode',Arial,sans-serif;
+}
+.saas_tile {
+ position: relative;
+ float: left;
+ width: 208px;
+ height: 202px;
+ top: 0px;
+ text-align: center;
+ background:#f1f2f3;
+ margin: 1px;
+ overflow: hidden;
+ clear: right;
+}
+
+.saas_in{
+ position: relative;
+ top: 0px;
+ transition: all 0.2s ease;
+}
+
+.saas_tile:hover .saas_in{
+ top: -134px;
+}
+
+.saas_avatar {
+ position: relative;
+ margin: 4px 0 0;
+}
+
+.saas_name {
+ margin: 4px 0 0;
+ font-size: 14px;
+ font-weight: bold;
+}
+
+.saas_controls {
+ position: absolute;
+ bottom: 8px;
+ left: 0;
+ right: 0;
+}
+.saas_description {
+ margin: 42px 10px;
+ font-size: 12px;
+}
+
+button {
+ font-size: inherit;
+ line-height: 1.5em;
+ position: relative;
+ cursor: pointer;
+ margin: 0 2px;
+ padding: 3px 0.75em 4px;
+ font-weight: bold;
+ color: #4d4d4d;
+ background: #fff;
+ border: 1px solid #b4b4b4;
+ border-bottom-color: #aaa;
+ border-radius: 4px;
+ box-sizing: border-box;
+ box-shadow: none;
+ z-index: 10;
+}
+
+.text-success {
+ color: #55b81c !important;
+}
+
+span {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ font-size: 100%;
+ vertical-align: baseline;
+ background: transparent;
+}
+
+#content {
+ display: none;
+}
+
+.clearfix:after {
+ clear: both;
+ content: ' ';
+ display: block;
+ font-size: 0;
+ line-height: 0;
+ visibility: hidden;
+ width: 0;
+ height: 0;
+}
+
+.integration_content {
+ width: 960px;
+ padding: 16px;
+ clear:both;
+ border: 1px solid #AAA;
+ margin: 40px 0px;
+}
+
+.integration_content .desc {
+ margin: 0;
+}
+
+.integration_header {
+ position: relative;
+ margin: 0 -16px 16px;
+ padding: 0 16px 0;
+ background-image: -webkit-linear-gradient(bottom, #eeeeee 0px, #ffffff 4px);
+ background-image: linear-gradient(to top, #eeeeee 0px, #ffffff 4px);
+ border-bottom: 1px solid #ddd;
+ z-index: 1;
+}
+
+.integration_logo {
+ float: left;
+ margin: 0 16px 16px 0;
+ width: 200px;
+ height: 128px;
+ border: 1px solid #ddd;
+ outline: 9px solid #fff;
+ outline-offset: -10px;
+}
+
+.integration_content h1 {
+ margin-bottom: 4px;
+}
+
+
+
+h1, h2, h3 {
+ font-family: 'OpenSans','Lucida Grande','Lucida Sans Unicode',sans-serif;
+ font-weight: bold;
+ color: #774aa4;
+
+}
+h1 {
+ color: #51326f;
+ font-size: 23px;
+}
+
+p, h1 {
+ margin: 0 0 16px;
+}
+
+.ui-helper-clearfix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.ui-tabs {
+ background: #FFFFFF;
+ position: relative;
+ padding: .2em;
+ zoom: 1;
+ border-radius: 0px;
+ border: 0px none;
+}
+
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
+ border: 1px solid #a8a8a8;
+ background: #f6f6f6;
+ font-weight: bold;
+ color: #5F83B9;
+}
+.ui-tabs .ui-tabs-nav {
+ border-color: #a8a8a8;
+ border-width: 0px 0px 1px 0px;
+ margin: 0;
+ padding: 0;
+ background: transparent;
+ border-radius: 0px;
+}
+
+
+.ui-tabs .ui-tabs-nav li.ui-state-active {
+ background: #FFFFFF;
+}
+
+tabs-nav li.ui-state-default {
+ border-color: #a8a8a8;
+}
+
+
+
+.ui-tabs .ui-tabs-panel {
+ display: block;
+ border: 0;
+ padding: 1em 1.4em;
+ background: none;
+ font-size: 12px;
+ border-color: #a8a8a8;
+ border-width: 0px 1px 1px 1px;
+ border-style: solid;
+ border-radius: 0px;
+}
+
+.ui-tabs-hide {
+ display: none !important;
+}
+
+.ui-tabs .ui-tabs-nav li {
+ list-style: none;
+ float: left;
+ position: relative;
+ top: 1px;
+ margin: 0 .2em 1px 0;
+ border-bottom: 0 !important;
+ padding: 0;
+ white-space: nowrap;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+
+.ui-tabs .ui-tabs-nav li a {
+ float: left;
+ padding: .5em 1em;
+ text-decoration: none;
+ font-size: 12px;
+}
+
+.ui-tabs .ui-tabs-nav li.ui-state-default a {
+ color: #4f4f4f !important;
+ text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.8);
+}
+
+
+pre.textfile {
+ position: relative;
+ margin: .5em 0 1em;
+ padding: 0 0 0 26px;
+ background-color: transparent;
+}
+
+pre code {
+ display: block;
+ padding: 0.5em;
+ color: #000;
+ background: #f8f8ff;
+}
+
+pre.textfile code {
+ background: #f9f9f9;
+ color: #222;
+ border: 2px solid #f0f0f0;
+}
+
+.integration_content .desc #int-configuration ol li {
+ margin: 0 0 16px;
+}
+
+button.primary {
+ color: #fff;
+ background: #3399cc;
+ border-color: #3399cc;
+ border-bottom-color: #297aa3;
+}
+
+.code_icon {
+ position: absolute;
+ top: 0;
+ left: 0px;
+ height: 34px;
+ width: 26px;
+ background: #EEE;
+
+}
+
+ul, ol {
+ padding: 0 0 0 2em;
+}
+
+.screenshot {
+ padding: 5px;
+ box-shadow: 0 0 10px #999;
+}
\ No newline at end of file
diff --git a/Druid/screenboard.json b/Druid/screenboard.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/Druid/screenboard.json
@@ -0,0 +1 @@
+{}