使用 Scout APM 监控您的 Laravel 应用(赞助商)
发布时间 作者 Eric L. Barnes
在 Scout APM,我们很高兴推出对 Laravel 应用的支持。多年来,我们一直在监控数千个 Ruby、Python 和 Elixir 应用,我们很高兴将我们的以开发者为中心的工具引入 PHP 社区。以下是如何在几分钟内开始使用 Scout 的概述。
设置
要开始监控您的 Laravel 应用,您首先需要一个 Scout 帐户。如果您还没有帐户,您可以 在此注册 14 天免费试用(无需信用卡)。
接下来,将低开销监控代理添加到项目的依赖项中,这可以通过在 shell 中执行单个命令来完成
composer require scoutapp/scout-apm-laravel
此命令将安装两个包:scout-apm-laravel
和 scout-apm-php
。
接下来,定义一些配置设置以将代理链接到您的帐户。为此,在您喜欢的文本编辑器中打开项目的 .env 文件,并将以下三行添加到文件末尾
SCOUT_MONITOR=trueSCOUT_KEY=”enter your Agent Key here”SCOUT_NAME=”enter the name of you application here”
您可以在 Scout 的设置页面 上找到帐户的代理密钥。
就是这样!部署后,大约 5 分钟后,您的数据将开始出现在 Scout 中。有关 Heroku 安装或故障排除安装问题的更多信息,请 查看文档 或向我们发送电子邮件至 [email protected],我们将很乐意提供帮助。
从哪里开始?
因此,您创建了一个 Scout 帐户,连接了监控代理,但是从哪里开始诊断应用程序的性能问题呢?让我们看一下 Scout 的主要功能,这些功能可以帮助您快速了解性能问题。
主要概述页面
当您登录 Scout 时,首先看到的是概述页面(如下所示),它提供了一个清晰、简洁的应用程序运行状况和性能快照,一目了然。
图表高度可配置,允许您更改时间段并切换要查看的指标。它还具有一个简洁的拖放工具(如下所示),允许您在要详细探索的区域周围绘制一个框。当您绘制这些框时,将动态加载一个弹出窗口,显示在此时间段内访问的所有端点。当您在图表上看到性能峰值并想查看原因时,这尤其有用。
见解标签
如果您是第一次尝试使用 Scout,那么见解标签是一个很好的起点。在这里,我们有一组算法,这些算法分析您的项目以识别潜在的 **n+1 查询和慢查询**。这些为您提供了性能修复的“低垂果实”,这些修复通常可以立即提高应用程序的性能。
端点和跟踪
Scout 主要在两个级别提供应用程序性能指标。首先,从 **端点** 的角度来看。例如,平均而言,访问此端点需要多长时间,以及时间在何处花费的细分?
如果您看一下下面的屏幕截图,您可以清楚地看到,在访问此 ForgetPasswordController 端点的 3 次情况下,2,371 毫秒的平均请求时间的 78% 花费在控制器层,表明如果我们想尝试改进此缓慢的端点,这将是第一个调查的地方。
Scout 主要呈现指标的第二个角度是在 **跟踪** 级别。例如,在某人进行的此特定 Web 请求期间,完成请求需要多长时间,以及请求的哪些级别消耗了最多的时间等等。查看 UserController 的更新操作的跟踪,我们可以看到在这种情况下,98% 的时间花在了 SQL 层,并且大部分时间花在了顶行中对查询的 2 次调用上。如果我们单击该 SQL 按钮,我们可以看到一个回溯,看看我们是否可以改进查询。
您将在 Scout 中花费大部分时间在这些页面上,它们为您提供了在尝试了解性能问题时必不可少的可见性。您可以通过直接从主要概述页面和见解标签进入 **端点** 和 **跟踪** 页面,也可以通过单击页面顶部的 **Web 端点** 链接(如下所示)来访问这些页面。
超越基础
现在我们已经介绍了 Scout 的基础知识,并向您展示了您通常每天都会使用的系统的主要区域,现在让我们将注意力转移到一些更高级的功能,这些功能使 Scout 在 APM 领域中领先一步。
错误监控
无论您使用 Sentry、Honeybadger、Bugsnag 还是 Rollbar 进行错误监控,我们都已为您准备好了!Scout 与这些流行的服务无缝集成,让您可以在主要概述页面上集中管理所有监控。
无论您使用哪项服务,设置过程都类似,只需要 在 Scout 的设置屏幕上添加 API 令牌 即可。
自定义上下文和跟踪资源管理器
为什么此性能问题仅在星期二凌晨 2:00 从巴西 IP 地址出现?这些难以解决(但很常见)的性能问题可以通过 Scout 最强大的功能之一来解决:与 *用户定义* 的 **自定义上下文** 相结合的 **跟踪资源管理器**。
使用 **定义的自定义** 上下文允许 *您* 告诉我们您需要看到的内容。并且,投入相对 少量时间进行设置 绝对值得,因为它可以为您带来监控超能力!默认情况下,您将看到的唯一上下文字段是 URI 和主机名,如您在下面看到的,但这些字段可以自定义为任何您想要的内容。
**跟踪资源管理器** 的多过滤器图表(如上所示)允许您检查符合您定义的条件的端点,然后您可以在屏幕的 *事务跟踪* 部分中查看所有与这些过滤器匹配的跟踪。例如,您可能想查看特定用户的 Web 请求,或者查看特定计划大小的所有用户的 Web 请求,或者查看来自特定地区的用户的 Web 请求。使用自定义上下文,这些操作在跟踪资源管理器中很容易完成,它们可以帮助您解决那些难以诊断、耗时的性能问题。
部署跟踪
您是否注意到,最近一次部署后,突然出现了性能问题?在部署期间,用户体验如何?使用我们的 **部署跟踪** 功能,您就能找到答案。此功能会在主要概览图表上添加一个火箭符号,指示部署发生的时间。
部署跟踪还允许您查看部署涉及的提交次数以及提交来自哪个分支等详细信息。当您将 SHA 或部署添加到 SCOUT_REVISON_SHA 环境变量 中时,我们就可以获取所有这些信息。
告警
和所有优秀的监控解决方案一样,Scout 提供了一个复杂的 **告警系统**,您可以将其配置为在端点响应时间或内存使用量指标超过一定阈值时向特定人员发送告警。这些告警将在主要概览图表上显示为警告符号,并会发送通知。
默认情况下,告警系统将通过电子邮件向通知组中的用户发送通知,但它也可以 配置为使用 Slack、VictorOps、PagerDuty 等第三方服务,使用我们的 Webhook 功能。
自定义检测
您是否正在使用我们目前没有检测到的 Laravel 之外的库?如果是,首先,请告知我们的支持团队,我们会尝试为您添加支持。同时,您也可以自己添加一些 **自定义检测**,这 非常容易上手,并确保您可以完全了解整个应用程序。
下一步
如您所见,Scout APM 为 PHP 和 Laravel 社区带来了一个非常成熟的 APM 监控解决方案。我们简洁的 UI 和深入的检测可以帮助您快速直击性能问题的核心,同时由于我们的灵活的基于交易的定价结构,也保持了价格实惠。
您是否对 **试用我们新的 PHP 监控代理** 感兴趣?如果是,请 立即注册免费试用(无需信用卡)或联系我们,解决您可能遇到的任何疑问。
***
非常感谢 Scout APM 本周赞助 Laravel News。