使用AppSignal监控你的Python应用程序——CodesCode

学习AppSignal如何让您的Ruby、Elixir、Node.js、前端JavaScript和Python项目轻松进行应用性能监测

AppSignal是一个方便易用的用于Ruby、Elixir、Node.js、前端JavaScript和Python项目的APM。在本文中,我们将向您展示如何使用AppSignal来提升您的Python应用程序,我们最新的编码目标Nesstr,这是一款针对蛇类的约会应用程序。

AppSignal帮助数以千计的开发人员,无论是新手还是专家,更好地了解他们的应用程序的性能如何以及为什么会有这样的表现。简而言之:AppSignal会吸收您的应用程序的复杂性能数据,并将其转化为易于理解的可行动的见解。

我们与AppSignal合作创建了这篇文章。感谢您支持使CodesCode成为可能的合作伙伴。

什么是APM,它如何帮助您?

应用程序性能监控(APM)工具有助于将您的应用程序的监控数据(称为指标)转化为实用的见解,帮助您提升应用程序的性能。

AppSignal提供了可以检测异常、性能问题和异常情况(如响应时间过长和缓慢的后台作业队列)的工具。

换句话说,如果您将应用程序比喻为一辆汽车,那么AppSignal就是一个诊断工具。我们为您提供对应用程序性能和健康状况的一目了然的见解,帮助您在任何警告灯开始闪烁之前采取行动。

使用AppSignal消灭错误

有时,尽管进行了手动和自动化测试,错误仍然会出现在生产环境中。当出现这种情况时,要找出问题的根本原因可能非常令人沮丧和耗时。

让我们假设一种情况,Nesstr的用户报告称他们在有人点赞他们的个人资料时没有收到通知。“点赞”个人资料这个看似简单的操作涉及多个组件。应用程序使得确定问题根源所在变得具有挑战性。例如,这个问题是在一个React组件中,一个API函数中还是一个Celery后台任务中?

这就是AppSignal可以帮助我们的地方,它消除了猜测,并确定了异常在我们的应用程序中发生的位置。在Nesstr的情况下,我们已经配置了AppSignal,当应用程序出现问题时,它会通过Slack通知我们。

AppSignal Slack error

一旦我们收到了这个异常的通知,我们就可以深入研究AppSignal,更全面地了解事故的情况。AppSignal为我们提供了每个记录的异常发生的详细上下文。

error incident

由于AppSignal提供的详细异常数据,我们可以快速确定代码中问题的根本原因。通过查看AppSignal中记录的错误消息,我们可以得知我们的应用程序正在尝试从一个noneType对象中检索name属性,而该对象实际上是一个noneType对象,在send_like_notification Celery任务中:

@app.taskdef like_profile(profile, user):    profile.add_like_from(user)user = User.get(user_id) # 这是因为我们的user_id为nil,所以返回了none.profile = Profile.get(profile_id)like_profile(post, user)

我们可以立即解决这个问题,而不是手动复现整个点赞流程来查找这个错误,只需确保定义了noneType对象即可。太棒了!

使用AppSignal监控性能

修复了我们的“点赞”通知器后,AppSignal注意到我们的fetch_matches接口响应较慢。多亏了AppSignal的洞察力,我们不需要等待用户向我们投诉,也不需要费心下载一个经过处理的数据库克隆来尝试在本地复现问题。我们可以查看AppSignal记录的fetch_profiles性能样本的事件时间轴。

事件时间轴

在这里,我们可以很容易地看到当请求request_match接口时,psycopg2存在延迟,导致我们的应用变慢。

AppSignal不仅消除了弄清楚接口为何变慢的所有猜测工作,还帮助我们主动识别出潜在的未来瓶颈。现在,我们可以优化我们的接口并自信地扩展。

使用AppSignal进行异常检测

在我们使用AppSignal解决应用程序中更为明显的问题之后,我们可以利用AppSignal以更加积极的方式进行开发,并在问题出现之前预测可能的问题。

在AppSignal中,我们称之为异常检测。这个功能是一个改变者。我们可以使用它来标记错误和发现低效性能,而不会对最终用户或我们应用程序的可用性造成影响。

通过异常检测,我们可以创建触发器,在所需的指标达到特定阈值时通知我们,例如当错误率超过5%或接口响应时间超过200毫秒。

创建触发器

异常检测的好处在于我们可以根据应用程序的实际情况进行配置,并以与组织相适应的方式进行通知。通过AppSignal,您可以与许多流行的第三方协作工具(如Discord和Slack)集成,这意味着AppSignal可以与您的工作流程无缝融合,而无需改变您通常的工作方式。

使用AppSignal进行监控

AppSignal的仪表板可以即时将您的应用程序的度量指标可视化,让您快速跟踪和追踪性能指标。

度量指标仪表板

如果您发现有需要进一步调查的情况,例如错误率快速增加,点击图表上的该点,您将查看该特定时间点的应用程序状态。

您可以添加自定义标记以帮助您和团队更好地了解应用程序的性能,并且通过全屏支持,您可以在能够安装屏幕的任何地方监视您的度量指标。

使用AppSignal进行日志管理

有时,日志可以给我们带来关于应用程序为何出现意外性能的深刻见解。通过AppSignal,您无需SSH到服务器并跟踪您的日志。AppSignal可以接收您的应用程序日志,并实时显示,您可以过滤、查询和与团队成员共享。

因此,您可以在几秒钟内从在AppSignal中查看错误事件转到查看该时间点的日志。

AppSignal日志的亮点之一是,无论您在AppSignal应用程序的哪个部分,都可以使用我们强大的时间侦探功能,距离您的日志只有几次点击。

在调查错误或性能故障时,您可以使用时间侦探功能对应用程序在出现问题时的性能整体情况有一个总览,并深入分析日志以进行深入调试。

开始使用AppSignal

您可以在喝完一杯咖啡的时间内,让您的Python应用程序将度量指标推送到AppSignal。

注册一个AppSignal账号,并按照我们的安装向导说明进行操作。安装向导将引导您完成将Python应用程序的度量指标发送到AppSignal所需的所有步骤!

我们的Python文档还将为您介绍获取所需度量指标的所有步骤,包括您如何手动安装AppSignal。

分享本文


Leave a Reply

Your email address will not be published. Required fields are marked *