gpt4 book ai didi

java - 什么是用于收集/存储/呈现应用程序指标/统计的 java 库?

转载 作者:IT老高 更新时间:2023-10-28 21:03:53 26 4
gpt4 key购买 nike

我有一个 Java 应用程序,它需要收集和报告关于各种实体的大量指标/运营测量/统计数据(不同的人使用不同的词 - 我将只使用指标)。指标可以是以下之一:

  1. 某个特定时间点的一些测量数值(当前登录系统的用户数,某些资源的利用率百分比)
  2. 给定时间间隔内的一些测量数值(过去 5 分钟内传输的消息数)
  3. 某个特定时间点的某个枚举值(某个实体的健康状态为 ONLINE/WARNING/FAILED/OFFLINE)

“实体”可以是物理设备(计算机、交换机、调制解调器),但通常是逻辑实体(通信 channel 4567、用户 123456、服务 A 的接口(interface))。此外,这些逻辑实体中的一些是静态的,因为它们是提前知道的,并且在应用程序的生命周期内不会改变,而其他的可能是暂时的(通信 channel 4567 可能只存在一段时间,然后被删除) .

我正在寻找有助于解决 2 个问题的库:

  1. 更容易收集这些信息并将其存储在服务器上。
  2. 以有用的方式向用户展示数据。

注意/要求:

  1. 产生数据的服务器应用程序基本上是一个作为守护进程运行的 Java 进程(即不是 web 应用程序)
  2. 将有 2 种不同类型的客户。
    1. 其中一个是 Java Swing 桌面应用程序,大部分“重度”使用都将用于该应用程序。丰富的实时图表和历史查询能力在这里很重要。
    2. 另一个是网页界面。我的要求在这里还不是 100% 明确,但是这个客户的需求将比 Swing 客户轻得多。这里需要开放标准(AJAX/HTML 而不是 Flash)
  3. 可以嵌入到专有软件中进行部署(即没有 GPL 许可)。商业或免费。

过去,我的公司曾尝试过几种“本土”解决方案来满足这一需求。基本上,数据以某种不一致的方式被插入数据库,客户端将数据提取出来,并能够使用自制或第 3 方图表包在固定时间段内绘制单个值。坦率地说,我们所有的解决方案都很糟糕。我希望第三方解决方案可以解决的一些问题是:

  1. 封装用于更新/记录指标的代码,以免污染实际测量值的类。
  2. 帮助管理指标的命名/识别。它们很容易有1000个;我自己想出了某种命名方案以确保唯一性是 PITA。
  3. 很好地处理历史数据。能够配置数据的保留时间以及归档或清除旧记录。
  4. 在客户端,内置图表和查询功能,能够在呈现给用户之前转换数据库中的一些原始数据。

抱歉,描述太长了。感谢您的帮助。

最佳答案

我可以推荐 Yammer 的这个 Java 库:https://github.com/dropwizard/metrics它提供了一个很好的 API 来拥有计数器、计时、直方图等。它可以通过检测 servlet 和 JVM(内存等)自动从 servlet 收集有趣的数据。

然后我们将数据存储在 Graphite 中:http://graphite.wikidot.com/

Graphite 将数据存储在类似于 RRD 的固定大小的数据库中,并且可以生成图表和仪表板。

关于java - 什么是用于收集/存储/呈现应用程序指标/统计的 java 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com