java性能监控工具MoSKito学习--MoSKito-Essential模块1

第三模块:MoSKito-Essential的模块
1,MoSKito-Core
Mosktio Core包含如下组件:
>Core functionality: stat producing, different types of stats and collectors. 核心功能:stat产生,不同类型的stat,和收集
>Support for logging 对日志的支持
>Support for aop and proxying.对aop和代理的支持
>Support for blueprints 对blueprints的支持。
>Registry 注册
>Use-cases and so on.使用案例等等。
Packages 包

如图packages.jpg所示:


2,MoSKito-Inspect
Features 特征
>Display of all available producers in the VM. 展示VM中所有可用的producer
>Single producer display with detailed info. 关于单一producer的详情展示
>One-click XML/JSON/CSV data export. 单击数据导出
>Sorting by all parameters, ascending and descending.降序或者升序排列所有参数
>Switching the time interval (from nanoseconds to seconds). 调整区间大小(从纳秒到秒)
>Monitoring reports with configured time intervals (usually 5m, 15m, etc.) 监视报告被配置的时间区间(通常是5m,15m等)
>Journeys.历程
>Accumulators.收集
>Thresholds.阈值
>Thread info.线程信息
这一部分的说明包括
1)Embedding Moskito-WebUI Into Your Application
这部分说明怎么样在你的应用中嵌入MoSKito-WebUI.
在嵌入之后并且在启动之前问鼓励你去看看用户指导。
这个指导是2.4.0一下版本的,2.4.0版本和servlet3.0不需要对web.xml做改变。
The libs
如果你不是用的maven或者ivy来管理jar包,你需要添加如下包到lib里:
ano-util.jar - StringUtils from ano* open source projects.开源项目
commons-beanutils.jar - Needed by tasks. tasks中需要
log4j.jar - Logging.日志
moskito-core.jar - Core MoSKito functionality.MoSKito的核心功能
moskito-util.jar - MoSKito Utils. Utils工具类
moskito-web.jar - Core MoSKito functionality. MoSKito的核心功能。
moskito-webui.jar - MoSKito Utils.  Utils工具类
所有这些jar是MoSKito分布式包里的部分。你能够得到最新版本在我们的仓库:
svn://svn.anotheria.net/opensource/ivy-shared-repository
或者是我们的私服上:
http://nexus.anotheria.net
如果你检出项目来构建,你需要额外的三个jar包,jsp-api.jar, junit.jar and servlet-api.jar,在运行的时候不需要。
The web.xml
MoSKito被配置通过web.xml;
这是需要的最少片段:
<!--  Moskito -->
<!--  Adding filter to moskito ui which redirects requests to /mui/* to moskito user interface -->
<filter>
    <filter-name>MoskitoUIFilter</filter-name>
    <filter-class>net.anotheria.moskito.webui.MoskitoUIFilter</filter-class>
    <init-param>
        <param-name>path</param-name>
        <param-value>/mui/</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>MoskitoUIFilter</filter-name>
    <url-pattern>/mui/*</url-pattern>
</filter-mapping>
这将强制所有的请求到<context>/mui/重定向到MoSKito WebUI.当然你也可以随意选择其他的路。
总的来说是添加一些默认的MoSKito拦截器是好想法:
<!--  adding moskito measurement and command filters -->
    <filter>
        <filter-name>RequestURIFilter</filter-name>
        <filter-class>net.anotheria.moskito.web.filters.RequestURIFilter</filter-class>
                <init-param>
                        <param-name>limit</param-name>
                        <param-value>1500</param-value>
                </init-param>
    </filter>
    <filter>
        <filter-name>MoskitoCommandFilter</filter-name>
        <filter-class>net.anotheria.moskito.web.filters.MoskitoCommandFilter</filter-class>
    </filter>
        <filter>
        <filter-name>JourneyFilter</filter-name>
        <filter-class>net.anotheria.moskito.web.filters.JourneyFilter</filter-class>
    </filter>


    <filter-mapping>
        <filter-name>RequestURIFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>MoskitoCommandFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>JourneyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
<!--  /Moskito END -->
之后是一些拦监听:
<!-- this listener will init moskito with the context name and cleanup jmx beans and timers on undeploy -->
<listener>
    <listener-class>
        net.anotheria.moskito.webui.util.StartStopListener
    </listener-class>
</listener>
<!-- provides information about created sessions -->
<listener>
    <listener-class>
        net.anotheria.moskito.web.session.SessionCountProducer
    </listener-class>
</listener>
<!-- prepared some useful accumulators -->
<listener>
    <listener-class>
        net.anotheria.moskito.webui.util.SetupPreconfiguredAccumulators
    </listener-class>
</listener>
<!-- here you will usually configure your thresholds and accumulators -->
Styles,Images,JSPs...
最后你需要放MoSKito styles,jsps和images到你的webapp(不用担心,这只是一部分)。他们都是moskito-webui.jar中。下面的ant脚本复制所有:
<?xml version="1.0"?>


<project name="moskitoui" basedir=".">


    <property name="moskito.lib" value="moskito"/> <!-- folder in which moskito libs are located -->
    <property name="webapp.tmp.dir" value="build/war"/> <!-- target folder for the webapp -->


    <target name="inject-moskitoui-webxml">
    <echo>Replacing web.xml</echo>
        <copy file="${moskito.lib}/web.xml" tofile="${webapp.tmp.dir}/WEB-INF/web.xml" overwrite="true"/>
    </target>


    <target name="inject-moskitoui-data">
    <echo>Adding moskito classes, images and jsps.</echo>
        <copy todir="${webapp.tmp.dir}/WEB-INF/lib">
            <fileset dir="${moskito.lib}">
                <include name="**/*.jar"/>
            </fileset>
        </copy>


    <unjar src="${moskito.lib}/moskito-webui.jar" dest="${webapp.tmp.dir}" >
        <patternset>
            <include name="**/*.jsp"/>
        </patternset>
    </unjar>
    <unjar src="${moskito.lib}/moskito-webui.jar" dest="${webapp.tmp.dir}/WEB-INF/static/msk" >
        <patternset>
            <include name="img/*.jpg"/>
            <include name="img/*.gif"/>
        </patternset>
    </unjar>
    <unjar src="${moskito.lib}/moskito-webui.jar" dest="${webapp.tmp.dir}" >
        <patternset>
            <include name="css/*.css"/>
        </patternset>
    </unjar>
    <unjar src="${moskito.lib}/moskito-webui.jar" dest="${webapp.tmp.dir}" >
        <patternset>
            <include name="js/*.js"/>
        </patternset>
    </unjar>
    <unjar src="${moskito.lib}/moskito-webui.jar" dest="${webapp.tmp.dir}/WEB-INF/" >
        <patternset>
            <include name="tld/*"/>
        </patternset>
    </unjar>
    </target>
    <target name="inject-moskitoui" depends="inject-moskitoui-webxml,inject-moskitoui-data"/>
当然你也可以简单的将解压缩版本放在项目中,并永久的在web.xml中进行更改。
MoSKito不能找到JSPs页面?
一些人映射所有到一个简单的servlet,其他的servlets和分发器都没有用。例如Spring MVC Servlet。
分发器不能解析jsp页面或者其他意见存在的资源。如果你是这种情形,你需要手动映射所有的jsp和资源在你的web.xml中。看起来不好看,但是有效,另外作为一个选项,在99%的情况下,你不需要。
<!--  Moskito JSP Mapping, due to /* to spring servlet the jsps have to be mapped by fully qualified name to ensure the jsp servlet working properly -->


 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/Producers.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/ProducersXML.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/ProducersCSV.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/Producer.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/ProducerXML.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/ProducerCSV.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/InspectProducerXML.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/InspectProducer.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/Explanations.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/UseCases.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/RecordedUseCase.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/MonitoringSessions.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/MonitoringSessionCall.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/MonitoringSession.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/Menu.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/CSS.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/IntervalSelection.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/UnitSelection.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/CategorySelection.jsp</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
     <servlet-name>jsp</servlet-name>
     <url-pattern>/net/anotheria/moskito/webui/jsp/SubsystemSelection.jsp</url-pattern>
 </servlet-mapping>
     <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>/js/wz_tooltip.js</url-pattern>
 </servlet-mapping>
 <!--  /Moskito JSP  -->
 事实上根据评论可知道,在springmvc的配置文件中添加:
<mvc:default-servlet-handler />配置既可以省略上述jsp的映射配置。
2)Embedding MoSKito-Inspect into a maven-built war
How to embed MoSKito Inspect into a maven built war 怎么样将MoSKito Inspect 嵌入一个maven构建的war包中。
如果你想嵌入MoSKito web 用户接口道你的web应用中,你应该在你的pom中添加如下配置:
<properties>
    <moskito-version>2.5.1</moskito-version>
  </properties>
  <build>
    <plugins>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
             <configuration>
                <artifactItems><artifactItem>
                   <groupId>net.anotheria</groupId>
                   <artifactId>moskito-webui</artifactId>
                   <version>${moskito-version}</version>
                   <type>jar</type>
                   <overWrite>true</overWrite>
                   <outputDirectory>${project.build.directory}/tmp</outputDirectory>
                   <includes>moskito/**,**/*.jsp</includes>
                  </artifactItem></artifactItems>
             </configuration>
             <executions>
               <execution>
                 <phase>compile</phase>
                 <goals>
                   <goal>unpack</goal>
                 </goals>
               </execution>
             </executions>
       </plugin>


      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1</version>
        <configuration>
           <webXml>etc/web.xml</webXml>
          <webResources>
            ....
            <resource>
              <directory>${project.build.directory}/tmp</directory>
            </resource>
          </webResources>
        </configuration>
      </plugin>
    </plugins>
</build>
你也需要声明如下依赖:
<dependencies>
  <dependency>
      <groupId>net.anotheria</groupId>
      <artifactId>moskito-core</artifactId>
      <version>${moskito-version}</version>
  </dependency>
  <dependency>
      <groupId>net.anotheria</groupId>
      <artifactId>moskito-web</artifactId>
      <version>${moskito-version}</version>
  </dependency>
  <dependency>
      <groupId>net.anotheria</groupId>
      <artifactId>moskito-webui</artifactId>
      <version>${moskito-version}</version>
  </dependency>
</dependencies>


3)MoSKito-Inspect User Guide
这部分说明了怎样通过MoSKito的web接口来工作。
本指南在2.6版本之前和用户界面一起工作。
》 What is MoSKito-Inspect 什么是MoSKito-Inspect
MoSKito-Inspect 是MoSKito中内嵌或者是独立的基于web的用户接口
它运行在你的应用内,展示被收集的性能数据并且提供基本的工具帮助你分析你应用的性能。
MoSKito-Core 收集你应用的性能数据,但是这不是它工作的结束。为了展示和分析收集到的信息,我们需要MoSKito-WebUI,一个在MoSKito 监控系统的组件。
》 Anatomy and Common Tasks 分析和常规任务
Tabs
WebUi功能被展示作为tabs,所以你很容易访问他们。
Tabs有:
1)Producers,生产者
2)Journeys,历程
3)Thresholds,阈值
4)Accumulators,收集器
5)Threads,线程
  a,List
  b,Dump
  c,History
6) More
  a,Config
  b,MBeans
  c,Libs
  d,Update

如图:Tabs.png


Common tasks 常规任务
Autoreloading(works for Thresholds and Accumulators)自动加载(对阈值和收集器工作)
默认设置,MoSKito-WebUItab页不会自动刷新。你可以通过Autoreload按钮来设置自动刷新OFF表示不启用。
不要忘记重新加载
 如果你没有设置自动重载。你将需要手动在你的浏览器里刷新加载。否则,你也许看到旧的监视数据而不是实时的数据。
设置自动加载的间隔
1,点击Autoreload按钮。
2,重载间隔类型(分钟)
3,点击Set或者点击你键盘上的Enter键。

如图autoreload.png:


在刷新区间设置后,自动重载按钮:
变为活跃状态(展示位绿色),展示更新后的区间(例如5分钟)
自动加载不可用设置:
1,点击Autoreload按钮
2,点击OFF
Export data 导出数据
支持的格式包括xml,json,csv.
1,点击Export链接
2,选择XML,JSON,CSV链接中的一个并且
   a,单击一个连接来展示导出的数据在你的浏览器
   b,右键并选择保存链接作为...来保存导出的数据到文件。

如图export.png:


View help
单击Help链接查看帮助页。
帮助页展示了缩写,被使用的Stats在Producers页。
帮助页可用对于MoSKito-WebUitabs和Producers页的装饰者。
当你单击Help链接。MoSKito检查当前部分并且自动展示需要的帮助内容。
帮助页不是一个用户指导。对于MoSKito管理,去看MoSKito documentation页。
Automatic names for new accumulators and thresholds 对新的收集器和阈值自动命名。
每一个新的收集器和阈值都应该有一个唯一的名字。
默认情况下,一个新的entry将会被命名new-entry-<number>(像new-Accumulator),其中number将会随着每一个新的entry而增加。当然,我们推荐标记一个名字,对于你来说比较方便的名字,所以你应该很容易的区别出一个entry从其他的entry中。
如果你创建了一个收集器或者阈值,但是命名已经存在,它将会重定义你的名字使用一个随机数字。
》 Accessing Your Application 访问你的应用
1.在你的浏览器地址栏,按照如下格式输入你的WebUi的地址:
https://host:port/application/moskito-inspect/
例如:
 http://newest.moskito.org/moskito/
http://newest.moskito.org/moskito/moskito-inspect/mskDashboard
http://newest.moskito.org/moskito/moskito-inspect/
依赖于配置,WebUI地址也可能是如下这样的:
https://host:port/moskito-inspect or
https://host/moskito-inspect/
2,如果需要的话,输入你的用户名和密码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值