Wicket Metrics - Guide / Added several new measurement aspects
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/d417c01f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d417c01f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d417c01f Branch: refs/heads/master Commit: d417c01f94cf778d040e355d14f2e81717631777 Parents: 58c9fcb Author: Tobias Soloschenko <[email protected]> Authored: Fri Mar 11 19:29:30 2016 +0100 Committer: Tobias Soloschenko <[email protected]> Committed: Wed Mar 16 17:55:12 2016 +0100 ---------------------------------------------------------------------- .../apache/wicket/metrics/WicketMetrics.java | 82 +++++++++++--------- .../metrics/aspects/ApplicationAspect.java | 49 ------------ .../wicket/metrics/aspects/BehaviorAspect.java | 47 +++++++++++ .../wicket/metrics/aspects/ComponentAspect.java | 72 ++++++++++++++--- .../IPartialPageRequestHandlerAspect.java | 68 ++++++++++++++++ .../aspects/ResourceReferenceAspect.java | 11 ++- .../metrics/aspects/WicketFilterAspect.java | 49 ++++++++++++ .../src/main/resources/META-INF/aop.xml | 4 +- .../src/docs/guide/monitoring.gdoc | 7 ++ .../src/docs/guide/monitoring/monitoring_1.gdoc | 19 +++++ .../src/docs/guide/monitoring/monitoring_2.gdoc | 66 ++++++++++++++++ wicket-user-guide/src/docs/guide/toc.yml | 4 + 12 files changed, 375 insertions(+), 103 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java index 9c4eb59..52ca261 100644 --- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java +++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/WicketMetrics.java @@ -51,38 +51,59 @@ public class WicketMetrics return metricRegistry; } - /** - * Marks the meter with the given name + * Simply measure the time for a {@literal @}around * * @param name - * the name of the meter to be marked + * the name of the timer context + * @param joinPoint + * the joinPoint to be proceed + * @return the value of the join point + * @throws Throwable + * if there is an exception while execution */ - public void mark(String name) + public Object measureTime(String name, ProceedingJoinPoint joinPoint) throws Throwable { if (WicketMetrics.enabled) { - getMetricRegistry().meter(PREFIX + name).mark(); + Context context = getMetricRegistry().timer(PREFIX + name + renderClassName(joinPoint)) + .time(); + try + { + return joinPoint.proceed(); + } + finally + { + stopQuietly(context); + } + } + else + { + return joinPoint.proceed(); } } /** - * Gets a timer context + * Marks the meter with the given name * * @param name - * the name of the timer context - * @return the timer context + * the name of the meter to be marked + * @param joinPoint + * the join point + * @return the result of the proceeded join point + * @throws Throwable */ - public Context context(String name) + public Object mark(String name, ProceedingJoinPoint joinPoint) throws Throwable { if (WicketMetrics.enabled) { - return getMetricRegistry().timer(PREFIX + name).time(); + getMetricRegistry().meter(PREFIX + name + renderClassName(joinPoint)).mark(); } - else + if (joinPoint != null) { - return null; + return joinPoint.proceed(); } + return null; } /** @@ -100,30 +121,6 @@ public class WicketMetrics } /** - * Simply measure the time for a {@literal @}around - * - * @param name - * the name of the timer context - * @param joinPoint - * the joinPoint to be proceed - * @return the value of the join point - * @throws Throwable - * if there is an exception while execution - */ - public Object measureTime(String name, ProceedingJoinPoint joinPoint) throws Throwable - { - Context context = context(name); - try - { - return joinPoint.proceed(); - } - finally - { - stopQuietly(context); - } - } - - /** * Starts the jmx reporter */ public static void startJmxReporter() @@ -149,4 +146,17 @@ public class WicketMetrics { WicketMetrics.enabled = enabled; } + + /** + * Renders the class name of the given join point + * + * @param joinPoint + * the join point to get the class of + * @return the class name representation + */ + public String renderClassName(ProceedingJoinPoint joinPoint) + { + return joinPoint != null + ? "/" + joinPoint.getTarget().getClass().getName().replace('.', '_') : ""; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java deleted file mode 100644 index a2ee0dd..0000000 --- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ApplicationAspect.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.wicket.metrics.aspects; - -import org.apache.wicket.metrics.WicketMetrics; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; - -/** - * Aspect to handle basic web application information - * - * @author Tobias Soloschenko - */ -@Aspect -public class ApplicationAspect extends WicketMetrics -{ - - /** - * Collects data how often a request has been made against the webapp and counts the time how - * long the request remains - * - * @param joinPoint - * the joinPoint to be proceed - * @return returns the boolean of the processRequest method - * - * @throws Throwable - * might occur while invoking process request - */ - @Around("execution(* org.apache.wicket.protocol.http.WicketFilter.processRequest(..))") - public Object aroundRequestProcessed(ProceedingJoinPoint joinPoint) throws Throwable - { - return measureTime("core/application/request", joinPoint); - } -} http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/BehaviorAspect.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/BehaviorAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/BehaviorAspect.java new file mode 100644 index 0000000..94cc60c --- /dev/null +++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/BehaviorAspect.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.metrics.aspects; + +import org.apache.wicket.metrics.WicketMetrics; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; + +/** + * Measures everything about behaviors + * + * @author Tobias Soloschenko + * + */ +@Aspect +public class BehaviorAspect extends WicketMetrics +{ + /** + * Collects data how often a behavior is created + * + * @param joinPoint + * the join point (behavior) which is created + * @return the result of constructor + * @throws Throwable + * might occur while creating a new behavior + */ + @Around("execution(org.apache.wicket.behavior.Behavior.new(..))") + public Object aroundNew(ProceedingJoinPoint joinPoint) throws Throwable + { + return mark("core/behavior/create", joinPoint); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ComponentAspect.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ComponentAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ComponentAspect.java index 65df92b..e046a63 100644 --- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ComponentAspect.java +++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ComponentAspect.java @@ -35,14 +35,15 @@ public class ComponentAspect extends WicketMetrics * Collects data how often components are rendered * * @param joinPoint - * @return the object returned from the joinPoint + * the join point (component) which is rendered + * @return the object returned from the join point * @throws Throwable + * might occur while onRender */ - @Around("target(org.apache.wicket.Component+) && execution(* onRender(..))") - public Object aroundRender(ProceedingJoinPoint joinPoint) throws Throwable + @Around("execution(* org.apache.wicket.Component.onRender(..))") + public Object aroundOnRender(ProceedingJoinPoint joinPoint) throws Throwable { - return measureTime("core/component/render/" + joinPoint.getTarget().getClass().getName(), - joinPoint); + return measureTime("core/component/render", joinPoint); } /** @@ -50,23 +51,72 @@ public class ComponentAspect extends WicketMetrics * * @param joinPoint * the join point (component) which is created - * @return the object returned from the joinPoint + * @return the object returned from the join point * @throws Throwable - * might occur while invoking process request + * might occur while constructing a new component */ @Around("execution(org.apache.wicket.Component.new(..))") public Object aroundNew(ProceedingJoinPoint joinPoint) throws Throwable { - return measureTime("core/component/create/" + joinPoint.getTarget().getClass().getName(), - joinPoint); + return measureTime("core/component/create", joinPoint); + } + + /** + * Collects data how often components calls onConfigure + * + * @param joinPoint + * the join point (component) which is configured + * @return the object returned from the join point + * + * @throws Throwable + * might occur while invoking onConfigure + */ + @Around("execution(* org.apache.wicket.Component.onConfigure(..))") + public Object aroundOnConfigure(ProceedingJoinPoint joinPoint) throws Throwable + { + return measureTime("core/component/configure", joinPoint); + } + + /** + * Collects data how often components calls onInitialize + * + * @param joinPoint + * the join point (component) which is initialized + * @return the object returned from the join point + * + * @throws Throwable + * might occur while invoking onInitialize + */ + @Around("execution(* org.apache.wicket.Component.onInitialize(..))") + public Object aroundOnInitialize(ProceedingJoinPoint joinPoint) throws Throwable + { + return measureTime("core/component/initialize", joinPoint); + } + + /** + * Collects data how often components calls onDetach + * + * @param joinPoint + * the join point (component) which is calling detach + * @return the object returned from the join point + * @throws Throwable + * might occur while invoking onDetach + */ + @Around("execution(* org.apache.wicket.Component.onDetach(..))") + public Object arroundOnDetach(ProceedingJoinPoint joinPoint) throws Throwable + { + return mark("core/component/detach", joinPoint); } /** * Collects data how often components redirect to another page + * + * @throws Throwable + * might occur while invoking setResponsePage */ @Before("call(* org.apache.wicket.Component.setResponsePage(..))") - public void aroundResponsePage() + public void beforeResponsePage() throws Throwable { - mark("core/component/redirect"); + mark("core/component/redirect", null); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/IPartialPageRequestHandlerAspect.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/IPartialPageRequestHandlerAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/IPartialPageRequestHandlerAspect.java new file mode 100644 index 0000000..24cb2a1 --- /dev/null +++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/IPartialPageRequestHandlerAspect.java @@ -0,0 +1,68 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.metrics.aspects; + +import org.apache.wicket.metrics.WicketMetrics; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; + +/** + * Aspect which checks ajax request targets + * + * @author Tobias Soloschenko + * + */ +@Aspect +public class IPartialPageRequestHandlerAspect extends WicketMetrics +{ + /** + * Collects data how often components calls add + * + * @throws Throwable + * might occur while invoking add + */ + @Before("call(* org.apache.wicket.core.request.handler.IPartialPageRequestHandler.add(..))") + public void beforeAdd() throws Throwable + { + mark("core/ajax/add", null); + } + + /** + * Collects data how often components calls prependJavaScript + * + * @throws Throwable + * might occur while invoking prependJavaScript + */ + @Before("call(* org.apache.wicket.core.request.handler.IPartialPageRequestHandler.prependJavaScript(..))") + public void beforePrependJavaScript() throws Throwable + { + mark("core/ajax/prependJavaScript", null); + } + + /** + * Collects data how often components calls appendJavaScript + * + * @throws Throwable + * might occur while invoking appendJavaScript + */ + @Before("call(* org.apache.wicket.core.request.handler.IPartialPageRequestHandler.appendJavaScript(..))") + public void beforeAppendJavaScript() throws Throwable + { + mark("core/ajax/appendJavaScript", null); + } + +} http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ResourceReferenceAspect.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ResourceReferenceAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ResourceReferenceAspect.java index 1430ee7..cd11e54 100644 --- a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ResourceReferenceAspect.java +++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/ResourceReferenceAspect.java @@ -32,18 +32,17 @@ public class ResourceReferenceAspect extends WicketMetrics { /** - * Collects data how often components are created + * Collects data how often a resource reference is created * * @param joinPoint - * the join point (component) which is created - * @return the object returned from the joinPoint + * the join point (resource reference) which is created + * @return the result of constructor * @throws Throwable - * might occur while invoking process request + * might occur while creating a new resource reference */ @Around("execution(org.apache.wicket.request.resource.ResourceReference.new(..))") public Object aroundNew(ProceedingJoinPoint joinPoint) throws Throwable { - mark("core/resourceReference/create/" + joinPoint.getTarget().getClass().getName()); - return joinPoint.proceed(); + return mark("core/resource/create", joinPoint); } } http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/WicketFilterAspect.java ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/WicketFilterAspect.java b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/WicketFilterAspect.java new file mode 100644 index 0000000..bb31b74 --- /dev/null +++ b/wicket-metrics/src/main/java/org/apache/wicket/metrics/aspects/WicketFilterAspect.java @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.wicket.metrics.aspects; + +import org.apache.wicket.metrics.WicketMetrics; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; + +/** + * Aspect to handle basic web application information + * + * @author Tobias Soloschenko + */ +@Aspect +public class WicketFilterAspect extends WicketMetrics +{ + + /** + * Collects data how often a request has been made against the webapp and counts the time how + * long the request remains + * + * @param joinPoint + * the joinPoint to be proceed + * @return returns the boolean of the processRequest method + * + * @throws Throwable + * might occur while invoking process request + */ + @Around("execution(* org.apache.wicket.protocol.http.WicketFilter.processRequest(..))") + public Object aroundRequestProcessed(ProceedingJoinPoint joinPoint) throws Throwable + { + return measureTime("core/application/request", joinPoint); + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-metrics/src/main/resources/META-INF/aop.xml ---------------------------------------------------------------------- diff --git a/wicket-metrics/src/main/resources/META-INF/aop.xml b/wicket-metrics/src/main/resources/META-INF/aop.xml index eedd397..0d8ee24 100644 --- a/wicket-metrics/src/main/resources/META-INF/aop.xml +++ b/wicket-metrics/src/main/resources/META-INF/aop.xml @@ -4,8 +4,10 @@ <include within="org.apache.wicket..*"/> </weaver> <aspects> + <aspect name="org.apache.wicket.metrics.aspects.BehaviorAspect" /> + <aspect name="org.apache.wicket.metrics.aspects.IPartialPageRequestHandlerAspect" /> <aspect name="org.apache.wicket.metrics.aspects.ComponentAspect" /> - <aspect name="org.apache.wicket.metrics.aspects.ApplicationAspect" /> + <aspect name="org.apache.wicket.metrics.aspects.WicketFilterAspect" /> <aspect name="org.apache.wicket.metrics.aspects.ResourceReferenceAspect" /> </aspects> </aspectj> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-user-guide/src/docs/guide/monitoring.gdoc ---------------------------------------------------------------------- diff --git a/wicket-user-guide/src/docs/guide/monitoring.gdoc b/wicket-user-guide/src/docs/guide/monitoring.gdoc new file mode 100644 index 0000000..413f510 --- /dev/null +++ b/wicket-user-guide/src/docs/guide/monitoring.gdoc @@ -0,0 +1,7 @@ +The wicket-metrics module is available since Wicket 8.0.0 and contains a life measurement implementation to collect data of applications and visualize it. + +You can see how many request your application served, how often components are created, initalized, configured or their detach method has been invoked and a lot of other additional information. + +The module itself is using "Metrics of dropwizard":https://dropwizard.github.io/metrics/3.1.0/ and "AspectJ":https://eclipse.org/aspectj/ so that if you turn of the measurement it has no longer any effect + +to your web application. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-user-guide/src/docs/guide/monitoring/monitoring_1.gdoc ---------------------------------------------------------------------- diff --git a/wicket-user-guide/src/docs/guide/monitoring/monitoring_1.gdoc b/wicket-user-guide/src/docs/guide/monitoring/monitoring_1.gdoc new file mode 100644 index 0000000..608b9c2 --- /dev/null +++ b/wicket-user-guide/src/docs/guide/monitoring/monitoring_1.gdoc @@ -0,0 +1,19 @@ +This is a little example how to setup wicket-metrics within a tomcat. + +(1) Add the maven dependency to your project +{code} +<dependency> + <groupId>org.apache.wicket</groupId> + <artifactId>wicket-metrics</artifactId> + <version>${wicket.version}</version> +</dependency> +{code} + +(2) Just drop the jars of aspectjrt and aspectjweaver into the tomcat lib folder - you can download it from here "http://mvnrepository.com/artifact/org.aspectj/":http://mvnrepository.com/artifact/org.aspectj/ (the metrics dependency is shipped with the project) + +(3) Add the java agent to the jvm start options of your tomcat: -javaagent:/pathToServer/lib/aspectjweaver-x.x.x.jar + +(4) To enable the JMX measurement write the following line into your init method of your Application (Now you are able to connect with jvisualvm to your server and have a look at the data): +{code} +WicketMetrics.startJmxReporter(); +{code} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-user-guide/src/docs/guide/monitoring/monitoring_2.gdoc ---------------------------------------------------------------------- diff --git a/wicket-user-guide/src/docs/guide/monitoring/monitoring_2.gdoc b/wicket-user-guide/src/docs/guide/monitoring/monitoring_2.gdoc new file mode 100644 index 0000000..4ecf64e --- /dev/null +++ b/wicket-user-guide/src/docs/guide/monitoring/monitoring_2.gdoc @@ -0,0 +1,66 @@ +To visualize the metrics with Graphite a little additional configuration is required: + +(1) Add the additional maven dependency to your project: +{code} +<dependency> + <groupId>io.dropwizard.metrics</groupId> + <artifactId>metrics-graphite</artifactId> + <version>${metrics.graphite.version}</version> +</dependency> +{code} + +(2) Add the following code to your Application's init method: +{code} +final Graphite graphite = new Graphite(new InetSocketAddress("127.0.0.1", 2003)); +final GraphiteReporter reporter = GraphiteReporter.forRegistry(WicketMetrics.getMetricRegistry()) + .prefixedWith("WebApplications") + .convertRatesTo(TimeUnit.SECONDS) + .convertDurationsTo(TimeUnit.MILLISECONDS) + .filter(MetricFilter.ALL) + .build(graphite); +reporter.start(1, TimeUnit.SECONDS); +{code} + +(3) Install and setup graphite on your system. Example installation for mac (beware that this is only a quickstart setup!): + +- (1) Install homebrew: "brew":http://brew.sh/ + +- (2) Install "Git":https://git-scm.com/ + +- (3) brew install python + +- (4) brew install cairo + +- (5) brew install py2cairo + +- (6) pip install Django==1.5 + +- (7) pip install "django-tagging<0.4" + +- (8) sudo pip install carbon + +- (9) pip install whisper + +- (10) sudo pip install graphite-web + +- (11) sudo pip install Twisted==11.1.0 + +- (12) sudo chown -R <your username>:staff /opt/graphite + +- (13) cp /opt/graphite/conf/carbon.conf{.example,} + +- (14) cp /opt/graphite/conf/storage-schemas.conf{.example,} + +- (15) cd /opt/graphite/webapp/graphite + +- (16) cp local_settings.py{.example,} + +- (17) python manage.py syncdb + +- (18) python /opt/graphite/bin/carbon-cache.py start + +- (19) python /opt/graphite/bin/run-graphite-devel-server.py /opt/graphite + +- (20) Go to http://localhost:8080 + +(4) Now start your tomcat server configured like mentioned in the previous chapter. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/wicket/blob/d417c01f/wicket-user-guide/src/docs/guide/toc.yml ---------------------------------------------------------------------- diff --git a/wicket-user-guide/src/docs/guide/toc.yml b/wicket-user-guide/src/docs/guide/toc.yml index 520d57b..f9be35e 100644 --- a/wicket-user-guide/src/docs/guide/toc.yml +++ b/wicket-user-guide/src/docs/guide/toc.yml @@ -223,6 +223,10 @@ wicketstuff: wicketstuff_5: Module wicketstuff-inmethod-grid wicketstuff_6: Module wicketstuff-rest-annotations wicketstuff_7: Module stateless +monitoring: + title: Wicket Metrics Monitoring + monitoring_1: Example setup + monitoring_2: Visualization with Graphite redirects: title: Lost In Redirection With Apache Wicket (Appendix) contributing:
