监控 REST API 的最佳方式是什么? [关闭]

2024-04-18

我创建了一个基于 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(使用前将#替换为@)

监控 REST API 的最佳方式是什么? [关闭] 的相关文章

  • 从一个 Nodejs 应用程序调用另一个 Nodejs 应用程序中的 API 的方法

    我们的应用程序将有一个网站和一个移动应用程序 两者都与同一个 API 后端进行通信 我有一个仅提供 API 服务的 Nodejs 应用程序 还有一个为网站提供 html 页面服务的 Nodejs 应用程序 我正在为这两个应用程序使用 Exp
  • Spark流吞吐量监控

    有没有办法监控 Spark 集群的输入和输出吞吐量 以确保集群不会被传入数据淹没和溢出 就我而言 我在 AWS EC2 上设置了 Spark 集群 所以我正在考虑使用AWS 云观察来监控网络输入 and 网络输出对于集群中的每个节点 但我的
  • 如何在 http POST 请求中发送 HTML 代码?

    我正在从 Google Web Toolkit 应用程序向 php 脚本发送 HTTP POST 请求 内容类型现在是 application x www form urlencoded 所以我可以将变量发送到 php 并使用 POST 在
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 ASP.NET Core 控制器中接收“multipart/mixed”

    旧系统会向我发送以下内容 POST xml HTTP 1 1 Host localhost 9000 User Agent curl 7 64 1 Accept Content Length 321 Content Type multipa
  • 如何从一个端口为 Jetty 提供 https 和 http 服务?

    我知道这是一个重复的问题 但原始发帖者提出这个问题的原因是错误的 我并不是暗示我问它是为了right原因 但让我们看看 我们有一个在非标准端口号上运行的 Web 服务 尽管用户似乎能够记住端口号 但有时他们会错误地输入 http 而不是 h
  • Ionic 3 Uncaught(承诺):[object Object]

    我是 Ionic 3 和移动开发的新手 我正在尝试将 MySQL DB 连接到我的 Ionic 应用程序和 PHP Restful API 我用 Postman 测试了 API 它工作得很好 为了在 Ionic 中实现它 我做了以下操作 我
  • 在 C# 中的 RESTfull/HTTP 请求中添加标头和发布数据

    我在 C 中发送 POST 请求时遇到问题 似乎我误解了一些 HTTP 基础知识 所以基本上我正在实施 RESTfull 服务client 其工作原理如下 使用用户名 密码发出 POST 请求并获取令牌 在发出其他 GET POST PUT
  • 无法更改 php 会话 cookie 名称

    我将现有且成功运行的站点复制到新的开发服务器 新服务器上的登录现在已损坏 我追踪到虽然会话 cookie 已重命名 ini set session name DOMAIN1 浏览器继续将会话 cookie 存储为 PHPSESSID 当我从
  • Rails 使用驼峰命名法渲染 json 对象

    我在简单的 Rails API 中有以下控制器代码 class Api V1 AccountsController lt ApplicationController def index render json Account all end
  • 如何编写循环来运行数据框的 t 检验?

    我遇到了对数据框中存储的某些数据运行 t 检验的问题 我知道如何一一做 但效率很低 请问如何写一个循环来实现呢 例如 我在testData中获取了数据 testData lt dput testData structure list Lab
  • 在 ASP.net 中使用 NVP API 时 Paypal SetExpressCheckout 出现问题

    Hi 我正在实现 Facebook 游戏和 Paypal 快速结账支付服务之间的集成 我的网站是在 ASP net 中开发的 我使用 NVP API 进行集成 我的问题是我不断收到 10400 错误 订单总计丢失 我的代码是 Set the
  • 我应该如何处理 Android 应用程序中 http post 的服务器超时和错误代码响应?

    我的 Android 应用程序会向 URL 发送 http 帖子 例如http example com 电子邮件受保护 http example com abc php email abc xyz com因此 Android 应用程序基本上
  • 使用 php 和 jquery 的简单彗星示例

    谁能给我一个使用 PHP 的彗星技术的简单好例子 我只需要一个使用持久 HTTP 连接或类似连接的示例 我不想使用轮询技术 因为我已经设置了类似的东西 并且不仅难以使用和管理它的大量资源 另外我使用的是 IIS7 而不是 Apache 一个
  • 如何在 R 中手动编写正态分布核的似然值?

    具体来说 如何编码 x 和 mu 之差的乘积 精度矩阵以及 x 和 mu 之差的转置 我下面的代码正确吗 提前致谢 colSums dat mu mat solve sigma colSums dat mu mat 其中 mu mat 是重
  • 使用 Chrome TTS 的 SSML

    我试图通过强调等方式让 TTS 句子更加清晰 我正在使用Chrome TTS API http developer chrome com extensions tts html 这表明它接受SSML 格式的文档 http www w3 or
  • 使用创建的 201 进行重定向

    有没有办法通过 201 答案重定向 RFC规定新创建的资源必须在Location标题 我确实指定了它 我假设浏览器会重定向 但事实并非如此 即使页面没有内容 我希望用户在 POST 操作之后重定向到新资源 因此我很想使用303 See Ot
  • AngularJS $http 错误时 http 状态错误

    我正在尝试使用 AngularJS 的 http 服务构建 JSONP 请求 并且在出现错误时 我收到错误的 http 状态代码 404 而不是 500 并且页面正文也丢失了 所以这是场景 我调用的 URL 返回 500 内部服务器错误 并
  • 获取发送 cURL 请求的用户的 IP 地址

    我想获取使用 php 中的 cURL POST 方法向我的服务器发送请求的用户的 IP 地址 我正在开发一个 Flight API 我将使用 cURL POST 方法获取请求 我必须获取客户端的 IP 地址并验证他的 IP 地址是否可用 如
  • htaccess 重定向非 www http 和 https

    我想要 http example com重定向至 http www example com https example com重定向至 https www example com 以及任何东西http whatever example co

随机推荐

  • 尝试升级到 flink 1.3.1 时出现异常

    我尝试将集群中的 flink 版本升级到 1 3 1 以及 1 3 2 但我的任务管理器中出现以下异常 2018 02 28 12 57 27 120 ERROR org apache flink streaming runtime tas
  • Andengine,如何用触摸屏移动精灵

    我从 Andengine 开始 当我触摸屏幕 而不是精灵 时很难移动我的精灵 我真的需要你的帮助 非常感谢 这是我的代码 Override protected Scene onCreateScene final Scene scene ne
  • 用匿名方法定义backgroundworker的RunWorkerCompleted?

    我希望我使用了正确的术语 我的目标是这样的 我意识到它不会那样工作 private bool someBool false BackgroundWorker bg new BackgroundWorker bg DoWork new DoW
  • 结合前同级和后同级的 Xpath

    I am trying to read the values from this screen Sections appears dynamically it can be more than one We have to read eac
  • 装箱(或背包?)问题

    我收集了 43 到 50 个数字 范围从 0 133 到 0 005 但大部分都比较小 如果可能的话 我想找到 L 和 R 之和非常接近的所有组合 The brute force method takes 243 to 250 steps
  • UrlHelper.Action("Edit", "Ad") 返回 id 参数?

    Hi 我使用以下代码生成 URL UrlHelper urlHelper new UrlHelper htmlHelper ViewContext RequestContext urlHelper Action Edit Ad 如果我当前在
  • 如何重置爬虫URL缓存?

    我正在运行一个通过expressjs 调用调用的爬虫 当我再次调用相同的路线时 我的爬虫再次运行 但显示所有路线已经完成 我什至删除了 storage 文件夹 我阅读了文档 但似乎无法让 purgeDefaultStorages 工作 我将
  • Oracle数据库中如何去掉NUL字符?

    数据库 我有一个 Oracle11g 数据库 其中有一个包含大约 1000 万行和大约 40 列的表 这些数据源自打孔卡时代 并已从一个 Oracle 版本转换到下一个版本多次 这是一个实时生产数据库 并且在某种程度上持续使用 但它并不是那
  • 与 NaN 进行元素比较作为相等

    如果我运行以下代码 dft1 pd DataFrame a 1 np nan np nan dft2 pd DataFrame a 1 1 np nan dft1 a dft2 a 结果是 0 True 1 False 2 False Na
  • Android 上的位置感知地理编码(就像 Google 地图)

    似乎在搜索谷歌地图 app is 位置感知 例如 如果我在悉尼搜索 Pitt St 它会立即找到正确的街道 单击 您的意思是 会显示其他 Pitt St 的列表附近郊区 有没有办法在我们的应用程序中获得类似的体验 我尝试了标准Geocode
  • 将 float 发送到不兼容类型 id 的参数

    我正在创建一个按钮 该按钮使用核心数据来保存点注释的名称 x 坐标和 y 坐标 我可以成功保留该名称 但当我尝试保存坐标时 我不断收到此错误 我已经记录了正确的数据 但我似乎无法保存它 当我尝试为 newPOI 设置值时 收到一条错误消息
  • AWS Cognito - 管理员无需发送电子邮件即可重置用户密码

    我需要重置一些用户的密码 但是not发送忘记密码的电子邮件 只需重置密码 以便他们下次登录时我可以显示一条消息 要求他们请求重置密码 深入研究我需要的最基本的东西 在不通知用户的情况下 我需要让他们进入一个RESET REQUIRED状态
  • C++ std::pair 的 C# 模拟是什么?

    我感兴趣的是 C 的类似物是什么std pair在 C 中 我发现System Web UI Pair类 但我更喜欢基于模板的东西 谢谢你 Tuples 自 NET4 0起可用 http msdn microsoft com en us l
  • 具有纬度/经度值的 Android GeoPoint

    我正在尝试获取 23 4456 by 45 44334 的 GeoPoint 我应该将什么值传递到 GeoPoint 的构造函数中 因为它只接受整数 GeoPoint 坐标以微度为单位 度 1e6 书面形式here http develop
  • 尝试让 div 在鼠标移动时“跟随”光标,但有延迟

    我想创建类似于旧鼠标轨迹的效果 其中 div 被延迟但跟随光标 通过使用设置间隔来触发光标坐标的动画 我已经相当接近了 body mousemove function e if enableHandler handleMouseMove e
  • 使用来自 WebSocket @ServerEndpoint 的 CDI @SessionScoped bean

    在 Web 应用程序中 用户使用 servlet HTTP 会话 一些数据存储在 CDI SessionScoped beans 中 稍后在某些页面中 WebSocket 通信是在用户浏览器和服务器之间执行的 对于 GlassFish 4
  • 如何从云函数内部运行查询?

    我想在调用 Firebase 应用程序上的云函数后对数据库执行查询 假设我在数据库上有某个触发器 请考虑中提供的示例Firebase 入门指南 https firebase google com docs functions write f
  • Ruby:在类方法中使用模块方法

    我们如何在类方法中使用模块方法而不扩展模块 module TestModule def module method module end end class TestClass include TestModule def self tes
  • gdb 输入文件中的十六进制值

    我正在尝试通过使用 gdb 内的 run 我可以成功地溢出程序 但在将十六进制值附加到字符串时遇到问题 我尝试过引用 将 mem addr 的值转换为 ascii 以及各种转义尝试 但没有成功 输入文件示例 AAAA x42 在上面的示例中
  • 监控 REST API 的最佳方式是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我创建了一个基于 RESTful 模式的 API 我想知道监视它的最佳方法是什么 我可以以某种方式收集每个请求的统计信息以及我可以监控