tomcat监控---JavaMelody

JavaMelody是一个用于Java和JavaEEWeb应用的监控工具,无需安装或服务器配置即可集成。它记录实际操作数据,提供性能、错误统计和系统信息。通过修改web.xml和persistence.xml文件进行配置,并可通过http://localhost:8080/context/monitoring访问。建议在生产环境中限制访问,可使用用户名密码或IP限制进行授权。
摘要由CSDN通过智能技术生成

JavaMelody简介

JavaMelody是一个方便的Java或JavaEE Web 应用程序监控工具。它允许自动存储由 Web 应用程序的实际操作产生的统计数据和错误,以供以后评估。JavaMelody 很容易集成到应用程序本身中,因此无需安装或修改 Web 服务器配置。

需要注意的是,JavaMelody 工具并不是用来产生数据的,它的功能是对应用程序的实际运行进行测量和统计。它主要基于用户自己使用应用程序的请求统计和演化图的管理。如您所见,它主要用于质量或生产环境。

JavaMelody 在开源许可下分发,可以安全地在生产环境中的应用程序中使用。JavaMelody 很容易集成到大多数应用程序中(不需要配置文件或数据库)并且相当轻量级。JavaMelody 可以安全地激活,因为它在工具和我们的应用程序之间创建了一个几乎透明的层。它不会在性能方面产生任何类型的下降。

安装配置

1. 将 JavaMelody 添加到我们的项目中

    <dependency>
        <groupId>net.bull.javamelody</groupId>
        <artifactId>javamelody-core</artifactId>
        <version>1.77.0</version>
    </dependency>
    <dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itext</artifactId>
      <version>2.1.7</version>
    </dependency>

注意:尽管遵循安装说明,据说该库是可选的,但在执行工具时加载图形时出现错误,因为必须使用 iText 工具

2. 配置

修改 WEB-INF/ web.xml文件以建立以下过滤器,其中包含要监控的配置和资源。

    <!--javamelody 监控项目-->
    <filter>
        <filter-name>javamelody</filter-name>
        <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
        <async-supported>true</async-supported>
        <init-param>
            <!--添加登录验证,默认是不带登录验证的-->
            <param-name>authorized-users</param-name>
            <param-value>tomcat1:1, tomcat2:2</param-value>
        </init-param>
    </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>

在这种情况下,我们监控整个应用程序并建立默认配置。

我们还可以通过如下修改Hibernate META-INF/ persistence.xml文件 启用了 SQL 查询监控。

<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 name="hibernate.connection.username">myuser</property>
<property name="hibernate.connection.password">mypassword</property>

3. 访问JavaMelody

http:😕/localhost:8080/context/monitoring

注意: context为上下文名称
在这里插入图片描述

JavaMelody提供的信息

3.1 统计图表 包含的图表显示了以下指标随时间的演变:
  • http 查询、sql 查询、jsf 或 strut 操作、jsf 页面或业务外观方法产生的执行次数、平均执行时间和错误百分比。

  • java内存

  • 中央处理器 Java。

  • 用户会话数和 jdbc 连接数。
    在这里插入图片描述

3.2 指标统计

预定义计数器(http 查询、sql 查询、jsf 或 strut 操作、jsf 页面或业务外观方法)的统计信息包含在以下信息中:

  • 执行次数、平均执行时间、CPU 时间和错误百分比的摘要。
  • 这些请求超过某个阈值的时间百分比。
  • 对于每个 http 请求,它指示响应流的大小、平均 sql 执行次数和平均 sql 时间。
    在这里插入图片描述
3.3 系统信息

除了上述所有信息之外,还包括详细的系统信息以及关于 http 错误、日志中的警告和错误、数据缓存(如果使用EHCache )以及批处理作业(如果我们使用Quartz )的统计信息。
在这里插入图片描述
通过这种方式我们可以知道机器的主机名,它正在使用的操作系统,JDK版本,使用的服务器的版本号等。即使查看详细信息,我们也可以访问 POM 和包含应用程序中使用的 Maven 依赖项的汇总表。

4. 注意点

在访问 JavaMelody 时,默认情况下,我们不会被要求输入用户名和密码。

在生产环境中使用之前,强烈建议限制对该工具的访问

4.1 通过用户名和密码进行身份验证 web.xml文件中用户密码认证配置示例:
<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>Monitoring</realm-name>
</login-config>
<security-role>
  <role-name>monitoring</role-name>
</security-role>
<security-constraint>
  <web-resource-collection>
    <web-resource-name>Monitoring</web-resource-name>
    <url-pattern>/monitoring</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>monitoring</role-name>
  </auth-constraint>
</security-constraint>
4.2 按 IP 范围进行身份验证

Javamelody 允许我们通过将用户的 IP 地址作为参数的正则表达式来限制访问。这是通过allowed-addr-pattern配置参数实现的。例如:“192.168…|10.0.0.1”允许“192.168..*”范围内的 IP 或网关 10.0.0.1 后面的任何机器。
请记住,如果我们使用像 Apache 这样的http 代理服务器,客户端的 IP 地址将是 Apache 的。因此,在这种情况下,您不应使用 allowed-addr-pattern,或者,如果是这种情况,请不要使用 Apache 访问此页面,或 启用 mod_proxy_ajp以便被监控的服务器知道客户端的 IP 地址。

带有 AJP 的 httpd.conf 示例:

<location /webapp>
ProxyPass ajp://localhost:8080/webapp
</location>
4.3 在这种情况下,需要定义领域和具有“监控”类型角色的用户。例如,如果我们使用带有默认领域的 Tomcat,那么修改 tomcat-users.xml 文件就足够了,如下所示:
<tomcat-users>
  <role rolename="monitoring"/>
  <user username="monitoring" password="monitoring" roles="monitoring"/>
</tomcat-users>

或者,如果您选择基本安全(BASIC 身份验证),通过用户名和密码,但在 web.xml 文件中没有领域和“安全约束”,只需在上面为 JavaMelody 定义的过滤器: 上面代码已写

<filter>
  <filter-name>javamelody</filter-name>
  <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
  <init-param>
    <param-name>authorized-users</param-name>
    <param-value>user1:pwd1, user2:pwd2</param-value>
  </init-param>
</filter>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值