3 个不稳定版本
0.2.0 | 2020 年 6 月 15 日 |
---|---|
0.1.1 | 2020 年 5 月 25 日 |
0.1.0 | 2020 年 5 月 19 日 |
#2911 在 命令行工具
17MB
2K SLoC
panopticon-tui
Scala 应用程序的终端 UI 可观测性和诊断工具。
目前支持
- ZIO-ZMX
- Slick + HikariCP(通过 JMX)
- Akka Actor 度量(通过 akka-periscope)
用法
先决条件
您需要安装 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-zmx
选项指定 zio-zmx 服务器地址。在这种情况下,Panopticon 将连接到它并显示 ZMX 选项卡
panopticon-tui --zio-zmx localhost:6789
⚠️ 警告:目前,zio-zmx 不提供获取纤维计数度量的有效方法,因此 Panopticon 必须在每个滴答中执行完整的纤维转储来计算它们。请确保您的 tick-rate
不会太频繁。
通过 JMX 的数据库度量
如果您的应用程序通过 JMX 公开了它们,Panopticon 可以显示数据库度量。目前仅支持 Slick 和 HikariCP。
如果您指定这两个选项,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-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