使用Prometheus监视Memgraph的绩效指标
#database #memgraph #graphdatabase #prometheus

有效的数据库管理是任何成功的应用程序或业务操作的核心。随着数据变得越来越重要,确保数据库基础架构的性能,可靠性和安全性变得至关重要。这是强大的监视实践发挥作用的地方,提供有关数据库内部工作的见解。

在本文中,我们将讨论Memgraph如何与Prometheus集成,Prometheus是一个时间序列数据库,启用其他数据库和应用程序,以及时监视和对系统的性能变化。

为什么要监视数据库性能?

监视具有Prometheus的Memgraph之类的图形数据库为表带来了一些好处。主要优点之一是它为数据库的性能和健康提供了实时可见性:Prometheus收集和分析查询响应时间,内存使用情况,磁盘I/O和交易率等指标,从而使您可以监视数据库的性能在颗粒状层面。这种可见性有助于识别瓶颈,优化查询执行并确保有效的资源分配。

其次,Prometheus实现主动的问题检测和解决。有了警报规则,当图形数据库中的预期行为异常或偏差时,您可以及时收到通知。访问类似的警报机制可以使您在影响应用程序性能或用户体验之前快速识别和解决潜在的问题。

最后但并非最不重要的一点是,使用普罗米修斯监视图数据库有助于容量计划和可扩展性。通过跟踪资源利用度指标,您可以分析趋势并做出有关扩展数据库基础架构以满足需求的明智决定。

performance metrics

关键数据库性能指标

这里有几个指标,可以关注:

RAM内存使用

RAM内存使用是主要问题,因为MEMGRAPH是一个内存图形数据库。内存数据库的潜在问题是查询使用太多内存以至于无法执行。因此,拥有一个监视工具,例如Prometheus,可以确保此类情况的准时可见性,从而使您可以及时识别次优的查询并重写以防止记忆力浪费。

查询执行延迟

尽管Cypher是图形数据库最广泛使用的查询语言,但企业公司并不总是很快采用它。开发人员有时可能会努力编写最佳和性能的Cypher查询。当query planner无法确定执行查询的最快途径时,开发人员和数据库管理员可以意识到可以以不同的方式写出查询以减少查询执行延迟并增加MEMGRAPH上的查询吞吐量。仪表板上的比平常的延迟性能度量指标更高,可以及时提醒您做出正确的决定并保留您的系统响应时间。

快照恢复延迟

对于大型数据集,鉴于整个数据集需要将内存加载到内存中,快照恢复可能会花费大量时间。 Memgraph的2.8版本引入了快照的多线程恢复,使用户可以针对系统中最佳行为恢复数据库。通过监视平均快照恢复时间,您将能够在重新启动并调整performance flags时检查MEMGRAPH实例的停机时间。

连接和交易

监视连接和交易在执行繁重的生产负载时很有用。如果数据库隔离级别较高并且写入冲突的数量上升,则并发交易的数量可以暗示如何减轻数据库上的负载。某些解决方案正在降低隔离级别,降低了应用程序级别的连接数量,依此类推。

这些只是Memgraph暴露的一些指标,但是其中有更多的指标揭示了有关流,触发器,索引,查询执行操作员等的信息。

在Memgraph中如何暴露指标以启用监视?

使用Prometheus在生产系统中进行监控的上述好处,与IT进行集成是完全有意义的memgraph。考虑到这一点,我们开始了实施工作。

如何测量系统的不同部分

当我们开始设计监视功能时,第一个决定是定义所有可以测量的内容。通常,我们向最终度量收集系统暴露的信息越多,就越好。对于图形数据库,有用的信息将包括有关:

的指标
  • 磁盘用法
  • 内存用法
  • 连接
  • 交易
  • 触发器
  • 索引
  • 客户端和服务器之间的消息
  • 查询执行时间
  • 快照创建/恢复时间
  • 操作员调用
  • 图形算法调用

还有一件事要考虑:我们暴露的每个度量标准的类型。例如,RAM内存使用当然是我们可以随时查找并返回的价值。图算法调用的数量是随着时间的推移而增加的。查询执行延迟还需要测量并汇总为有意义的凝结分布。为此,我们设计了3种类型的指标,我们可以在系统中跟踪信息:

  1. 量规代表系统中的单个值,可以随时设置(例如,磁盘用法)。 gauge
  2. 计数器代表一个可以根据系统中事件(例如,系统中的活动交易数量)来增加和减少的值。 counter
  3. 直方图随时间(例如,潜伏时间)提供了测量变量的分布。 histogram

要考虑的最后一点是提供有关直方图分布的足够信息。从分布中获取几个百分点并收集它们,而不是在暴露指标时提供整个分布,这通常是一个好习惯。考虑到这一点,我们决定在查询延迟和快照创建/恢复时间的第50、90%和第99个百分位数中。

与普罗米修斯与代理直接集成

实施了核心指标,要考虑的下一步是如何揭示相同的指标。需要遵循的一个硬约束是普罗米修斯使用拉动模型,它会定期从配置的目标刮擦指标。

当然,由于一长串的client libraries,人们可以直接与Prometheus整合。但是,这将耦合到集成,使其无法在其应用程序中使用指标。情况就是如此,因为Prometheus使用自己的数据格式尽快将其摄入时间序列数据库中。此外,一些公司可能选择了其他监视应用程序来观察其整个系统(例如,例如Graphite)。

Prometheus再次以称为exporters的概念进行了营救。普罗米修斯出口商是一种软件组件或模块,以易于被Prometheus刮擦和摄入的格式收集和揭示指标。它是目标系统或应用程序与普罗米修斯之间的中介,使Prometheus可以收集相关指标进行监视和分析。

这使应用程序可以使用简单的HTTP端点并使用get请求来揭示该指标,从而使我们在最后选择了指标。

下面的图像在使用普罗米修斯出口商时描绘了终点:

how it works

最终结果:一眼可观察的系统

整理步骤是将Prometheus与仪表板工具(例如Grafana)连接起来,Grafana是一个富含功能的分析和可视化平台,可让您根据Memgraph的裸露指标创建和显示交互式仪表板,图表和图形。这是对将MEMGRAPH集成到此完整的E2E监视系统中时可以利用的东西的一瞥。

end result

所有考虑的事物,Prometheus与Memgraph的集成使我们的客户和用户一般可以在运行Memgraph时始终对系统性能指标获得更多信心。它还使跟踪历史系统指标成为可能,使我们能够做出可以防止问题并帮助我们主动做出反应而不是反应性的决定。

如果您想在用例上使用MEMGRAPH测试监视功能,请务必访问我们的guide on exposing metrics以及我们的Prometheus exporter,以整合所有内容。

Read more about Memgraph on memgraph.com