读书笔记《apache-tomcat-7-essentials》Tomcat 7的监控与管理
监控在 IT 管理员的生活中起着至关重要的作用。它使网络/基础设施工程师的生活变得可预测。当我开始我的 Web 基础架构支持职业生涯时,我一直想知道,我的老板如何知道某个进程 90% 用于特定系统,或者他如何知道某个特定进程将在大约 90 分钟后终止,而无需记录进入应用程序?后来我发现他们使用市面上的各种第三方工具搭建了一个监控系统,用于服务器和应用监控。
在本章中,我们将讨论:
如何监控Tomcat 7
使用 Tomcat 管理器管理应用程序
用于监控 Tomcat 7 的第三方实用程序
在我们学习如何监控 Tomcat 7 之前,让我们了解为什么任何系统实际上都需要监控,因为我们已经为用户很好地配置了系统。
这个问题的答案非常棘手。在实时环境中,系统可能由于网络故障、突然的 CPU 峰值、JVM 崩溃等多种原因而崩溃。有一些创收的应用程序,例如,如果银行网站出现故障,那么就会有巨大的收入损失,而且除非用户开始抱怨这些问题,否则管理员也不会知道。这也会对业务产生不好的影响。如果在服务器上设置了监控系统,Web 管理员将收到一条通知,说明以下系统正在关闭,他/她将采取必要的措施来解决问题。因此,它最大限度地减少了对应用程序停机时间的影响。
在当今世界,随着基础设施的增加,管理员管理服务器变得非常困难。为了提前识别问题并最大限度地减少停机时间,系统上配置了监视器。我们可以根据基础架构要求,例如操作系统、Web、应用程序和数据库级别的服务器以及单个应用程序级别,在系统上配置多级监控。配置多级监控有不同的方法。下图显示了为任何基础架构配置监控的不同方法:
对一个系统的监控主要可以通过以下三种方式进行:
在上一节中,我们已经讨论了监视器的类型,但我们仍然不知道这些系统上配置了哪些监视器。让我们为不同的基础设施系统监视器准备一个表格,以及它们的配置原因。下表显示了通常为 Web 应用程序和数据库服务器配置的基本监视器:
被监控的组件 |
益处 |
网络服务器 |
应用服务器 |
数据库服务器 |
---|---|---|---|---|
中央处理器 |
主动措施以识别系统问题 |
是的 |
是的 |
是的 |
物理内存 (RAM) |
主动措施以识别系统问题 |
是的 |
是的 |
是的 |
虚拟机 |
主动措施以识别系统问题 |
不 |
是的 |
是的 |
HTTP 连接 |
帮助我们识别 Web 服务器的性能 |
是的 |
是(仅当 HTTP 服务正在运行时) |
不 |
AJP 连接 |
帮助我们找出 Web/应用程序服务器的连接性 |
是的 |
是的 |
不 |
数据库连接数 |
帮助我们识别数据库服务器的性能 |
不 |
不 |
是的 |
连接空闲 |
帮助我们识别数据库服务器的问题 |
不 |
不 |
是的 |
磁盘空间 |
识别系统问题的主动措施(磁盘空间不足) |
是的 |
是的 |
是的 |
日志中的错误代码 |
帮助我们识别系统上的潜在问题 |
不 |
是的 |
是的 |
Tomcat Manager 是管理 Apache Tomcat 7 操作的默认工具。它为 IT 管理员提供了远程管理应用程序和监控系统的自由。以下是 Tomcat 管理器的优点:
允许管理员进行远程部署、回滚、启动和停止功能。
为应用程序和服务器提供详细的监控状态。
管理员无需 24x7 全天候待在办公室。如果有任何问题,他/她可以登录到 Tomcat Manager 来解决问题。简而言之,我们可以说 Tomcat 的远程管理对管理员来说变得非常容易。
1. 您可以使用 URL
http://localhost:8080/
访问 Tomcat 管理器。以下屏幕截图显示了 Tomcat 7 的主页,其中突出显示了 Manager App。2. 点击Manager App,会提示输入用户名和密码。提供
tomcat_user.xml
中给出的凭证,其中tomcat_user.xml
可以在TOMCAT_HOME中找到/CONF 。
3. 显示 Tomcat 管理器控制台。如果您查看控制台,它会为您提供应用程序部署、服务器状态、诊断、服务器信息等的完整画面。以下屏幕截图显示了应用程序的状态以及在应用程序支持期间执行的不同部署相关任务:
以下屏幕截图显示了 Tomcat 7 管理器的其他功能,例如:
可以使用 Tomcat 管理器在 Tomcat 7 中进行监控。默认情况下,Tomcat 管理器提供服务器的状态以及请求及其状态的详细描述。在进行故障排除时,此信息对管理员非常有用。除此之外,管理员无需登录机器即可收集此信息。收集应用程序的全部信息至少需要 30 分钟,如果您手动检查服务器状态,但使用 Tomcat 管理器,您将使其在线。这对 IT 管理员来说真是太棒了,而且帮助很大。
让我们讨论 Tomcat 管理器中可用的各种用于监视的组件。
Tomcat 7 的基本概要包括 JVM、HTTP 和 HTTPS 连接的详细信息,可以使用 URL http://localhost:8080/manager/status
访问.以下屏幕截图显示了 Tomcat 7 的概要:
显示的 Tomcat 7 概要包含 JVM、HTTP 连接和 AJP 连接摘要的详细信息。每个组件的输出摘要详细信息如下:
此页面提供了 Tomcat 7 状态的完整报告。它包括属于服务器状态的所有参数。除此之外,它还显示详细的应用程序列表、应用程序响应时间、servlet 响应时间等。可以使用 URL http://localhost:8080/manager/status/all
访问它。让我们简要讨论仪表板的每个组件。
这为我们提供了 Tomcat 7 中托管的所有应用程序的列表以及它们用于应用程序访问的 URL 映射。以下屏幕截图显示了 Tomcat 7 实例中的应用程序列表部署:
以下几点给出了托管在 Tomcat 中的应用程序的详细信息:
JConsole 是 JDK 1.5 或更高版本附带的最佳监控实用程序之一。 JConsole 的完整形式是 Java 监控和管理控制台。它是一个图形工具,可提供应用程序和服务器性能的完整详细信息。它为我们提供了有关托管在 Tomcat 7 中的应用程序的以下信息:
检测内存不足
启用或禁用 GC 和类加载详细跟踪
检测死锁
控制应用程序中任何记录器的日志级别
访问操作系统资源——Sun 的平台扩展
管理应用程序的托管 Bean(MBean)
为了使用 JConsole 进行 Tomcat 7 监控,我们必须启用 Java 管理扩展 (JMX) 在 Tomcat 7 上。通过这样做,我们也可以从我们的台式机监控 Tomcat 7 服务器的详细信息,或者简单地说,我们可以在不登录服务器的情况下远程监控服务器状态机器。它为管理员提供了极大的灵活性,可以在任何位置工作并解决问题。为了在 Tomcat 7 中启用它,我们必须在 catalina.sh
中添加 CATALINA_OPTS
参数。默认情况下,添加以下值以启用详细信息:
下面我们在Tomcat 7上做实时配置,了解一下各个参数的含义:
-Djava.awt.headless:
是一个系统配置选项,帮助图形渲染程序接受图形控制台,并将程序重定向到命令行模式下工作。在连接到远程服务器时非常有用。-Dcom.sun.management.jmxremote:
这个JMX允许主机连接到系统。-Dcom.sun.management.jmxremote.port:
它定义了你的远程方法调用 (RMI) 已连接。-Dcom.sun.management.jmxremote.authenticate:
定义连接的认证机制。-Dcom.sun.management.jmxremote.ssl:
它定义了用于通信的协议。如果设置为false
,则默认使用HTTP协议。
完成 Tomcat 7 配置后,就可以使用命令 jconsole
通过 JConsole 远程连接到 Tomcat 7,如下所示。它将打开 GUI 界面。我们必须提供我们要连接的服务器的 IP 地址和端口;在我们的例子中,它是 localhost
和 8086
。以下屏幕截图显示了 JConsole 的默认控制台:
以下屏幕截图显示了使用端口 8086 连接到 Tomcat 7 的 JConsole:
连接系统后,它会提供系统的完整概览,例如 CPU、内存、线程和类。以下屏幕截图显示了详细信息。我们还可以对基于 Java 的应用程序的以下组件进行深入分析:
记忆
线
课程
MBean
申请在线分析
用于分析的定制报告
可以在系统中检索死锁
Web 管理员有必要分析 Tomcat 7 的内存状态,以避免服务器将来出现问题。以下屏幕截图显示了 Tomcat 7 的实时堆内存利用率。此选项卡提供以下功能:
内存及其 JVM 足迹的图形表示
基于需求分析的内存图定制
执行 GC 的能力
此选项卡为特定实例提供了 Tomcat 7 中托管的服务器线程和 Web 应用程序的完整图片。以下屏幕截图显示了线程利用率的实时状态,并且突出显示了死锁检测按钮。实时,这个线程分析工具对于管理员来说是一个非常方便的工具。以下是线程选项卡提供的功能:
线程及其图片的图形表示
单个线程分析及其状态
死锁检测
这两个选项卡对于管理员来说非常重要。实际上,管理员不可能每次都查看应用程序的每个组件。管理员所做的是,他/她检查系统的整体性能。如果发现任何异常,他们将向下钻取组件。以下是这些选项卡的功能:
实例的完整摘要(堆内存使用情况、线程、CPU 使用情况、类)
VM 参数摘要
上一个屏幕截图显示了 Tomcat 7 的实时状态。它由四个图表组成,显示 Tomcat 7 实例的堆、线程、类和 CPU 使用率的实时利用率。另一方面,以下屏幕截图显示了 Tomcat 实例的完整摘要:
此选项卡为您提供托管 Beans(MBeans) 部署在 Tomcat 实例中。它包括 Tomcat 和应用程序级 MBean。以下屏幕截图显示了 MBean 的属性。如果某个特定的 MBean 是问题的根源,这将非常有用。以下是 MBeans选项卡的优点:
有四种类型的 MBean。下图显示了不同类型的 MBean。让我们简要讨论每个 MBean:
让我们以部署在 Tomcat 7 中的连接器为例,我们可以在其中使用 MBean 远程配置和执行连接器上的操作。默认情况下,已配置 HTTP 和 AJP 连接器。在我们的示例中,我们还配置了 HTTPS 连接器。以下屏幕截图显示了三个连接器 HTTP、AJP 和 HTTPS:
如果我们观察 Connector 文件夹,我们可以查看每个 Connector 的三个子级别。以下是各部分的功能:
Note
更多监控信息请参考链接 http:// java.sun.com/developer/technicalArticles/J2SE/monitoring/。