当前位置: 首页 > 科技观察

监控数据库健康和行为:重要指标是什么?

时间:2023-03-20 11:12:41 科技观察

我们还没有过多地谈论数据库。在这个仪器时代,我们监控我们的应用程序、我们的基础设施,甚至我们的用户,但有时会忘记我们的数据库也应该受到监控。这主要是因为数据库表现得非常好,我们只是相信它会做得很好。信任很重要,但能够证明它确实按照我们的预期表现就更好了。为什么要监控你的数据库?监视数据库的原因有很多,其中大部分与监视系统的任何其他部分相同:了解应用程序的各个组件中正在发生的事情可以使您成为更明智的开发人员,可以做出明智的决策。更具体地说,数据库是系统健康和行为的重要指标。数据库中的异常行为可能指向应用程序中的问题区域。此外,当应用程序出现异常行为时,您可以使用数据库的指标快速完成故障排除过程。问题最少的排查发现是监控数据库的问题:数据库的指标很多。说“很多”是一种轻描淡写的说法,如果你是ScroogeMcDuck(LCTT译注:Scrooge,唐老鸭的叔叔,以吝啬着称),你不会放过任何可用的指标。如果这是一场Wrestlemania比赛,指示器就是折叠椅。监控所有指标可能看起来不切实际,那么您如何决定监控哪些指标呢?解决方案开始监控数据库的最佳方法是识别一些基本的数据库指标。这些指标为理解数据库的行为创造了一个良好的开端。吞吐量:数据库在做什么?开始检测数据库的最佳方法是跟踪它收到的请求数。我们对数据库有很高的期望;希望它能够稳定地存储数据,并处理我们抛给它的所有查询,这些查询可能是一天一次的大规模查询,也可能是用户全天数百万次的查询。吞吐量可以告诉我们数据库的性能是否符合我们的预期。您还可以按类型(读取、写入、服务器端、客户端等)对请求进行分组,以开始分析流量。执行时间:数据库完成工作需要多长时间?这个指标似乎很明显,但经常被忽视。您不仅想知道数据库收到了多少请求,还想知道数据库在每个请求上花费了多长时间。然而,在上下文中讨论执行时间很重要:像InfluxDB这样的时间序列数据库中的缓慢与像MySQL这样的关系数据库中的缓慢是不同的。在InfluxDB中慢可能意味着毫秒,而MySQL的SLOW_QUERY变量的默认值是10秒。监控执行时间与改进它不同,因此如果您的应用程序中有其他需要修复的问题,请谨防花时间进行优化的诱惑。并发性:数据库同时做多少工作?一旦您知道数据库正在处理多少请求以及每个请求需要多长时间,您就需要增加一层复杂性才能开始从这些指标中获得真正的价值。如果数据库收到10个请求,每个请求需要10秒才能完成,那么数据库的繁忙时间是100秒、10秒还是介于两者之间?并发任务的数量改变了数据库资源的使用方式。当您考虑诸如连接数和线程数之类的事情时,您将开始更全面地了解您的数据库指标。并发性也会影响延迟,它不仅包括任务完成所需的时间(执行时间),还包括任务在被处理之前需要等待的时间。利用率:数据库忙碌的时间百分比是多少?利用率是数据库可用或太忙而无法响应请求的频率,由吞吐量、执行时间和并发性的峰值决定。此指标对于确定数据库的整体健康状况和性能特别有用。如果您只能在80%的时间内响应请求,您可以重新分配资源、进行优化工作或进行更改以更接近高可用性。好消息监控和分析看起来非常困难,尤其是因为我们大多数人都不是数据库专家,我们可能没有时间了解这些指标。但好消息是大部分工作已经为我们完成了。许多数据库都有一个内部性能数据库(Postgres:pg_stats,CouchDB:Runtime_Statistics,InfluxDB:_internal等),这是由数据库工程师设计的,用于监控与该特定数据库相关的指标。您可以看到像慢速查询的数量这样广泛的信息,或者像数据库中每个事件的平均微秒数一样详细的信息。结论数据库创建了足够多的指标让我们花足够长的时间来研究,虽然内部性能数据库充满了有用的信息,但并不总能明确指出您应该关注哪些指标。从吞吐量、执行时间、并发性和利用率开始,它们为您提供了足够的信息以开始了解数据库中发生的事情。你在监控你的数据库吗?您发现哪些指标有用?告诉我!