服务监控与指标管理:从基础到未来趋势
1. 服务指标的重要性与实现
在当今的技术环境中,操作系统会自动为我们生成大量的指标数据。当我们在 Linux 系统上安装 collectd 并将其指向 Graphite 时,就能看到丰富的指标信息。同时,像 Nginx 或 Varnish 这样的支持子系统也会提供诸如响应时间、缓存命中率等有用信息。然而,我们自己的服务也应该主动暴露一些基本指标。
对于一个 Web 服务来说,至少应该暴露响应时间和错误率等指标。如果服务器前面没有专门的 Web 服务器来处理这些信息,那么这些指标就显得尤为重要。实际上,我们还可以更进一步,例如账户服务可以暴露客户查看历史订单的次数,网店可以记录前一天的收入情况。
关注这些指标有多方面的原因。首先,有句老话说 80% 的软件功能从未被使用过。虽然我们无法确定这个数据的准确性,但作为有近 20 年开发经验的开发者,我们确实花费了大量时间在那些最终未被使用的功能上。了解哪些功能未被使用,对我们来说是非常有意义的。其次,我们可以根据用户使用系统的方式来改进系统,而指标数据能帮助我们更好地了解系统的运行情况。比如,当我们推出网站的新版本后,发现目录服务中按类型搜索的次数显著增加,我们就需要判断这是问题还是预期结果。最后,我们很难预测哪些数据会在未来发挥作用,所以最好尽可能多地暴露数据,让指标系统来处理后续问题。
对于不同的平台,有相应的库可以帮助我们的服务将指标发送到标准系统。以 JVM 为例,Codahale 的 Metrics 库就是一个很好的选择。它允许我们将指标存储为计数器、计时器或量表,支持对指标进行时间限制(例如指定“过去五分钟内的订单数量”),并且可以直接将数据发送到 Graphite
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



