anexia / laravel-monitoring
一个用于监控运行时(php、laravel)版本、composer包版本和composer包许可证的laravel模块
Requires
- anexia/composer-tools: >=1.4
- laravel/framework: >=6.0
This package is auto-updated.
Last update: 2024-09-19 12:39:15 UTC
README
一个用于监控核心和composer包更新的Laravel包。它也可以用来检查网站是否存活且工作正常。
安装和配置
通过composer安装模块,因此需要修改你的composer.json
文件中的require
部分
"require": {
"anexia/laravel-monitoring": "^1.8"
}
为了自动发布composer包的配置文件到应用中,请在你的composer.json
中添加脚本
"scripts": {
"post-install-cmd": [
"php artisan vendor:publish --provider=\"Anexia\\Monitoring\\Providers\\MonitoringServiceProvider\""
],
"post-update-cmd": [
"php artisan vendor:publish --provider=\"Anexia\\Monitoring\\Providers\\MonitoringServiceProvider\""
]
}
如果要手动添加anexia/laravel-monitoring
的配置文件,则可以执行以下操作
php artisan vendor:publish --provider="Anexia\Monitoring\Providers\MonitoringServiceProvider"
或者手动将/vendor/anexia/laravel-monitoring/config/monitoring.php
复制到/app/config/monitoring.php
,在执行composer update命令之后。
在项目的config/app.php
中添加新的服务提供者
return [
'providers' => [
/*
* Anexia Monitoring Service Providers...
*/
Anexia\Monitoring\Providers\MonitoringServiceProvider::class,
]
];
现在运行以下命令
composer update [-o]
将包的源代码添加到你的/vendor
目录中,并将配置文件添加到你的/config
目录中。
在项目的.env
配置文件中添加访问令牌配置
ANX_MONITORING_ACCESS_TOKEN=custom_monitoring_token
在项目的.env
配置文件中添加数据库连接配置
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
使用方法
该包注册了一些自定义REST端点,可用于监控。请确保已定义ANX_MONITORING_ACCESS_TOKEN
,因为这将用于授权。如果令牌未定义或无效,端点将返回401 HTTP_STATUS代码,如果一切正常,则返回200 HTTP_STATUS代码。
核心和composer包的版本监控
返回一个包含平台和composer包信息的列表。
URL: /anxapi/v1/modules?access_token=custom_access_token
响应头
Status Code: 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Allow: GET
Content-Type: application/json
响应体
{
"runtime":{
"platform":"php",
"platform_version":"7.0.19",
"framework":"laravel",
"framework_installed_version":"5.4.28",
"framework_newest_version":"5.4.28"
},
"modules":[
{
"name":"package-1",
"installed_version":"3.1.10",
"installed_version_licences":[
"BSD-2-Clause"
],
"newest_version":"3.3.2",
"newest_version_licences":[
"BSD-3-Clause"
]
},
{
"name":"package-2",
"installed_version":"1.4",
"installed_version_licences":[
"MIT"
],
"newest_version":"1.4",
"newest_version_licences":[
"MIT"
]
},
...
]
}
实时监控
此端点可用于验证应用程序是否存活且工作正常。它检查数据库连接是否正常。它允许通过钩子注册自定义检查。
URL: /anxapi/v1/up?access_token=custom_access_token
响应头
Status Code: 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Allow: GET
Content-Type: text/plain
响应体
OK
自定义up检查失败(不带自定义错误消息)
响应头(自定义检查失败且没有附加错误消息)
Status Code: 500 Internal Server Error
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Allow: GET
Content-Type: text/plain
响应体(包含默认错误消息)
ERROR
自定义up检查失败(带自定义错误消息)
响应头(自定义检查失败且没有附加错误消息)
Status Code: 500 Internal Server Error
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Allow: GET
Content-Type: text/plain
响应体(包含自定义错误消息)
This is an example for a custom db check error message!
自定义实时监控钩子
anexia/laravel-monitoring
只检查数据库连接/数据库可用性。为了添加更多的up检查,可以定义一个自定义的辅助类。这个类必须实现Anexia\Monitoring\Interfaces\UpMonitoringInterface
,并且必须作为App\Helper\AnexiaMonitoringUpCheckHelper
可用。
将一个新的辅助类添加到项目源代码树中,例如/app/Helper/AnexiaMonitoringUpCheckHelper.php
,例如
<?php namespace App\Helper; use Anexia\Monitoring\Interfaces\UpMonitoringInterface; class AnexiaMonitoringUpCheckHelper implements UpMonitoringInterface { /** * Check the application according to your needs * @param array $errors * @return bool */ public function checkUpStatus(&$errors = array()) { // your custom check goes here /** * e.g.: * * if ($success) { * return true; * } else { * $errors[] = 'Database failure: something went wrong!'; * return false; * } */ } }
自定义辅助类的checkUpStatus
方法将由anexia/laravel-monitoring
包的up检查自动调用。如果辅助类的checkUpStatus
方法返回false
并且/或者向其$error
数组(作为方法参数通过引用给出)添加了内容,则anexia/laravel-monitoring
包的up检查将失败。如果自定义辅助类的checkUpStatus
方法返回false
而没有在$error
数组中提供任何附加信息(数组保持为空),则将在响应中添加默认错误消息ERROR
。
禁用默认数据库连接测试
如果你不想进行默认数据库连接测试(因为你的系统不需要数据库),你可以在/app/config/monitoring.php
中将键deactivate_db_check
设置为true
。
开发者列表
- 亚历山德拉·布鲁克纳 ABruckner@anexia-it.com,首席开发者