anexia/laravel-monitoring

一个用于监控运行时(php、laravel)版本、composer包版本和composer包许可证的laravel模块

1.8.1 2024-04-19 11:48 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

开发者列表

项目相关外部资源