如何设置在线网络服务跟踪(Grafana?)

How to set up tracking of online web service (Grafana?)

我正在开发一项新的 Web 服务,许多事件将在 MySQL 数据库中注册。这个想法是用户将更改 "tickets" 的状态,这将全部记录在这个 MySQL 数据库中。

然而,开发该项目的一个关键点是能够准确跟踪用户的行为以及 "tickets" 打开的数量和他们的状态变化。为此,我相信应该实施某种跟踪,但我不太确定如何进行。

我作为用户使用过Grafana,所以我认为它可以提供所需的部分基础设施。但是,我不知道如何将数据传递给 Grafana 的细节。我听说过 InfluxDB 和 Graphite,但我不太确定它们是什么、它们如何工作以及它们与普通 MySQL 数据库的关系。

有人可以详细解释如何从简单的 MySQL 网络服务数据库开始进行跟踪,该数据库在每个时刻注册 "tickets" 的当前状态吗?

谢谢!

Graphite 和 InfluxDB 都是时间序列数据库,它们旨在有效地存储随时间变化的一系列数值。对于您所描述的应用程序,您希望使用 statsd 从您的应用程序接受数据并将其存储在 graphite 或 influxdb 中,以便 grafana 可以查询它。

举一个具体的例子,假设您想跟踪一段时间内的工单总数。无论您使用何种语言,您都可以使用 statsd 客户端来检测打开新票证的代码,并更新跟踪票证总数的仪表值,例如:

statsdClient.gauge('tickets.total', 123.45);

通过对其他计数(tickets.open 等)执行相同的操作,您可以在时间序列数据库中创建多个序列来跟踪您感兴趣的指标随时间变化的值,然后你将能够在 grafana 中绘制它们。