aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kamon-statsd/src/main/resources/reference.conf2
-rw-r--r--kamon-statsd/src/test/scala/kamon/statsd/StatsDMetricSenderSpec.scala2
-rw-r--r--site/src/main/jekyll/_includes/navigation-bar.html5
-rw-r--r--site/src/main/jekyll/changelog.md26
-rw-r--r--site/src/main/jekyll/get-started.md33
-rw-r--r--site/src/main/jekyll/index.html14
-rw-r--r--site/src/main/jekyll/statsd/index.md59
7 files changed, 79 insertions, 62 deletions
diff --git a/kamon-statsd/src/main/resources/reference.conf b/kamon-statsd/src/main/resources/reference.conf
index e9e9f363..f648b7af 100644
--- a/kamon-statsd/src/main/resources/reference.conf
+++ b/kamon-statsd/src/main/resources/reference.conf
@@ -27,7 +27,7 @@ kamon {
# Application prefix for all metrics pushed to StatsD. The default namespacing scheme for metrics follows
# this pattern:
# application.host.entity.entity-name.metric-name
- application = "Kamon"
+ application = "kamon"
}
}
} \ No newline at end of file
diff --git a/kamon-statsd/src/test/scala/kamon/statsd/StatsDMetricSenderSpec.scala b/kamon-statsd/src/test/scala/kamon/statsd/StatsDMetricSenderSpec.scala
index bd5a675d..6fdb48f1 100644
--- a/kamon-statsd/src/test/scala/kamon/statsd/StatsDMetricSenderSpec.scala
+++ b/kamon-statsd/src/test/scala/kamon/statsd/StatsDMetricSenderSpec.scala
@@ -117,7 +117,7 @@ class StatsDMetricSenderSpec extends TestKit(ActorSystem("statsd-metric-sender-s
val localhostName = ManagementFactory.getRuntimeMXBean.getName.split('@')(1)
val testMaxPacketSize = 256
- def buildMetricKey(metricName: String): String = s"Kamon.$localhostName.test-metric-category.test-group.$metricName"
+ def buildMetricKey(metricName: String): String = s"kamon.$localhostName.test-metric-category.test-group.$metricName"
def setup(metrics: Map[String, MetricSnapshotLike]): TestProbe = {
val udp = TestProbe()
diff --git a/site/src/main/jekyll/_includes/navigation-bar.html b/site/src/main/jekyll/_includes/navigation-bar.html
index 22a2ecb6..1abdaea3 100644
--- a/site/src/main/jekyll/_includes/navigation-bar.html
+++ b/site/src/main/jekyll/_includes/navigation-bar.html
@@ -21,11 +21,8 @@
class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="download">
<li><a tabindex="-1" href="/spray"><i class="fa fa-gears"></i> Spray</a></li>
- <li><a tabindex="-1" href="/akka"><i class="fa fa-users"></i> Akka</a></li>
- <li><a tabindex="-1" href="/newrelic"><i class="fa fa-bar-chart-o"></i> NewRelic</a></li>
- <li class="divider"></li>
<li><a tabindex="-1" href="/statsd"><i class="fa fa-tasks"></i> StatsD</a></li>
- <li><a tabindex="-1" href="/traces"><i class="fa fa-clock-o"></i> Traces</a></li>
+ <li><a tabindex="-1" href="/newrelic"><i class="fa fa-bar-chart-o"></i> New Relic</a></li>
</ul>
</li>
</ul>
diff --git a/site/src/main/jekyll/changelog.md b/site/src/main/jekyll/changelog.md
index 71de60fd..52dbfb2c 100644
--- a/site/src/main/jekyll/changelog.md
+++ b/site/src/main/jekyll/changelog.md
@@ -4,16 +4,28 @@ layout: default
---
Changelog
-===============
+=========
+
<hr>
-Version 0.0.15 (2014-04-09)
-----------------
+Version 0.0.15 (2014-04-10)
+---------------------------
+
* kamon
- * prepared to publish in maven central repository
+ * Now publishing to Sonatype and Maven Central
+ * `reference.conf` files are now "sbt-assembly merge friendly"
+
* kamon-core
- * control of AspectJ weaving messages through kamon configuration
-* kamon-statsd (Experimental)
+ * Control of AspectJ weaving messages through Kamon configuration
+ * Avoid the possible performance issues when calling `MessageQueue.numberOfMessages` by keeping a external counter.
+
+* kamon-statsd
+ * Now you can send Actor and Trace metrics to StatsD! Check out our [StatsD documentation](/statsd/) for more
+ details.
+
* kamon-play (Experimental)
+ * Experimental support to trace metrics collection, automatic trace token propagation and HTTP Client request
+ metrics is now available for Play! applications.
+
<hr>
Version 0.0.14 (2014-03-17)
@@ -22,8 +34,10 @@ Version 0.0.14 (2014-03-17)
* Improved startup times
* Remake of trace metrics collection
* Support for custom metrics collection (Experimental)
+
* kamon-play
* Initial support (Experimental)
+
* site
* [logging](/core/logging/) (WIP)
* [tracing](/core/tracing/) (WIP)
diff --git a/site/src/main/jekyll/get-started.md b/site/src/main/jekyll/get-started.md
index bed0deb0..5bd0f9f8 100644
--- a/site/src/main/jekyll/get-started.md
+++ b/site/src/main/jekyll/get-started.md
@@ -6,8 +6,8 @@ layout: default
Get Started with Kamon
======================
-Kamon is distributed as a set of libraries that you include in your application classpath. This libraries contain all
-the required pointcuts and advices (yeap, Kamon uses Aspectj!) for instrumenting Akka actors message passing,
+Kamon is distributed as a core and a set of modules that you include in your application classpath. This modules contain
+all the required pointcuts and advices (yeap, Kamon uses Aspectj!) for instrumenting Akka actors message passing,
dispatchers, futures, Spray components and much more.
To get started just follow this steps:
@@ -16,28 +16,19 @@ To get started just follow this steps:
First: Include the modules you want in your project.
----------------------------------------------------
-All Kamon libraries are available through the official Kamon repository:
+All Kamon components are available through Sonatype and Maven Central and no special repositories need to be configured.
+If you are using SBT, you will need to add something like this to your build definition:
```scala
- "Kamon Repository" at "http://repo.kamon.io"
+libraryDependencies += "io.kamon" % "kamon-core" % "0.0.15"
```
-Then, add the libraries to your project. If you are using SBT this minimal build.sbt file should be helpful:
+Then, add any additional module you need:
-```scala
-
-resolvers += "Kamon Repository" at "http://repo.kamon.io"
-
-libraryDependencies += "kamon" % "kamon-core" % "0.0.14"
-
-```
-
-Additionally you can add any modules you want to your app:
-
-- kamon-core (only compatible with Akka 2.2.3)
-- kamon-spray (only compatible with Spray 1.2.0)
-- kamon-newrelic
-- kamon-dashboard (coming soon)
+* kamon-core (only compatible with Akka 2.2.x)
+* kamon-spray (only compatible with Spray 1.2.x)
+* kamon-statsd
+* kamon-newrelic
Second: Start your app with the AspectJ Weaver
@@ -57,4 +48,6 @@ at the [sbt-aspectj](https://github.com/sbt/sbt-aspectj/) plugin.
Third: Enjoy!
-------------
-Refer to modules documentation (coming soon) to find out what Kamon is doing for you.
+Refer to module's documentation to find out more about core concepts like [tracing](/core/tracing/),
+[metrics](/core/metrics/) and [logging](/core/logging/), and learn how to report your metrics data to external services
+like [StatsD](/statsd/) and [New Relic](/newrelic/).
diff --git a/site/src/main/jekyll/index.html b/site/src/main/jekyll/index.html
index f8accbf3..eba6146b 100644
--- a/site/src/main/jekyll/index.html
+++ b/site/src/main/jekyll/index.html
@@ -57,19 +57,17 @@ title: Kamon - Tools for Reactive Applications Monitoring
</div>
<div class="col-sm-4">
- <h3><i class="fa fa-bar-chart-o"></i> NewRelic <small>Reporting</small></h3>
+ <h3><i class="fa fa-bar-chart-o"></i> StatsD <small>Reporting</small></h3>
- <p>If you are using NewRelic, Kamon can get all your metrics there:
+ <p>StatsD is everywhere, let your metrics data be everywhere too:
<ul>
- <li>Web transactions</li>
- <li>External services <span class="label label-info">soon</span></li>
- <li>Errors rates</li>
- <li>Apdex score</li>
- <li>Custom metrics</li>
+ <li>Actor Metrics</li>
+ <li>Trace Metrics</li>
+ <li>Custom metrics <span class="label label-info">soon</span></li>
</ul>
</p>
- <p><a class="btn btn-default btn-sm" href="/newrelic" role="button">Tell me more &raquo;</a></p>
+ <p><a class="btn btn-default btn-sm" href="/statsd/" role="button">Tell me more &raquo;</a></p>
</div>
</div>
</div>
diff --git a/site/src/main/jekyll/statsd/index.md b/site/src/main/jekyll/statsd/index.md
index 63a94a91..a44550a4 100644
--- a/site/src/main/jekyll/statsd/index.md
+++ b/site/src/main/jekyll/statsd/index.md
@@ -3,37 +3,38 @@ title: Kamon | StatsD | Documentation
layout: default
---
-What is StatsD?
-=======
+Reporting Metrics to StatsD
+===========================
<hr>
-StatsD is a simple network daemon that continuously receives metrics pushed over UDP and periodically sends aggregate metrics to upstream services
-like Graphite. Because it uses UDP, clients can send metrics to it very fast with little to no overhead.
-This means that a user can capture multiple metrics for every request to a web application, even at a rate of thousands of requests per second.
-Request-level metrics are aggregated over a flush interval (default 10 seconds) and pushed to an upstream metrics service.
+[StatsD](https://github.com/etsy/statsd/) is a simple network daemon that continuously receives metrics over UDP and
+periodically sends aggregate metrics to upstream services like (but not limited to) Graphite. Because it uses UDP,
+sending metrics data to StatsD is very fast with little to no overhead.
-Getting Started with StatsD
-----------
-
Installation
--------------
+------------
-To use the StatsD module just make sure you put the `kamon-statsd` library in your classpath and start your application the Aspectj Weaver and Newrelic agents. Please refer to our [get started](/get-started) page
-for more info on how to add the AspectJ Weaver.
+To use the StatsD module just add the `kamon-statsd` dependency to your project and start your application using the
+Aspectj Weaver agent. Please refer to our [get started](/get-started) page for more info on how to add dependencies to
+your project and starting your application with the AspectJ Weaver.
Configuration
-------------
-Currently you will need to add a few settings to your `application.conf` file for the module to work:
+First, include the Kamon(StatsD) extension under the `akka.extensions` key of your configuration files as shown here:
```scala
akka {
- // Make sure the StatsD extension is loaded with the ActorSystem
extensions = ["kamon.statsd.StatsD"]
}
+```
+Then, tune the configuration settings according to your needs. Here is the `reference.conf` that ships with kamon-statsd
+which includes a brief explanation of each setting:
+
+```
kamon {
statsd {
# Hostname and port in which your StatsD is running. Remember that StatsD packets are sent using UDP and
@@ -52,26 +53,40 @@ kamon {
# collection for your desired entities must be activated under the kamon.metrics.filters settings.
includes {
actor = [ "*" ]
+ trace = [ "*" ]
}
simple-metric-key-generator {
# Application prefix for all metrics pushed to StatsD. The default namespacing scheme for metrics follows
# this pattern:
# application.host.entity.entity-name.metric-name
- application = "Kamon"
+ application = "kamon"
}
}
}
```
-Installing Graphite
-----------
-In the Graphite documentation we can find the [Graphite overview](http://graphite.readthedocs.org/en/latest/overview.html#what-graphite-is-and-is-not). It sums up Graphite with these two simple points.
-* Graphite stores numeric time-series data.
-* Graphite renders graphs of this data on demand.
+Integration Notes
+-----------------
+
+* Contrary to many StatsD client implementations, we don't flush the metrics data as soon as the measurements are taken
+ but instead, all metrics data is buffered by the `Kamon(StatsD)` extension and flushed periodically using the
+ configured `kamon.statsd.flush-interval` and `kamon.statsd.max-packet-size` settings.
+* Currently only Actor and Trace metrics are being sent to StatsD.
+* All timing measurements are sent in nanoseconds, make sure you correctly set the scale when plotting or using the
+ metrics data.
+* It is advisable to experiment with the `kamon.statsd.flush-interval` and `kamon.statsd.max-packet-size` settings to
+ find the right balance between network bandwidth utilization and granularity on your metrics data.
+
+
+
+Visualization and Fun
+---------------------
-Show data with [Grafana](http://grafana.org)
-----------
+StatsD is widely used and there are many integrations available, even alternative implementations that can receive UDP
+messages with the StatsD protocol, you just have to pick the option that best suits you. For our internal testing we
+choose to use [Graphite](http://graphite.wikidot.com/) as the StatsD backend and [Grafana](http://grafana.org) to create
+beautiful dashboards with very useful metrics. Have an idea of how your metrics data might look like in Grafana:
![statsD](/assets/img/kamon-statsd-grafana.png "Grafana Screenshot")