0

0

Symfony 监控库实现

聖光之護

聖光之護

发布时间:2024-12-07 08:07:02

|

672人浏览过

|

来源于dev.to

转载

在过去的几个月里,我投入了大量精力来改进 symfony 开发人员的监控体验。 symfony 监控库是 inspector 客户中第二受欢迎的库。第一个是 laravel 包。

最新版本框架的发布带来了让应用监控体验变得前所未有的简单的机会。

在本文中,我将详细介绍这些更改是什么,以及它们对您在 inspector 中的监控体验的影响。

想要了解更多技术文章,您可以在 linkedin 或 x 上关注我。

与 doctrine 3.x 的兼容性

symfony 最重要的 orm 的最新主要版本于今年年初发布。它放弃了对 sql 记录器的支持,转而采用新的“中间件架构”。

我们在包内实现了检查,以验证应用程序使用哪个版本的 doctrine 来相应地注入 sql 记录器或中间件。

收集路线名称

symfony 监控库的第一个实现是使用路由名称来监控 symfony 应用程序的 http 流量:

Symfony 监控库实现

基本上,当你在 symfony 中实现新路由时,你可以通过控制器方法上的属性来声明它:

namespace app\controller;

use symfony\component\httpfoundation\response;
use symfony\component\routing\attribute\route;

class homecontroller
{
    #[route('/', name: 'app_homepage')]
    public function home()
    {
        return new response('home page');
    }

    #[route('/landing', name: 'app_landing')]
    public function landing()
    {
        return new response('landing page');
    }
}

route 对象获取路由的名称作为第二个参数,因此您可以使用其名称在应用程序内引用此路由,而无需编写路径。这允许您将来更改 url 模式,而无需在提到的每一行代码中进行更改。

如果你想忽略监控库中的其中一个,你必须在 inspector yaml 配置文件中列出路由名称:

inspector:
    ingestion_key: '%env(inspector_ingestion_key)%'
    ignore_routes:
        - 'app_landing'

第一个帮助我构建该库的第一个版本的开发人员没有找到收集真实 url 模式的方法,因此我们继续执行此实现,以免阻碍工作。

但是使用路由名称来监控 http 流量有几个缺点。

路线名称的问题

首先,路线名称是可选的。显然不需要在 symfony 中将 url 与名称进行映射。许多开发人员没有使用名称,因此库正在收集最终路径作为后备数据,例如:/users/12/profile。

Nanonets
Nanonets

基于AI的自学习OCR文档处理,自动捕获文档数据

下载

更糟糕的是,有人仅在应用程序的一部分中使用名称,他们在仪表板中看到混合格式的事务列表,一些端点使用路由名称进行监控,而其他端点则使用 url。

第二个问题是能够忽略 url 以关闭应用程序某些部分的监控。 symfony 应用程序通常使用 url 模式进行分段。开发人员倾向于将所有管理端点分组在主 url 下,例如 /admin/[other sub urls] 。如果您想使用通配符忽略应用程序的某些部分,由于这种自然关联(/users*),您可以引用网址,这可能会更容易。在路线名称中找到更一致的模式更加棘手。

此外,在路由名称不存在的情况下收集的后备数据是真实的 url,如 /users/12/profile。因此,每次使用不同的 id 调用端点时,它都会在事务列表中生成一个新行。在监控数据中产生太多噪音。

收集路线模式
路由模式与用户调用的真实 url 不同。 symfony 应用程序中的大多数 url 基本上都是参数化的,例如 /users/{id}/profile

这是 symfony 控制器中的典型实现:

namespace app\controller;

use symfony\component\httpfoundation\response;
use symfony\component\routing\attribute\route;

class usercontroller
{
    #[route('/users/{id}/profile')]
    public function profile()
    {
        return new response('profile page');
    }
}

这就是我们需要在交易列表中报告的内容,而不是真实的网址。因为即使id改变也总是执行相同的代码。

Symfony 监控库实现

此更改不仅可以更轻松地忽略特定 url,还可以使用 inspector 配置文件中的通配符忽略应用程序的整个部分:

inspector:
    ingestion_key: '%env(INSPECTOR_INGESTION_KEY)%'
    ignore_routes:
        - '/admin*'

想要了解更多技术文章,您可以在 linkedin 或 x 上关注我。

免费监控您的 symfony 应用程序

inspector是一款专为软件开发人员设计的代码执行监控工具。您无需在基础设施上安装任何内容,只需安装 symfony 软件包即可开始使用。

如果您正在寻找 http 监控、数据库查询见解以及将警报和通知转发到您首选消息传递环境的功能,请免费尝试 inspector。注册您的帐户。

或在网站上了解更多信息:https://inspector.dev

Symfony 监控库实现

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

87

2025.09.11

laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

340

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

293

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

773

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

385

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

141

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

85

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

80

2025.08.05

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

37

2026.03.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.7万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号