modernmcguire / overwatch
通过 RESTful 端点配置并提供可定制的 Stripe 数据。
Requires
- php: ^7.4|^8.0
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- illuminate/routing: ^8.0|^9.0|^10.0|^11.0
- spatie/laravel-package-tools: ^1.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9|^8.0
- nunomaduro/larastan: ^2.0.1
- orchestra/canvas: ^8.1|^9.0
- orchestra/testbench: ^7.0|^8.5|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-07 15:07:49 UTC
README
此软件包允许您为 Laravel 应用程序定义自定义指标,并通过 HTTP 请求或命令获取它们。
安装
您可以通过 composer 安装此软件包
composer require modernmcguire/overwatch
要为您的应用程序创建新的 overwatch 密钥,请使用以下命令
php artisan overwatch:generate
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="overwatch-config"
这是发布后的配置文件内容,其中默认包含 Laravel 和 PHP 版本
<?php use Modernmcguire\Overwatch\Metrics\PhpVersion; use Modernmcguire\Overwatch\Metrics\LaravelVersion; return [ 'secret' => env('OVERWATCH_SECRET'), 'metrics' => [ PhpVersion::class, LaravelVersion::class, ], ];
用法
Overwatch 通过查询您的应用程序以获取您要跟踪的指标来工作。您可以通过扩展 Metric
类并实现 handle()
方法来创建自己的指标。
<?php namespace App\Metrics; use Modernmcguire\Overwatch\Metric; class TotalUsers extends Metric { public function handle() { return User::count(); } }
默认情况下,指标将以蛇形命名并作为字符串返回。您可以通过在指标中提供常量 KEY 来自定义此功能。
<?php namespace App\Metrics; use Modernmcguire\Overwatch\Metric; class TotalUsers extends Metric { const KEY = 'app_users'; public function handle() { return User::count(); } }
现在您有一个新的指标要监控,让我们将其添加到您的配置中。
<?php use App\Metric\TotalUsers; use Modernmcguire\Overwatch\Metrics\PhpVersion; use Modernmcguire\Overwatch\Metrics\LaravelVersion; return [ 'metrics' => [ PhpVersion::class, LaravelVersion::class, TotalUsers::class, ], ];
安全
为了保护敏感指标,Overwatch 需要提供请求中的密钥。此密钥用于加密有效负载并验证请求是否来自可信来源。
要生成密钥,请使用以下命令
php artisan overwatch:generate
这将生成一个新的密钥并将其存储在您的 .env
文件中。您也可以通过将以下内容添加到您的 .env
文件中来手动设置密钥
OVERWATCH_SECRET=your-secret-key
获取数据
要获取已安装 Overwatch 的应用程序的指标数据,您可以向 /overwatch
路由发送 POST 请求。有效负载应使用为您的应用程序生成的密钥加密。
<?php use Illuminate\Encryption\Encrypter; $newEncrypter = new Encrypter( $super_secret_key, strtolower(config('app.cipher')) ); // adding a timestamp to the payload helps prevent replay attacks $payload = json_encode([ 'timestamp' => now()->toDateTimeString() ]); $metrics = Http::asJson()->post('https://awesome-application.com/overwatch', [ 'payload' => $newEncrypter->encrypt($payload), ])->json();
命令
您还可以使用 overwatch:metrics
命令从命令行检索指标。
php artisan overwatch:metrics
这将返回一个表格响应,显示您的配置中定义的所有指标。
+----------------+---------------------+ | Metric | Value | +----------------+---------------------+ | php_version | 8.0.3 | | laravel_version| 8.40.0 | | app_users | 10 | +----------------+---------------------+
或者,您可以通过传递 --json
标志来获取 JSON 响应。
php artisan overwatch:metrics --json
{"php_version": "8.0.3", "laravel_version": "8.40.0", "app_users": 10}
测试
vendor/bin/pest
变更日志
有关最近更改的更多信息,请参阅 变更日志。
贡献
有关详细信息,请参阅 贡献指南。
安全漏洞
有关如何报告安全漏洞的详细信息,请参阅 我们的安全策略。
致谢
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件。