Apache Tomcat是Jakarta Servlet、Jakarta Server Pages、Jakarta Expression Language、Jakarta WebSocket、Jakarta Annotations和Jakarta Authentication规范的开源实现,这些都是Jakarta EE平台的一部分。
这就是Apache Tomcat的官方描述。但是,简单地说,它是一个Apache 2.0许可的开源应用程序,为众多大型应用程序和需要运行其Servlet和服务器页面的小型企业提供动力,但不需要一个完整的Jakarta EE环境。
不管什么样的应用程序是由你的Apache Tomcat实例驱动的,关键是要确保它们健康运行,没有任何问题,而且它们所运行的平台没有任何问题,可以在没有任何瓶颈的情况下运行。预见环境中可能发生的任何问题也是非常重要的,当问题发生时,能够正确地排除故障,并做深入的事后分析,以便找出问题的根本原因并加以解决,以防止任何进一步的失败。
在这篇博文中,我们将讨论你应该测量的关键Tomcat指标 ,并回顾一些可用的最佳监控工具。
需要测量的关键Tomcat和JVM性能指标
我们可以把你应该监测的关键Tomcat指标分为以下几类:
操作系统指标
操作系统乍一看并不明显,但它对Apache Tomcat的健康状况起着关键作用。如果操作系统不健康,运行在它上面的应用程序也可能会受到影响。
CPU利用率
Tomcat运行环境的CPU将被用来处理每个请求。因为它是一个JVM应用程序,Tomcat也将使用CPU进行垃圾收集。这就是为什么这是你应该关注的关键指标之一。
在一个特定的环境中,你有越多的空闲CPU周期,它就能处理越多的请求。用户部分的CPU使用率将显示你的Tomcat进程需求,而等待可以指出I/O或网络的瓶颈。你应该避免CPU持续处于100%利用率的情况,因为这有可能意味着运行Apache Tomcat的服务器已经过载。
内存使用情况
内存的使用对于每一个基于JVM的应用程序都是至关重要的,包括Apache Tomcat。请记住,分配给运行Tomcat的JVM的内存不仅被Tomcat使用,也被运行在它里面的应用程序使用。
一般的经验法则是,你要避免你的操作系统交换JVM所需的内存。否则,你将得到一个非常慢的JVM,导致Tomcat和在它里面运行的应用程序的缓慢。
Java虚拟机指标
Java虚拟机是运行Tomcat所需的运行时环境。你需要确保它是健康和有效运行的。否则,你的应用程序的性能将是次优的。下面是JVM的指标,在需要时可以帮助你排除Tomcat的性能问题。
JVM内存
Java虚拟机的可用内存、JVM实际使用的内存和可用于处理的内存量都非常重要。你应该监测Tomcat JVM的内存使用情况,特别是:
- 初始内存大小--JVM在启动时请求的内存的初始大小。
- 最大堆大小--操作系统将分配给JVM的最大可能的内存大小。
- 已用内存大小--Tomcat和它所运行的JVM当前使用的内存量。
在大多数情况下,由于性能原因,你要避免调整JVM堆的大小。此外,确保初始内存等于最大堆大小,可以确保在Tomcat进程的生命周期内,有足够的内存达到最大值。否则,进程将无法启动,并让你马上洞察到问题。
需要提醒和注意的关键指标是已用内存堆大小。你的Tomcat实例JVM需要有足够的内存来有效工作。警报阈值在很大程度上取决于你的垃圾收集器,但对于较新的垃圾收集器来说,你希望堆内存低于85-90%。
这里值得一提的是,监测Apache Tomcat的日志也很有用,因为它们有助于发现内存不足的错误。这类事件表明存在内存问题--要么堆的大小太低,要么你的应用程序中有一些内存泄漏。
垃圾收集器
你的JVM会在堆上分配对象,使用它们并最终丢弃它们。被丢弃的对象必须被清理掉,这就是垃圾收集器的工作。一个正常工作的Java垃圾收集器是你的应用程序健康的关键,因此也是Apache Tomcat健康的关键。
你需要密切关注收集次数和收集时间--特别是上述指标中的一个或两个发生的峰值。将这种峰值与请求数的增加联系起来,有可能告诉你这只是一个流量增加的问题。但是,如果你不能把峰值与任何特定的指标联系起来,这种事件可能表明代码效率低下,甚至是Java内存泄漏。
Apache Tomcat的指标
Apache Tomcat本身通过JMX公开指标。在你的Tomcat实例中,有相当多的指标可以被监控,但有些指标比其他指标更重要。
请求吞吐量和延时
关于请求的信息是至关重要的,可以获得关于如何处理传入请求的细节,它们有多快或多慢,有多少,等等。以下是你应该考虑的数据:
- 请求数--在Tomcat中定义的所有连接器的请求数。该指标越高,说明你的应用程序越繁忙。
- 请求处理时间--处理一个请求所需的时间。时间越低,你的请求就越有效。高处理时间意味着处理速度很慢。如果你没有预料到这一点,这可能是值得关注的事情,因为有些应用程序代码只是很慢,或者有一个基础设施问题同时发生。你可能想在这个指标上设置一个警报,当时间超过一个定义的阈值时通知你。
- 最大请求时间--Tomcat处理一个请求所需的更长的时间。这个指标显示了你的Tomcat实例正在处理的性能最低的请求。你应该密切关注它,因为它有可能指出请求处理的问题。
线程池和执行器
Tomcat执行的每个请求都需要一个线程来处理。为了控制处理,Aache Tomcat维护线程池和执行器,这取决于配置,这有助于你了解内部资源的利用情况。下面是Tomcat暴露的关键线程池 指标:
- 当前繁忙的线程 - 当前正在被飞行中的请求使用的线程数量。
- 最大线程- Tomcat可以同时运行的最大线程数。
当Tomcat使用执行器时,你应该监控以下指标:
- 活跃计数- 用于处理的活跃线程数。
- 最大规模--可并发运行并用于请求处理的最大线程数。
无论你使用的是执行器还是线程池,你应该关注的指标是活动线程的数量。我建议在这里有两个独立的警报--一个是当活动线程数达到最大线程数的80%左右时,将触发警告严重程度,第二个是当活动线程数达到90%时,触发高严重程度的警报。这些值可能会有所不同,取决于你在Tomcat上运行的应用程序的关键任务是什么--确保根据你的使用情况来调整它们。
错误
错误给我们提供了关于Apache Tomcat实例本身的问题、由它驱动的应用程序的错误、客户端、甚至是JVM本身的问题。当涉及到错误时,我们可以从Tomcat JMX中获得最重要的指标如下。
- 错误计数- 服务器在处理请求时产生的错误数量。你应该注意这些,并检查任何异常情况。如果错误的数量猛增,你应该尝试把它与最近的部署、新功能或增加的流量联系起来,这可能是造成这种情况的原因。
一些关于错误的关键信息也不能通过JMX获得。像内存不足、服务器端和客户端的错误,只能在日志中获得。你需要一个专门的日志集中化解决方案和指标监控来全面了解Tomcat内部发生的事情。
你如何监控性能:最佳的Apache Tomcat监控工具
现在我们知道了需要研究哪些指标,我们终于可以看看有哪些工具可以帮助你监控Apache Tomcat,让你充分观察。
1.Sematext

Sematext监控是一个全栈式的监控平台,它提供了有效监控Apache Tomcat所需的所有功能和指标。有了这个多合一的工具,你可以得到预先建立的、可定制的仪表盘,以映射出Tomcat环境中所有组件的指标--Tomcat本身、Java虚拟机和操作系统。Sematext具有强大的警报功能,可以帮助你避免花时间不断关注你的系统正在发生什么。
功能特点
- 自动发现Apache Tomcat实例和它们的日志,给你一个更深入的概述。
- 易于在任何地方部署,从裸机或虚拟机到Docker和Kubernetes。
- 支持各种环境,如裸机、虚拟机和容器,无论你选择何种技术,都能轻松监控Tomcat。
- 自动发现,自动识别Apache Tomcat服务,使你在启动时就可以不费吹灰之力进行监控。
优点
- 异常检测和警报的重要性,使其很容易被告知必要的Apache Tomcat指标变化,如响应时间。
- 通过自动发现的快速和简单的设置,使得开始监控Tomcat非常简单,无论环境是静态的还是可扩展的。
- 支持日志和真实用户监控,当你需要将平均响应时间或高数量的飞行线程等指标的峰值与流量的增加联系起来时非常有用。
缺点
- 对事务追踪的支持有限,无法查看从前端开始到数据存储结束的事务。
- 缺少全功能的分析器。
价格
Sematext的定价很简单,但非常灵活。你可以根据你的需求和要求,有不同的计划。Tomcat的性能监测是按小时计费的,这使得它适用于静态和动态环境的设计和配置,以扩大和减少规模。它的标准计划从每个代理每小时0.005美元开始,监测数据保留7天。
2.2.Nagios

Nagios是市场上最古老、最知名、最成熟的Tomcat监控工具之一,它提供开源和商业企业解决方案,分别是Nagios Core和Nagios XI。Nagios Core是基于Linux的,由于它在构建时考虑到了可扩展性,并且通过官方和社区开发的扩展支持对其他各种技术的监控,因此获得了广泛的关注。
特点
- 可扩展的架构,有许多官方和第三方插件支持Apache Tomcat等技术。
- 问题补救功能使管理任务自动化,如Tomcat在内存不足的情况下重新启动。
- 具有升级功能的警报确保在你的Tomcat驱动的应用程序中开始发生的500s将被立即传递给适当的人。
优点
- 可用性报告可以很容易地确保你的任务关键型Tomcat驱动的应用程序的SLA得到满足。
- 对所有关键任务的基础设施元素进行全面监控,使其成为排除Apache Tomcat问题时的一个单一地点,而不仅仅是。
- 具有用户友好许可证的开源解决方案。
缺点
- 需要一个外部插件来监控Apache Tomcat并提供所有必要的指标。
- 为了对Tomcat实例有充分的可见性,你需要设置多个插件,而且你需要相当多的手工工作来使一切正常工作。
价格
基本的Nagios Core是免费的,可以无限制使用。Nagios XI是Nagios功能更丰富的版本,有两个不同的版本--标准版每100个节点起价1995美元,企业版起价3495美元。
3.Zabbix

Zabbix是一个开源的监控工具,允许监控你所有的Apache Tomcat实例。它很受欢迎,因为它支持大量的集成,从而为你提供了一个单一的玻璃窗来监控基础设施内的各种技术。通过它的多系统代理,你可以监控Tomcat,无论它在什么样的环境中运行,并根据收集的指标创建警报。通过其基于模板的设置和自动发现,你甚至可以加快最大的设置。
特点
- 强大的仪表盘功能,可以在一个地方收集必要的Apache Tomcat指标,以便在一个地方全面查看。
- 基于模板的主机管理和自动发现,用于监控承载大量动态变化的Tomcat实例的大型环境。
- 支持电子邮件、短信、Slack、Hipchat和XMPP的开箱即用的通知功能,使你在配置警报时有许多选择,以便将它们传递给适当的利益相关者。
优点
- 轻量级代理使其成为在Tomcat上运行的关键任务应用程序的完美选择。
- 支持所有相关的基础设施组件,使你对影响Apache Tomcat性能的所有关键因素有全面的了解。
- 开放源代码,有强大的社区和商业支持。
缺点
- 最初的设置和配置可能比较麻烦,需要手工操作。
价格
Zabbix是开源的,没有许可证费用。
4.Tomcat管理器

Tomcat Manager是一个包含在Apache Tomcat发行版中的应用程序,允许在一个地方管理应用程序和主机。当涉及到监控时,Tomcat管理器的Web界面允许查看基本的JVM指标和通过JMX暴露的Tomcat指标。
特点
- 对当前Tomcat状态的开箱即用的可见性,如JVM的内存信息。
- 提供对当前活动的线程及其状态的查看。
- 允许查询Apache Tomcat暴露的JMX指标,以便快速访问我们需要的信息。
优点
- 易于使用 - 只需要少量的配置 - 调整用户证书和角色。
缺点
- 缺乏对历史指标的可见性,使得它作为一个完整的监控解决方案的用途非常有限。
- 缺少图形化的指标表示。
价格
Tomcat Manager没有定价,因为它是与每个Apache Tomcat分发包捆绑的免费应用程序。
5.JavaMelody

JavaMelody是一个开源的、获得Apache 2.0许可的监控应用程序,你可以和你的应用程序一起部署,以实现Tomcat监控。它易于集成和轻量级,不需要任何外部数据存储或代码仪表。使用JavaMelody,你可以得到一组预定义的计数器,如传入的HTTP请求,错误和警告的数量,以及围绕Java虚拟机内存使用和CPU使用的指标。
特点
- 提供有关Tomcat所运行的Java虚拟机的必要指标。
- 请求统计,包括由Apache Tomcat处理的飞行请求的详细信息。
- 总结Tomcat内部发生的错误,方便识别最常见的错误,以便快速解决。
优点
- 成熟、稳定,开销很低,不需要额外的数据存储来操作。
- 可以访问JavaMelody本身观察到的指标和Tomcat通过JMX接口报告的指标。
- 丰富的插件允许你将JavaMelody作为Tomcat和其他限制技术栈的Java EE技术的监控解决方案。
缺点
- 警报需要自定义脚本。
- 与更现代的解决方案相比,界面可能被视为过时。
价格
JavaMelody是一个开源的、经Apache许可的应用程序,你可以使用它而不需要任何许可费。
6.JConsole

JConsole是一个用于本地和远程Java虚拟机实例的图形化监控工具。它利用了Java管理扩展技术,并提供了对通过它暴露的数据的洞察力。这完全适用于临时性的Apache Tomcat监控,因为它通过JMX暴露其指标。虽然相当简单,但如果你能访问JVM实例,它是一个有效的解决方案,可以深入了解运行中的JVM实例。
特点
- 对Apache Tomcat正在运行的基本JVM指标的基本看法,如JVM线程数和JVM堆的使用。
- 图形化显示JVM的基本指标。
- 实时查看通过JMX暴露的Tomcat指标,如Tomcat中的错误数量。
优点
- 使用简单、快速。
- 提供对基本JVM指标和Tomcat实例的洞察力,以便快速解决问题。
缺点
- 要获得监测数据,你需要访问JVM实例,以便你能连接到它。
- 不能查看趋势和历史数据,因此对Tomcat指标的事后分析不是很有用。
- 绘图能力有限。
价格
Jconsole是一个免费的Tomcat监控工具,因为它是Java开发工具包分发包的一部分。
7.AppDynamics

AppDynamics提供的监控工具是以Apache Tomcat为第一流的公民。它以软件即服务和内部部署的形式提供,无论你在什么环境下运行你的实例,它都提供对Tomcat性能监测的支持。通过AppDynamics,你可以访问Tomcat通过JMX公开的任何指标,并对其发出警报,使你对你的环境中运行的每个实例有充分的了解。
特点
- 从用户界面和JVM内存池可以看到Tomcat暴露的所有JMX Bean。
- 通过电子邮件模板和周期摘要功能发出警报,带来关于问题原因的详细信息。
- 查看所有Apache Tomcat的启动参数。
- 代码级的可视性和自动诊断,以快速排除与Tomcat内部运行的应用程序有关的错误。
优点
- 机器学习支持的异常检测和根本原因分析功能,可快速解决问题。
- 高达代码级的洞察力,便于检测问题是否与Tomcat或使用它的应用程序有关。
- 对系统组件、环境元素、端点响应时间和业务交易之间的连接的可见性。
缺点
- 复杂和非常高的定价,针对具有更多传统高接触销售策略的大型企业。
- 最低价格的计划不包括一些基本指标,如网络利用率、内存或系统CPU,对Apache Tomcat的性能提供有限的概述。
- 需要手动设置 - 需要下载和启动代理等操作;没有单线安装和设置命令。
价格
价格取决于CPU核心的数量和你选择的计划。针对美国地区的Apache Tomcat完全可见性的计划包括应用性能和基础设施监控,并被列为每个CPU核心60美元/月。
8.8.Datadog

Datadog是一个全面的软件即服务监控解决方案,具有Apache Tomcat监控功能。默认配置提供了你需要的基本Tomcat指标,以了解你的实例的性能。为了提高可视性,你可以配置代理来收集额外的指标和日志。该工具具有基于机器学习的异常检测和警报功能,可以帮助你消除警报疲劳,并关注有关Apache Tomcat实例的重要信息。
特点
- 与Tomcat相关的整体指标,如错误计数、请求计数和请求处理时间,让你对请求的速度有一个概览。
- Tomcat线程池指标,包括可用线程数和繁忙线程数的信息,显示你的Tomcat实例的占用情况。
- Apache Tomcat servlet的处理时间。
- 异常检测的警报。
优点
- 支持Apache Tomcat与默认代理包的整合。
- 日志集中化和分析在同一个代理中,所以你可以监控Tomcat的指标和日志,并将它们联系起来 - 例如,将请求高峰与内存不足的错误联系起来。
- 仪表板框架,用于建立Tomcat定制的可视化,结合指标和日志,并与团队分享这些。
- 网络和主机监控,对你的Apache Tomcat实例运行的环境有充分的了解。
缺点
- 如果你想验证和调整所提供的Tomcat示例配置,初始安装过程可能会让人不知所措。
- 预制的、开箱即用的仪表板可能无法为你提供全面的可视性,这意味着你必须花时间调整它,以获得对你的Apache Tomcat实例的全面可视性。
价格
Datadog的定价根据你使用的解决方案的不同部分而不同。如果你只需要基本的Apache Tomcat监控,你可以选择应用性能监控。该计划按年计费时,每月31美元/主机,按月计费时,每月36美元/主机。
9.Dynatrace

Dynatrace是一个支持Apache Tomcat的全栈观察性工具。它提供了一个强大的和用户友好的方法来监控你的Tomcat实例,支持所有常见的运行环境,如Docker、Kubernetes和OpenShift,以及流行的云供应商,包括Amazon Web Services、Google Cloud Platform和Microsoft Azure。它为你提供端到端的可视性,通过自动发现你的基础设施元素,使每个通信路径都是可见的,并对其进行监控,从而了解各种元素之间的指标、依赖关系和合作。
特点
- 开箱即用的Tomcat监控仪表板和警报。
- 对Tomcat请求的完全可见性,显示请求执行的整个背景。
- CPU热点分析,快速了解请求处理过程中花费时间最多的地方--后台线程、调度器或Tomcat服务。
优点
- 自动发现Apache Tomcat服务,并将其依赖性可视化,以全面了解相互之间的联系。
- 带有根本原因分析的AI驱动的异常检测,提高了你在Tomcat驱动的环境中解决问题的速度。
- 支持各种各样的技术。
缺点
- 功能的数量最初可能会让人不知所措。
- 可能很快就会变得昂贵。
定价
定价是围绕功能进行的。应用性能监控的定价取决于主机和主机上的可用内存量。每16GB是一个主机单位,价格是根据一小时内的主机单位数量计算的。
10.SolarWinds Server & Application Monitor

SolarWinds Server & Application Monitor为我们这些希望在Microsoft Windows上运行内部监控解决方案的人提供对Apache Tomcat实例的监控。它提供了所有关键的Tomcat指标,并带有开箱即用的警报功能,以尽量减少查看指标的时间。凭借灵活的仪表盘和对微软生态系统的关注,如果你将Tomcat与微软产品一起运行,它是一个很好的选择。
功能特点
- 完全支持所有相关的Tomcat指标,包括错误、内存、流量和处理的数据。
- 开箱即用的警报功能。
优点
- 易于与基于微软Windows的服务集成,如用于用户管理的活动目录。
- 支持大量的技术,包括网络设备、数据库和虚拟化平台,对Tomcat运行的环境有完整的可视性。
缺点
- 只在内部模式下可用。
- 唯一支持的平台是Microsoft Windows。
价格
订阅和永久许可的价格为1275美元,可提供30天的免费试用。
11.管理Engine应用程序管理器

ManageEngine Applications Manager是一个统一的应用程序性能监控工具,支持许多应用程序。它支持Apache Tomcat的监控,无论它是独立运行,还是作为JBoss应用服务器的一部分。这个解决方案适用于所有常见的基础设施架构,包括裸机、虚拟机和容器,使得无论你使用何种运行环境,都可以轻松监控Apache Tomcat。
功能特点
- 支持通知的警报引擎,当你的Tomcat或运行在它上面的应用程序出现问题时,可以通知你。
- 每个网络应用程序的指标,向你显示与在你的Apache Tomcat内运行的每个应用程序有关的所有必要细节。
- 无论你使用哪种环境为你的业务提供动力--亚马逊网络服务、微软Azure、谷歌云平台、OpenStack或裸机,都支持Tomcat度量。
优点
- 所有必要和有用的Tomcat指标开箱即用,包括请求、内存和线程池相关指标。
- 可定制的仪表盘,以提高可见性,使你能够专注于关键的Tomcat指标。
- 热点检测,快速了解Tomcat和由它驱动的应用程序的潜在问题。
- Docker和Kubernetes的集成,使其能够轻松监控在容器化、动态环境中运行的Apache Tomcat。
缺点
- 缺少对指标和日志关联的支持。
价格
ManageEngine Applications Manager有两个定价层--专业版和企业版。两者都取决于所选择的版本、监控器的数量以及使用该产品的用户数量,并提供免费版本。
总结
如果你需要监控大量的Tomcat实例,为你的关键任务应用程序提供动力,需要以99.999%的正常运行时间启动和运行,或者如果你有一个由几十个用户使用的小型应用程序,这都不重要。有些指标是你应该注意的,而监控可以帮助你确保你不会失去对它们的跟踪。无论你最终选择哪种Tomcat监控工具,请记住,根据不同的情况,你可能需要对Apache Tomcat的指标进行临时或历史查看。
希望我们的比较能帮助你为你的具体使用情况选择合适的解决方案。