如何存储我的网络应用程序的指标?

Posted

技术标签:

【中文标题】如何存储我的网络应用程序的指标?【英文标题】:How to store metrics for my web app? 【发布时间】:2011-06-18 02:21:43 【问题描述】:

我需要为我的网络应用存储更多指标。用户行为和其他条件需要随着时间的推移进行跟踪和比较。

有些记录有与之关联的时间戳,有些则没有。因此,对指标的按需查询可能并不总是合适的。我认为需要的是我编写然后存储在某处(数据库?文件?)的某些分析查询(通过 cronjob?)的快照(每天?)。

现在,如果我要将这些快照保存在数据库中,我会担心它们的大小。它将如何影响我的应用程序的性能?

管理员应该能够在网络仪表板上查看这些分析。想象一下每天存储 100,000 多行数据的状态......然后经常查询它们以进行分析。

还有其他存储和查看指标的好方法吗?我正在为我的应用程序使用 LAMP 堆栈。还使用 Google Analytics 和其他 3rd 方指标跟踪工具,但不足以跟踪我的应用的专业统计数据。

【问题讨论】:

您能否更具体地说明您需要存储的内容的性质,以及实际有多少数据?它对性能的影响取决于占用空间的大小。 例如:我们可能想要跟踪每天更改个人资料设置的用户数量。我可以在他们上次更新用户表中的个人资料时添加时间戳,但这并没有向我显示任何历史记录。这只是一个简单的例子。更复杂的可能包括:不同表上的 SQL 连接,然后随着时间的推移需要这些类型的查询结果。 也许这个问题/答案可以帮助你***.com/questions/2672178/…。 第三方 OLAP 解决方案会解决这个问题吗?这是朋友向我推荐的。将调查它以获取更多详细信息。 【参考方案1】:

如果它是密集的,我会为快照设置一个单独的数据库(可能在一个完全不同的服务器上)。如果管理员要在 Web 界面中查看它们,我可能会坚持使用数据库。这样您就可以运行基本分析信息的快照,然后您可以构建一个单独的界面/应用程序来进一步查询该数据并呈现它。

正如 Calvin 在他的评论中所说,最好有一些你正在记录的数据的例子,以及你认为每天会有多少数据。该信息可能会改变我的想法。

【讨论】:

假设我有一个用户表。并且用户有一列存储他们当前的现金余额。该现金余额将随着时间的推移而波动。但我想跟踪所有用户随时间的变化。 正如您所建议的,OLAP 多维数据集可能是一种解决方案。也许我有点偏见,但是看看icCube.com 欢迎您在我们的论坛中发布架构/设计问题。 现在使用简单的 mysql 解决方案,在单独的数据库上构建星型模式并运行每日脚本以加载指标数据。

以上是关于如何存储我的网络应用程序的指标?的主要内容,如果未能解决你的问题,请参考以下文章

我的网络应用程序用户如何单击按钮来播放本地存储的 mp3 文件?

计算机网络性能指标

程序性能指标

如何在 java 程序中收集 Prometheus 指标?

如何在应用程序类中获取屏幕显示指标

如何将 mule(基于 Java)日志推送到 Prometheus 存储?