监控工具
ThingWorx 平台是基于 Java 技术开发的。本部分中介绍的诊断和监控工具旨在从 Java 虚拟机 (JVM) 收集性能指标和其他数据。使用这些工具可通过 JVM 层监控您的 ThingWorx 应用程序。这些工具从 JVM 获取以下数据:
内存操作 - 检查是否已为服务器分配足够的内存资源,以及 JVM 垃圾回收 (GC) 操作所需的时间。
线程性能 - 检查是否存在任何可能在 ThingWorx 应用程序中引起性能问题的长事务处理或线程问题。
PTC System Monitor (PSM)
PTC System Monitor (PSM) 是由 Dynatrace 提供支持的应用程序性能监控系统。对于 ThingWorx 应用程序的监控要求,PTC 对 Dynatrace 进行了自定义。PSM 为系统管理员提供了用于检测、诊断和修复影响应用程序运行状况相关问题的工具。此外,还可同时监控测试系统和生产系统。该系统不会影响 ThingWorx 应用程序的性能。此模块可作为维护合约的一部分提供,无需购买用于核心平台监控的其他许可证。
PSM 会监控在 JVM 级别发生的线程级别活动,并将此活动提取为名为 PurePaths 的专有技术。PSM PurePath 包含有关服务器上 ThingWorx 服务的执行路径和执行时间的详细信息。它还包含上下文信息,例如执行的 SQL 语句。
PSM 的功能
PSM 可用于:
在应用程序失败前增加应用程序的运行时间:
超过阈值 (例如,CPU 的使用率较高) 时发送通知。这样,管理员便可以在问题变为系统范围的问题之前采取纠正措施来解决它。
提供系统资源使用情况的历史视图。这有助于您估计系统资源的未来容量需求。
提升监控能力:
使用简化和可自定义的仪表板来汇总系统和组件的健康状况。
为各个事务、用户和服务器组件提供深入查看功能,以获得更多详细信息。
包含影响系统健康状况的问题的完整事件列表。
使用实时数据改进诊断功能:
使用 PurePath 技术实时收集诊断数据并记录历史性能指标。
因此,无需花费时间使用其他繁琐设置重现相关问题或通过 PTC 技术支持解决问题。
PSM 会连续收集并记录来自您的 ThingWorx 应用程序的实时数据,并对此数据进行较长时间的存储。通过 PSM 收集的数据可用于连续监控影响自定义应用程序的以下性能指标。这有助于开发团队或 PTC 支持服务回放导致性能问题的事件:
JVM 内存性能
使用 PurePath 时间数据的服务执行时间
操作系统内存、CPU 和数据库查询指标
ThingWorx 记录错误和其他事件
直接 JVM 监控
直接 JVM 监控工具由 Oracle 或 ThingWorx 支持工具扩展提供。这些工具可与 PSM 一同使用,以获得详细的性能数据。如果不使用 PSM,则直接从 JVM 收集数据是识别和修复性能问题的一个很好的替代方法。建议您监控 ThingWorx 应用程序的以下 JVM 诊断:
使用垃圾收集日志记录 (JVM 的内置功能) 监控内存随着时间推移的性能情况。
使用 ThingWorx 支持工具扩展的线程级别收集和分析。
监控 ThingWorx 服务器的内存使用情况
Java 虚拟机 (JVM) 在本机使用垃圾收集器 (GC) 管理自身的内存 (堆阵)。GC 用于标识和移除未使用的 Java 堆阵中的对象。您可以通过记录 GC 所收集的详细信息来监控 ThingWorx 服务器的内存使用情况。
您可以使用 GC 日志文件来标识内存消耗中的趋势。您可以根据该趋势检查是否应更改 Apache Tomcat 服务器的最大堆阵参数,以获得更好的性能。因此,建议为 Apache Tomcat 服务器上的 GC 设置日志记录。
JVM 具有在运行时调用的标志。这些标志用于写入关于 GC 事件的统计信息,例如 GC 事件的类型、事件开始时消耗的内存量、由 GC 事件释放的内存量以及 GC 事件的持续时间。
每次启动 JVM 时都会覆盖 GC 日志文件。建议您在重新启动服务器期间备份日志文件。这有助于您分析是否因内存使用情况导致服务器重新启动。
您可以使用分析工具 (例如 GCEasy.io 和 Chewiebug GC Viewer) 来分析来自垃圾收集的日志。
如何在 Linux 上设置垃圾收集日志记录 (setenv.sh)
要在 Linux 上设置垃圾收集器日志记录,请执行以下步骤:
1. 在文本编辑器中打开 $CATALINA_HOME/bin/setenv.sh 脚本。
setenv.sh 脚本文件在所有安装中均不可用。如果文件不存在,则在该位置创建一个新的 setenv.sh 文件。
2. JAVA_OPTS 变量末尾附加以下文本,并使用双引号括起。
-XX:+UseG1GC -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails
如果未在 setenv.sh 文件中指定 JAVA_OPTSsetenv.sh 文件为新文件,则在文件中添加以下行:
JAVA_OPTS=”-XX:+UseG1GC -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails”
请注意以下几点:
-XX:+PrintGC 选项将返回并内容较少的输出日志。例如,输出日志具有以下详细信息:
2017-10-10T13:22:49.363-0400: 3.096: [GC (Allocation Failure) 116859K->56193K(515776K), 0.0728488 secs]
-XX:+PrintGCDetails 选项将返回详细的输出日志。例如,输出日志具有以下详细信息:
2017-10-10T13:18:36.663-0400: 35.578: [GC (Allocation Failure) 2017-10-10T13:18:36.663-0400: 35.578: [ParNew: 76148K->6560K(76672K), 0.0105080 secs] 262740K->193791K(515776K), 0.0105759 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
3. setenv.sh 脚本的末尾添加以下行。在启动 Apache Tomcat 服务器之前,此代码会自动将现有 gc.out 文件备份到 gc.out.restart 中:
# Backup the gc.out file to gc.out.restart when a server is started.
if [ -e "$CATALINA_HOME/logs/gc.out" ]; then
cp -f "$CATALINA_HOME/logs/gc.out" "$CATALINA_HOME/logs/gc.out.restart"
fi
4. 保存对文件所做的更改。
5. 使用适用于您的操作系统的服务控制器重新启动 Apache Tomcat 服务。
如何在 Windows 上设置垃圾收集日志记录 (Apache 服务管理器)
要在 Windows 上设置垃圾收集器日志记录,请执行以下步骤:
1. 在 Windows 资源管理器中,浏览至 <Tomcat_home>\bin
2. 启动名称中包含 w 的可执行文件。例如,Tomcat<version number>w.exe
3. 单击 Java 选项卡。
4. “Java 选项”字段中,添加以下行:
-Xloggc:logs/gc_%t.out
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
有关 -XX:+PrintGC-XX:+PrintGCDetails 选项之间的信息,请参阅如何在 Linux (Setenv.sh) 上设置垃圾收集日志记录一节。
5. 单击“应用”以保存对服务配置所做的更改。
6. “常规”选项卡中,单击“停止”
7. 单击“启动”以重新启动 Apache Tomcat 服务。
新的垃圾收集日志会写入 %CATALINA_HOME%\logs\gc_<Tomcat_Restart_Timestamp>.out 文件。
使用支持工具扩展收集诊断数据
ThingWorx 支持工具扩展用于收集 ThingWorx 技术支持的信息。在对 ThingWorx 应用程序中的问题进行故障排除时,将使用此信息。该扩展会收集以下诊断数据:
Java 线程转储 - 有关在特定时间内于 Java 虚拟机上运行的所有线程的详细信息。该数据可以记录指定期间内的线程活动。
Java 堆阵转储 - 有关在特定时间内位于 Java 虚拟机堆阵空间中的所有对象的详细信息。
PTC 建议您在 ThingWorx 实例上安装此扩展。可在 support.ptc.com 中的“PTC 软件下载”页面下载该扩展。
VisualVM 和其他 JMX 监控工具
VisualVM 是用于为 Java 应用程序收集数据的监控工具。您可以使用 VisualVM 来监控 ThingWorx 应用程序。此工具会收集有关内存和 CPU 使用情况的信息。此外,还会生成和分析堆阵转储并追踪内存漏失问题。您可以收集本地运行或在远程计算机上运行的应用程序的数据。
VisualVM 可提供一个界面,使您能够以图形方式查看有关 Java 应用程序的信息。
VisualVM 会与 Java JDK 一同使用。有关 VisualVM 连接设置的详细信息,请参阅 ThingWorx 帮助中心中的 (《Apache Tomcat Java 》) Apache Tomcat Java 选项设置部分。
使用 Java 管理扩展 (JMX) 与 JVM 集成的其他工具也会提供类似的监控功能。
VisualVM 会捕获可影响应用程序性能的以下关键指标:
JVM 内存性能
执行线程所需的时间
操作系统的内存以及 CPU 指标
数据库连接池监控
VisualVM 会追踪大约 20 分钟以内的实时数据。
ThingWorx 应用程序日志监控
ThingWorx 应用程序日志应定期进行监控,以了解错误或其他异常操作。错误可出现在平台层或与 ThingWorx 一同使用的自定义脚本中。建议您每天对错误日志中的消息进行审阅。
配置用于写入错误堆栈追踪的 LoggingSubsystem 选项
LoggingSubsystem 中的“启用堆栈追踪”选项会将错误消息和关联的堆栈追踪写入日志文件。默认情况下,未将 LoggingSubsytem 配置为将堆栈追踪 (调用堆栈) 写入磁盘。将“启用堆栈追踪”选项设置为可将异常和错误消息的调用堆栈写入 ThingworxStorage/logs 文件夹中的文件 ErrorLog.log。建议在调试错误时将此选项设置为包含堆栈追踪中的函数调用详细信息。
保留应用程序日志
日志级别可确定应在日志中显示的细节数量。除非您正在对问题进行故障排除,否则建议将应用程序的日志级别保持在最小详细级别,例如“信息”“警告”。将日志详细级别增加至“调试”“追踪”“全部”时,请务必小心。这会对 ThingWorx 的性能产生负面影响。如果平台上的可用资源不足,则可能会导致应用程序出现不可预见的行为。
日志将作为单独的文件保存在服务器上的 /ThingworxStorage/logs 文件夹中。日志将存档至 logs 文件夹内的 archives 文件夹中。日志轮替规则将以文件大小以及日志记录子系统的“日志保留设置”中设置的时间配置为基础。这些设置可在运行时进行更改和应用。
您可以在“系统” > “子系统” > LoggingSubsystem > “配置”中指定下列滚动更新配置:
文件大小 - 当日志文件的大小达到或超过“文件大小上限 (KB)”字段中定义的大小时,将对其进行存档。日志的默认文件大小设置为 100000 KB。可设置的最大文件大小为 1000000 KB。
时间 - 当触发日志事件时,文件将在每天午夜滚动更新。这些日志将移动到 archives 文件夹中。默认情况下,如果日志在 archives 文件夹中超过七天,则会被删除。默认值可在“存档最大天数”字段中更改。您可以指定 1 至 90 天。
监视日志大小至关重要。通过首先备份文件或在包含过时信息时放弃这些文件,以一致的方式清除日志文件。