使用javamelody監(jiān)控web程序集成總結(jié)

JavaMelody是用來在QA和實(shí)際運(yùn)行生產(chǎn)環(huán)境中監(jiān)控Java或Java EE應(yīng)用程序服務(wù)器的一個(gè)開源框架。它不是一個(gè)工具來模擬來自用戶的請(qǐng)求,而是一個(gè)測(cè)量和計(jì)算用戶在實(shí)際操作中應(yīng)用程序的使用情況的工具,并以圖表的形式顯示,圖表可以按天,周,月,年或自定義時(shí)間段查看。

JavaMelody基礎(chǔ)的監(jiān)控包括Java內(nèi)存和Java CPU使用情況,用戶Session數(shù)量,JDBC連接數(shù),和http請(qǐng)求、sql請(qǐng)求、jsp頁面與業(yè)務(wù)接口方法(EJB3、Spring、 Guice)的執(zhí)行數(shù)量,平均執(zhí)行時(shí)間,錯(cuò)誤百分比等。如果要監(jiān)控Jenkins,JIRA,Sonar等等一些,需要另外安裝對(duì)應(yīng)的插件,還有一些高級(jí)文檔用于高級(jí)配置。此文僅以JavaMelody v1.63.0版本演示基礎(chǔ)功能的集成及使用,更多功能請(qǐng)深入研究官方文檔。

1. 相關(guān)鏈接

2. 運(yùn)行環(huán)境要求

  • JDK 1.6及以上。
  • Servlet api 2.4以上 (或者 JavaEE 1.4),比如Tomcat 5.5 or +, GlassFish v2+, JBoss 4+, Jetty 6+, WebLogic 9+。

3. 基礎(chǔ)集成

  1. 在下載頁面選擇javamelody-1.63.0.zip : Zip of project下載之后解壓。
  2. 解壓后在根目錄里找到javamelody.jarjrobin-x.jar,把這兩個(gè)文件拷貝到應(yīng)用程序的WEB-INF/lib中。
  3. 如果應(yīng)用服務(wù)器兼容Servlet API 3.0比如tomcat 7, glassfish v3或者 jboss 6,一般可以跳過這一步,除非你用了一個(gè)沒有version="3.0"web.xml。不然就如下操作:在程序的WEB-INF/web.xml里面,在servlet之前添加如下行,其中注意<async-supported>true</async-supported><dispatcher>ASYNC</dispatcher>是需要在Servlet API 3.0里用來支持異步請(qǐng)求的。
<filter>
        <filter-name>javamelody</filter-name>
        <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
        <async-supported>true</async-supported>
</filter>
<filter-mapping>
        <filter-name>javamelody</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>ASYNC</dispatcher>
</filter-mapping>
<listener>
        <listener-class>net.bull.javamelody.SessionListener</listener-class>
</listener>
  1. 現(xiàn)在可以部署程序啟動(dòng)服務(wù)器,在瀏覽器打開http://<host>/<context>/monitoring。<host>:為你的主機(jī)名+端口地址,<context>:為你的應(yīng)用配置地址。應(yīng)該可以看到如下界面:
    初始化監(jiān)控界面.jpg

4. SQL監(jiān)控集成

  1. 如果你的JDBC驅(qū)動(dòng)是無數(shù)據(jù)源直接使用的,那你的驅(qū)動(dòng)類應(yīng)該定義為:net.bull.javamelody.JdbcDriver,然后應(yīng)該加入jdbc屬性為driver,值為真正的dirver class。例如,如果你使用的是hibernate.cfg.xml和mysql (無hibernate.connection.datasource):

    <property name ="hibernate.connection.driver_class" >net.bull.javamelody.JdbcDriver </property>
    <property name ="hibernate.connection.driver">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/myschema
    </property>
    <property nam="hibernate.connection.username">myuser</property>
    <property name="hibernate.connection.password">mypassword</property>
    

    只要保證原有的connection.driver是真實(shí)的驅(qū)動(dòng),上面添加一個(gè)參數(shù)connection.driver_class是javamelody的那個(gè)jdbc驅(qū)動(dòng)即可。

  2. 如果使用了數(shù)據(jù)源,而且數(shù)據(jù)源又定義在spring的配置文件里面,那么數(shù)據(jù)源也是可以通過spring的后置處理器來監(jiān)控。如果使用spring,是不需要額外設(shè)置驅(qū)動(dòng)類的。前提是,需要在web.xml指定加載的spring配置文件。比如在web.xml中配置了org.springframework.web.context.ContextLoaderListener這個(gè)監(jiān)聽器,那在contextConfigLocation 的參數(shù)里需要如下配置,再運(yùn)行程序然后去monitoring頁面查看應(yīng)該已經(jīng)有sql的統(tǒng)計(jì)了:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
         classpath:monitoring-spring.xml
         classpath:applicationContext.xml
        </param-value>
    </context-param>
    

sql監(jiān)控.jpg

注意事項(xiàng):確保monitoring-spring.xml被當(dāng)作配置文件第一個(gè)加載。如果應(yīng)用中springAOP或者@Autowired的配置與monitoring-spring.xml中的配置有沖突,那么使用monitoring-spring-datasource.xml文件替代monitoring-spring.xml就可以了,這個(gè)文件僅僅包含一個(gè)數(shù)據(jù)源的后置處理器和SpringDataSourceFactoryBean的一個(gè)例子。其中monitoring-spring.xmlmonitoring-spring-datasource.xml文件都在解壓目錄的src\main\resources\net\bull\javamelody目錄下,需要將對(duì)應(yīng)使用的文件拷貝到classpath目錄下。

5. Spring方法級(jí)監(jiān)控

  • 前提是使用monitoring-spring.xml文件(不做修改),然后在需要監(jiān)控的方法上使用@MonitoredWithSpring注解即可。另外一種方式是修改monitoring-spring.xml文件內(nèi)容如下:
<bean id="monitoringAdvisor" class="net.bull.javamelody.MonitoringSpringAdvisor">
    <property name="pointcut">
        <bean class="org.springframework.aop.support.JdkRegexpMethodPointcut">
            <!-- 監(jiān)控com.system.service下所有類的方法 -->
            <property name="pattern" value="com.system.service.*.*" />   
        </bean>
    </property>
</bean>
spring方法級(jí)監(jiān)控.jpg

6. 其他內(nèi)容

  • javamelody監(jiān)控?cái)?shù)據(jù)存放的目錄位于 C:\Users\xxx\AppData\Local\Temp\javamelody。可以將對(duì)應(yīng)項(xiàng)目的目錄刪除,再重啟服務(wù)器可以看到數(shù)據(jù)已經(jīng)清空。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,290評(píng)論 6 342
  • 前言 JavaMelody是一款可以監(jiān)控Java應(yīng)用(比如項(xiàng)目war,ear包)以及應(yīng)用服務(wù)器(比如Tomcat或...
    hutou閱讀 2,774評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,871評(píng)論 18 399
  • 一、覺察日記 【事實(shí)】下午開了兩個(gè)小時(shí)的英文會(huì)議,好多外賓,可惜英文比較 low,聽懂了一些 【感受】很無奈,學(xué)過...
    以詩為名閱讀 155評(píng)論 0 0

友情鏈接更多精彩內(nèi)容