我创建了一个基于 RESTful 模式的 API,我想知道监视它的最佳方法是什么?我可以以某种方式收集每个请求的统计信息以及我可以监控请求的深度吗?
另外,可以通过使用开源软件(也许构建我自己的监控服务)来完成还是我需要购买第三方软件?
如果可以通过使用开源软件来实现,我从哪里开始?
首先确定您认为监控可以解决的核心需求。尝试回答“我想知道什么?”这两个问题。以及“我想如何根据该信息采取行动?”。
“我想知道什么?”的示例
- 随着时间的推移表现
- 最大的 API 用户
- 最常用的 API 功能
- API 中出现错误
“我想如何根据该信息采取行动?”的示例
- 查看已知测量值的仪表板
- 当事情发生超出预期范围的变化时发出警报
- 跟踪导致该状态的执行
- 检查系统整个生命周期的测量结果
如果您可以回答这些问题,您可以找到正确的第三方解决方案来捕获您感兴趣的指标,或者将监控探针注入 API 的正确部分,以告诉您需要了解什么。我注意到你主要是一个Laravel http://laravel.com/用户,因此很可能您想知道的许多指标都可以通过在之前添加 (在控制器上的过滤器之前注册 http://laravel-recipes.com/recipes/41/registering-before-filters-on-a-controller) 之后 (注册应用程序后过滤器 http://laravel-recipes.com/recipes/54/registering-an-after-application-filter)对您的应用程序进行过滤,以测量响应时间和成功完成响应。这是第一组问题的答案最重要的地方(“我想知道什么?”),因为它将指导您在应用程序中测量的位置和内容。
一旦您知道可以在哪里捕获数据,选择正确的工具就变成了在(大致)两类监视应用程序之间进行选择的问题:与应用程序的操作紧密结合的高度专业化的监视应用程序,以及通用的监视软件更类似于时间序列数据库。
没有开源的高度专业化案例的流行(据我所知)示例。然而,确实存在许多商业解决方案:NewRelic、Ruxit、DynaTrace 等等。它们的功能可以很容易地描述为类似于远程分析器,此外还有许多其他功能。 (另外,不要忘记,更传统的分析器可能有助于收集您需要的一些信息 - 虽然它肯定不会取代监视您的应用程序,但甚至在您开始之前就可以从分析中收集到很多有价值的信息到生产。)
总体而言,我个人知道还有更多开源选项。寿命最长的是石墨(可以在这里阅读有关它的精彩介绍:测量一切,测量一切 https://codeascraft.com/2011/02/15/measure-anything-measure-everything/),这在许多人中非常常用。然而,Graphite 远不是唯一的选择,如果您希望自己托管,您可以找到许多其他选项,例如 Kibana 和 InfluxDB。
其中许多开源选项还提供来自多个提供商的托管选项。此外,您会发现这个营地有许多完全商业化的选择(事实上,我是其中一个的创始人:) -器乐 https://instrumentalapp.com/ ).
大多数商业选项的存在是因为应用程序所有者发现在运行实际应用程序的基础上运行自己的监控基础设施非常繁重;在许多运维人员的愿望清单中,维护另一个分布式系统的可用性并不是很重要。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)