inspector 图
嗨,我是意大利的软件工程师Valerio。
作为产品负责人,我从皮肤上了解到应用程序问题不仅仅是技术问题。 对于软件驱动的公司,性能瓶颈和错误可能会对用户体验产生负面影响,并可能影响他们对我们产品和工作的看法。
用户无需花时间报告错误,他们只是停止使用我们的应用程序,而转向了另一个更适合其需求的应用程序。
我是几乎每天都会发布新代码更改的人之一,但不幸的是,要预料每次发行后可能发生的所有问题是完全不可能的。
在我从事的大多数项目中,我发现50%的用户缺陷是由简单的代码错误引起的,通常是在后台执行的代码(工匠命令或Jobs)中,要想知道一切是否正常,就更加棘手了。或东西坏了。
Inspector是一个Composer软件包,用于在Laravel应用程序中添加实时监视,它非常易于安装和使用,并且仅需两分钟即可上手。
多亏了Inspector,您不再需要花费大量时间来通过日志手动监视应用程序行为,因为自动工具可以为您提供24/7全天候工作,从而使任何可能给用户造成问题的问题浮出水面。 。
让我告诉你它是如何工作的。
安装作曲家软件包
通过在终端中运行以下命令来安装我们的软件包:
composer require inspector-apm/inspector-laravel
配置API密钥
通过注册Inspector( https://app.inspector.dev/register )并创建一个新应用程序来获取新的API密钥,只需几秒钟。
您将直接在应用程序屏幕中看到安装说明:
将API密钥放入您的环境文件中:
INSPECTOR_API_KEY = 13 c37c434XXXXXXXXXXXX
测试一切正常:
执行我们的测试命令以检查您的应用是否将数据正确发送给检查器:
php artisan inspector:test
转到https://app.inspector.dev/home探索您的演示数据。
默认情况下,Inspector监视:
- 数据库交互
- 排队的工作
- 工匠命令
- 邮件已发送
- 通知事项
- 未处理的异常
我们只是在后台执行的应用程序的50%中打开了灯。 下一步是监视用户交互生成的所有交易。
传入Web请求监视
要在由于传入的HTTP请求而执行应用程序时也激活监视,可以使用WebRequestMonitoring中间件。
它的工作方式与您熟悉的任何其他Laravel中间件一样,因此您可以根据自己的路由配置或个人监视首选项自由决定需要监视哪些路由。
覆盖所有应用程序路线的最简单方法是在App\Http\Kernel
类中附加中间件。
<?php
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...,
\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
],
'api' => [
...,
\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
]
]
您将立即在项目的仪表板中看到事务流:
对于每笔交易,您可以实时监控您的应用程序正在执行什么:
充实您的时间表
Inspector默认情况下会监视数据库查询,后台作业,artisan命令,但可能是代码中的许多关键语句,需要根据性能和错误进行监视:
- 通过HTTP调用外部服务(数据同步,付款等)
- 处理文件的功能(pdf,excel,图像)
- 演算法
多亏了我们的软件包,您可以在时间轴中添加默认细分之外的自定义细分,以衡量隐藏代码块对交易性能的影响。
让我向您展示一个真实的例子。
假设您有一个排队的作业,该作业在后台执行一些数据库检查和对外部服务的http请求。
作业和查询会自动报告,但是监视和衡量http请求的执行可能会很有趣。 只需使用检查器助手功能:
<?php
class TagUserAsActive extends Job
{
/**
* @param User $user
*/
protected $user;
/**
* Monitoring & Measure an external http request
*/
public function handle ()
{
// Start monitoring
inspector()->addSegment( function () {
$this ->guzzle->post( '[mail-marketing-url]/add_tag' , [
'email' => $htis->user->email,
'tag' => 'active' ,
]);
}, 'http' );
}
}
您会在时间表中看到新细分的影响:
异常警报
默认情况下,将自动报告Laravel应用中触发的所有未处理的异常,以确保您实时收到有关不可预知错误的警报。
我希望我对代码所做的每一次更改都可以是完美的。 但是现实是,并非总是如此。 更新后会立即显示一些错误,而其他错误会突然弹出。
但是,Inspector可以自动检测未知问题,因此我不再需要连续不断地手动检查我的应用程序状态或直接等待用户的报告。 如果出现问题,我将实时收到通知,每次发布后,我都可以随时了解最新代码重构的影响。
如果您的代码触发了异常,但是您不想阻止执行,则可以手动将错误报告给检查器,以进行有关外部系统可用性的私有监视。
<?php
try {
// Your dangerous http call here...
} catch (\ Exception $exception) {
// Report an exception intentionally to collect diagnostics data
Inspector::reportException($exception)
}
此外,如果http请求失败,则会在收件箱中实时提醒您查看出现的错误。
实时电子邮件通知
您甚至可以实时访问Inspector收集的详细信息:
结论
当客户向您报告某事不起作用时,它迫使您放弃所做的一切,并开始尝试重现该方案,然后重新捕获并重新分析您自己的工具集中的日志。
要真正了解正在发生的事情可能需要几个小时,根据我的经验,甚至可能需要几天。 检查员可以在效率和生产率方面产生巨大的变化。
通过将应用程序监视委派给自动工具,可以使您在用户不了解之前就在一半时间内解决90%的问题。
先前发布在https://www.inspector.dev/laravel-real-time-performance-monitoring%e2%80%8ausing-inspector-%e2%80%8apart-1/
翻译自: https://hackernoon.com/laravel-real-time-monitoring-using-inspector-6bbu3yb1
inspector 图