sarfraznawaz2005 / servermonitor
Laravel 包,用于定期监控服务器和网站的健康状态。
Requires
- php: ^8.1
- alek13/slack: ^2.2
- composer/semver: ^3.3
- geerlingguy/ping: ^1.2
- illuminate/support: ^10.0|^11.0
- league/flysystem: ^3.12
- nesbot/carbon: ^2.66|^3.0
Suggests
- Predis/Client: Needed for Redis check
- league/flysystem-sftp-v3: Needed for SFTP check
- sensiolabs/security-checker: Needed for security check of composer packages.
- dev-master
- 5.0.0
- 4.0.0
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.0
- 2.0.0
- 1.9.4
- 1.9.3
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.9
- 1.8.8
- 1.8.7
- 1.8.6
- 1.8.5
- 1.8.4
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.9
- 1.7.8
- 1.7.7
- 1.7.6
- 1.7.5
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.3
- 1.3.3
- 1.3.2
- 1.2.2
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2024-09-27 19:50:36 UTC
README
Laravel 服务器监控
Laravel 包,用于定期监控服务器和应用程序的健康状态。它自带了一些常见的检查,并允许您添加自己的自定义检查。该软件包提供了控制台和网页界面。
要求
- PHP >= 8+
- Laravel 9
安装
$ composer require sarfraznawaz2005/servermonitor
现在运行以下命令以发布软件包的配置文件
$ php artisan vendor:publish --provider="Sarfraznawaz2005\ServerMonitor\ServiceProvider"
查看 config/server-monitor.php
配置文件以自定义检查、通知等。
内置检查
该软件包自带以下检查。检查可以分为三个类别
- 服务器检查:仅与您的服务器相关的检查。
- 通用检查:仅与您的应用程序相关的检查,但在本质上都是通用的,无论您的应用程序在哪个环境中运行。这些检查在所有环境中运行。
- 环境检查:仅与您的应用程序相关的检查,但仅限于特定的环境,如生产或开发。
服务器检查
- ✅ 已安装所需的 PHP 扩展
- ✅ 磁盘空间充足
- ✅ 平均 CPU 使用率
- ✅ FTP 连接正常工作
- ✅ SFTP 连接正常工作
- ✅ SSL 证书有效
- ✅ 服务器可 ping 通
- ✅ 检查 HTTP 状态码
- ✅ 检查 php.ini 文件值
通用检查
- ✅ 安装了正确的 PHP 版本
- ✅ 环境文件存在
- ✅ APP_KEY 已设置
- ✅ 正确的目录权限
- ✅ 数据库可访问
- ✅ 迁移是最新的
- ✅ Composer 依赖是最新的
- ✅ 检查 Composer 软件包的安全性
- ✅ 存储目录已链接
- ✅ Redis 缓存可访问
- ✅ 邮件工作正常
- ✅ 云存储工作正常
- ✅ 配置文件值正确
环境检查(开发)
- ✅ 调试模式开启
- ✅ 配置缓存关闭
- ✅ 路由缓存关闭
环境检查(生产)
- ✅ 调试模式关闭
- ✅ 配置缓存开启
- ✅ 路由缓存开启
- ✅ 禁用了不必要的 PHP 扩展
- ✅ Supervisor 程序正在运行
命令
该软件包包含两个命令
php artisan servermonitor:check
运行配置文件中启用的所有检查并返回它们的新状态。php artisan servermonitor:status
返回之前运行的所有检查的状态,而不运行新的进程。
以下是它的样子
这两个命令都接受可选参数。如果指定,它将只运行指定的检查或返回指定检查的状态
php artisan servermonitor:check AppKeySet
运行新的检查过程以检查AppKeySet
php artisan servermonitor:status AppKeySet
返回检查AppKeySet
的之前的运行状态
定时任务
您可以使用 servermonitor:check
命令定期检查启用检查的状态,而不是每次都手动运行此命令。
根据需要在 Laravel 的控制台内核文件中安排它
// app/Console/Kernel.php protected function schedule(Schedule $schedule) { $schedule->command('servermonitor:check')->hourly(); }
网页界面
该软件包提供了内置的网页界面。您可以在配置文件 'route' => 'servermonitor'
中自定义网页界面的路由。完成后,您可以在网址 http://yourapp.com/servermonitor
访问网页界面。将 servermonitor
替换为您使用的路由。
除了命令之外,您还可以使用Web界面运行所有或单个检查的新检查过程。
禁用Web界面
如果您想禁用Web界面,可以将web_interface_enabled
设置为false
,此时访问Web界面路由将返回404。
仪表板刷新间隔
您可以通过更改config/server-monitor.php
文件中的server-monitor.dashboard_refresh_interval
值来刷新仪表板页面。您提供的值必须是秒数,如果您没有此配置键(例如:旧用户),不用担心,默认值为60秒。
通过编程方式运行/获取检查
如果您仍然想以自己的方式在视图中显示各种检查的状态,您可以像这样以编程方式获取所有检查的状态
use Sarfraznawaz2005\ServerMonitor\ServerMonitor; $sm = new ServerMonitor(); $checkResults = $sm->getChecks(); dump($checkResults);
您也可以通过编程方式运行检查($sm->runChecks()
),请参阅文件:vendor/Sarfraznawaz2005/ServerMonitor/src/ServerMonitor.php
中的可用方法
仅Web运行检查
如果您出于某些原因只想手动和通过Web界面运行一些检查,您可以为此类检查指定web_only
选项,如下所示
\Sarfraznawaz2005\ServerMonitor\Checks\Server\RequiredPhpExtensionsAreInstalled::class => [ 'web_only' => true ],
现在,当运行servermonitor:check
时,上述检查将不会通过控制台运行。然而,当您通过Web界面运行所有检查时,此检查将执行。
自定义
有关所有检查的详细信息,请参阅config/server-monitor.php
文件。请注意,一些检查是故意注释掉的,如果您需要使用它们,可以取消注释。
您还可以通过传递name
配置值来自定义在控制台/Web界面中显示的检查名称
\Sarfraznawaz2005\ServerMonitor\Checks\Application\AppKeySet::class => [ 'name' => 'Check if APP_KEY is set', ],
如果您没有传递name
键,它将自动从类名转换为,在上面的例子中是从“PascalCase”转换为“Pascal Case”。
一些检查可能需要额外的配置选项,例如
\Sarfraznawaz2005\ServerMonitor\Checks\Application\ComposerDependenciesUpToDate::class => [ 'binary_path' => 'composer' ],
为了使上述检查正常工作,您必须提供binary_path
值,例如。
警报配置
当检查失败时,您可以收到通知。此包支持以下警报/通知通道
mail
log
slack
pushover
在配置文件中的notifications
选项下更新您的通知选项。
请注意,您还可以为单个检查自定义所有通知选项。例如,您已指定mail
作为警报的默认通道,但对于以下检查,它将通过log
通道发出警报,并具有不同的警报标题。
\Sarfraznawaz2005\ServerMonitor\Checks\Application\AppKeySet::class => [ 'notification_channel' => 'log', 'notification_title' => 'Hello World' ]
您也可以像这样为单个检查禁用警报
\Sarfraznawaz2005\ServerMonitor\Checks\Application\AppKeySet::class => [ 'disable_notification' => true ]
创建您自己的自定义检查
您可以通过实现Sarfraznawaz2005\ServerMonitor\Checks\Check
接口并将类添加到配置文件中来创建自定义检查。示例
use Sarfraznawaz2005\ServerMonitor\Checks\Check; class MyCheck implements Check { /** * Perform the actual verification of this check. * * @param array $config * @return bool */ public function check(array $config): bool { return 1 === 1; } /** * The error message to display in case the check does not pass. * * @return string */ public function message(): string { return "This error message that users see if check returns false."; } }
问题
如果您注意到任何问题,我们建议为现有或新检查提交PR。
没有测试?
我们欢迎为测试案例提交PR。
鸣谢
许可证
有关更多信息,请参阅许可证文件。