监控您的 Node.js 应用程序可能很困难。棘手的部分是了解您需要监控什么,检测您的代码,然后理解所有发出的数据。 (这几乎是你可能会说的每一个部分😅)。

在 AppSignal,我们对我们的产品进行测试,并了解用户自己感受到的痛苦。我们关注的重点是易用性、灵活性和开发人员体验。作为开发人员,时间是您拥有的最宝贵的资源,因此我们始终努力为您节省时间。

为 Node.js 设置监控 - 免提模式

为了了解您的代码的哪些部分导致了性能问题,您需要向其中添加检测。这样,您可以分解所有操作并衡量哪些操作最慢。

借助 AppSignal 的自动检测,我们可以尽可能多地减少手动工作。只需通过 CLI运行一些命令,您就可以设置好了。

我们的监控代理会检测您基础设施的不同部分并自动对其进行检测。这使 AppSignal 应用程序能够消化、处理、监控并向您展示您最需要的图表和仪表板。

开箱即用仪表

以下是 AppSignal 将自动为您检测的工具列表:

类型

工具

框架

Next.js

框架

Express.js

数据库

PostgreSQL

数据库

Redis

API

阿波罗

集成示例

“一张截图值一千字”,一位不知名的开发者曾经说过。

Next.js

默认情况下,Node.js 的 AppSignal 会自动检测所有传入的 HTTP 请求。然而,由于 Next.js 处理的是“页面”而不是路由的概念,我们需要能够将所有为您的页面发出的请求与操作名称组合在一起。

在 Next.js 集成本身内部,我们导出了一个页面感知处理程序,该处理程序可以与 Next.js 自定义服务器实例或 Express.js 应用程序一起使用。集成到位后,您的操作现在已添加页面的 HTTP 方法和路径名。这使您能够查看特定错误或性能事件。这是错误页面的屏幕截图,其中/路径的 GET 请求发生错误:

[错误页面AppSignal](https://res.cloudinary.com/practicaldev/image/fetch/s--2z0Oox0E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.appsignal .com/images/blog/2020-05/Errors.png)

这将更容易查明导致该错误的情况。在性能问题中,您现在还将看到添加了 HTTP 方法和路径名的操作。在我们的示例中,在下面的屏幕截图中,您正在查看具有/graphql路径的 POST 请求的示例。

[AppSignal 中 Next.js 的性能页面](https://res.cloudinary.com/practicaldev/image/fetch/s---Jx35_EV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https ://blog.appsignal.com/images/blog/2020-05/Performance.png)

PostgreSQL

您将看到特定请求中事件的更详细细分。这为knexbookshelfjstypeORMpg库的所有其他使用者启用。这是一个示例,您可以在示例中查看 PostgreSQL 进程的持续时间:

[IncidentPageWithPostGreSQL](https://res.cloudinary.com/practicaldev/image/fetch/s--_7D99M0m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.appsignal.com /images/blog/2020-05/screenshot-1.png)

如果我们进一步放大此示例的性能,在页面下方,您会发现所有事件的时间线。这现在详细说明了您的 PostgreSQL 消费者。

[IncidentPageTimelineWithPostGreSQL](https://res.cloudinary.com/practicaldev/image/fetch/s--juTmfvjk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.appsignal.com /images/blog/2020-05/screenshot-2.png)

集成向您展示了数据库调用的跟踪,因此您可以看到哪个查询是您的邪恶(或天才)的根源😉。

[IncidentPageTracingWithPostGreSQL](https://res.cloudinary.com/practicaldev/image/fetch/s--7l9zWc-o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.appsignal .com/images/blog/2020-05/screenshot-3.png)

Redis

通过 Redis 集成,您将看到对 Redis 的调用出现在事件时间轴中:

[事件时间线的屏幕截图](https://res.cloudinary.com/practicaldev/image/fetch/s--fve6hj0Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog. appsignal.com/images/blog/2020-07/redis-event-timeline-2.png)

您还可以看到发送到 Redis 的命令的名称以及查询到的 Redis 实例的地址:

[事件时间线弹出的屏幕截图](https://res.cloudinary.com/practicaldev/image/fetch/s--ZlF28C_P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog .appsignal.com/images/blog/2020-07/redis-event-timeline-hover.png)

这对于那些希望调试对 Redis 缓存的长时间运行调用的人来说是个好消息。您甚至可以设置异常触发器,以针对运行时间超长的请求发送警报!

阿波罗

完成安装后,您将看到解析器出现在事件时间轴中。您将能够看到解析、验证和执行解析器所用时间的细分:

[事件时间线的屏幕截图](https://res.cloudinary.com/practicaldev/image/fetch/s--ej9_b1BU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog. appsignal.com/images/blog/2020-08/apollo-request.png)

当您将鼠标悬停在解析器执行阶段时,您还可以看到操作的名称和主体:

[事件时间线弹出的屏幕截图](https://res.cloudinary.com/practicaldev/image/fetch/s--A6diazFf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog .appsignal.com/images/blog/2020-08/apollo-request-hover.png)

这对于那些希望调试似乎需要很长时间的 GraphQL 查询的人来说非常有用,而且您不确定减速可能发生在哪里。不要忘记我们的异常在这里也触发了- 这些对于在查询时间达到某个阈值时发出警报非常有用。

尝试 AppSignal:监控变得简单而甜蜜🍪

如果您以前没有使用过 AppSignal,那么现在您知道我们如何通过简化监控来节省您的时间。我们希望您能试试我们。当您这样做时,请随时与我们联系,我们还将免费送您一盒stroopwafels。

PS。如果您正在通过一个伟大的 OSS 项目帮助世界,我们通过免费的 AppSignal 帐户帮助您支持。向您重视的维护者宣传!我们支持你。

点击阅读全文
Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐