linkorb / spark
Spark: 应用程序监控
v1.5.0
2020-08-14 09:40 UTC
Requires
- php: >=7.2.0
README
Spark是一个应用程序监控与配置库。
它用于从应用程序中提取相关数据以供外部处理。
对于每个请求 + 响应(事务),都会注册一系列收集器,以捕获每个事务的详细报告。
使用可用的报告器之一,可以将提取的数据转发到外部服务进行进一步处理。
用例
- 将Spark集成到您的应用程序中,并在应用程序外部处理日志、性能监控、指标、事件处理、异常跟踪等
- 将应用程序事件报告给事件总线进行进一步处理
- 将异常和日志转发到可以分析、存储或转发(使用任何自定义后端)的中央服务
- 分析应用程序事务以收集指标
通过将Spark集成到您的应用程序中,您无需为每个应用程序单独添加监控和其他通用应用程序服务。
收集器
现有收集器
- HTTP: 捕获完整的HTTP请求和响应细节,包括查询和POST参数、头信息、属性和服务器变量(环境)
- EventDispatcher: 捕获在事务期间调度的所有事件,包括名称、负载和时间戳
- DoctrineSQLLogger: 捕获通过DBAL连接执行的所有查询
- Logger: 捕获所有PSR-3日志消息
- Exception: 捕获所有异常,包括堆栈跟踪
未来收集器
- Guzzle: 捕获应用程序执行的所有HTTP请求
- PDO: 原始PDO查询收集器
- Cache: 捕获缓存命中和未命中
- Stopwatch: 捕获详细的时间跨度
报告器
事务结束时,收集的信息可以报告给多个后端之一。
现有报告器
- EchoReporter: 将数据作为格式化的JSON在页尾的代码标签中输出
- NdJsonReporter: 将数据作为NDJSON行写入文件
- GuzzleReporter: 使用HTTP POST提交数据为JSON
未来报告器
- NATS
- Kafka
- 本地缓存(用于批量优化)
使用方法
在您的项目中安装Spark
composer require linkorb/spark
Symfony 4 / 5
在services.yaml
中注册Spark,使用以下配置行
services: # Register a Spark instance Spark\Spark: public: true factory: ['Spark\Spark', 'getInstance'] # Decorate the Symfony EventDispatcher to capture event data # Be sure to select the dispatcher that matches your version of the event dispatcher Spark\EventDispatcher\SparkEventDispatcherV5: decorates: 'event_dispatcher' # Capture PSR-3 Log data Spark\Logger\SparkLogger: decorates: 'logger' # Capture Doctrine DBAL data Spark\Doctrine\SparkDoctrineEventSubscriber: tags: - { name: doctrine.event_subscriber, connection: default } Spark\Doctrine\SparkSQLLogger: public: true # Register Event Subscriber to automatically report data on # kernel.terminate and capture kernel.exception data Spark\EventSubscriber\SparkEventSubscriber: public: true
由于Symfony的事件调度器方法签名在各个版本中有所变化,因此提供了V3、V4和V5的多重装饰器。
有关详细信息,请参阅src/EventDispatcher/README.md
其他框架/库
- 使用
$spark = \Spark\Spark::getInstance()
实例化spark实例 - 通过装饰事件调度器、日志记录器等注册收集器
- 事务完成后,调用$spark->report();
报告键的白名单
默认情况下,Spark报告每个事务收集数据中的所有键。您可以通过指定带有模式数组的SPARK_REPORT_WHITELIST
来应用白名单过滤器,以限制报告的数据。例如
SPARK_REPORT_WHITELIST=id,type,http.response.*,queries.*
许可协议
MIT。有关详细信息,请参阅许可文件。
由LinkORB工程团队提供
查看我们的其他项目linkorb.com/engineering。
顺便说一句,我们正在招聘!