#monitoring #metrics #scala #tui

app panopticon-tui

Scala 应用程序的终端 UI 诊断工具

3 个不稳定版本

0.2.0 2020 年 6 月 15 日
0.1.1 2020 年 5 月 25 日
0.1.0 2020 年 5 月 19 日

#2911命令行工具

GPL-3.0 许可证

17MB
2K SLoC

panopticon-tui

CI crates.io

Scala 应用程序的终端 UI 可观测性和诊断工具。

目前支持

用法

先决条件

您需要安装 Java(它由 jmx crate 动态加载)。

示例

这里有一个完整的示例,展示了如何将实际项目调整为与 panopticon 一起工作。 查看它 以了解如何操作。

运行 Panopticon

要获取您操作系统的二进制文件,请检查 发布 页面。

Panopticon 已发布到 crates.id,因此如果您已安装 Rust 工具链,您可以使用 cargo install panopticon-tui 运行它,并将为您构建可执行文件。

您也可以从源代码构建它

cargo build
./target/debug/panopticon-tui [OPTIONS]

要获取详细帮助信息,请运行

panopticon-tui --help

⚠️ MacOS 和 libjvm.dylib

在 MacOS 上,您可能会遇到以下错误

dyld: Library not loaded: @rpath/libjvm.dylib
  Referenced from: panopticon-tui
  Reason: image not found

这意味着用于 JMX 集成的 j4rs 无法找到您的 Java 安装。

要修复此问题,只需创建指向 libjvm.dylib(此方法适用于 JDK 11 和 MacOS 10.15.4)的符号链接

sudo ln -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib

根据您的 MacOS 版本或 java 包,位置可能不同,请确保符号链接有效。

连接到 zio-zmx 服务器

ZIO-ZMX 是用于监控基于 ZIO 的应用程序的工具。使用 Panopticon,您可以可视化纤维树并监控它们的数量

ZIO tab demo

您可以使用 --zio-zmx 选项指定 zio-zmx 服务器地址。在这种情况下,Panopticon 将连接到它并显示 ZMX 选项卡

panopticon-tui --zio-zmx localhost:6789

⚠️ 警告:目前,zio-zmx 不提供获取纤维计数度量的有效方法,因此 Panopticon 必须在每个滴答中执行完整的纤维转储来计算它们。请确保您的 tick-rate 不会太频繁。

通过 JMX 的数据库度量

如果您的应用程序通过 JMX 公开了它们,Panopticon 可以显示数据库度量。目前仅支持 Slick 和 HikariCP。

Slick tab demo

如果您指定这两个选项,Slick标签将在Panopticon中显示

panopticon-tui --jmx localhost:9010 --db-pool-name myDb

这里 db-pool-name 是连接池名称,用于指定Slick和/或HikariCP的JMX Bean。

有关如何设置您的应用程序以通过JMX公开数据库指标的详细信息,请参阅Slick文档的本部分

请注意,您需要在启动时指定一些JVM参数,以便您的应用程序公开JMX指标。以下是一些类似参数的示例

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.rmi.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

Akka指标

Panopticon还可以为基于Akka的系统提供一些有价值的功能

  • 显示某些actor系统下的整个actor树;
  • 实时监控actor总数;
  • 显示已发送到“死信”队列的最新消息的详细信息;
  • 实时监控死信总数。

Akka tab demo

然而,要使用这些功能,您必须在应用程序中启用此数据的发布。有一个名为akka-periscope的库,专门用于此目的。查看其README以获取有关如何设置的详细信息。

目前仅支持HTTP传输方式。要使用它并查看单独标签上的actor数据,请使用以下选项启动Panopticon

panopticon-tui --actor-tree http://localhost:8080/actor-tree --actor-system-status https://127.0.0.1:8080/actor-system-status --dead-letters https://127.0.0.1:8080/dead-letters

将端点URL替换为您使用akka-periscope设置的URL。

从源代码构建

开发构建

cargo build

优化后的发布构建

cargo build --release

依赖关系

~19–35MB
~567K SLoC