基于 Laravel 扩展包 Health Monitor 在应用中实现资源及服务的健康检查和实时监控

功能简介

Health Monitor 是一个 Laravel 扩展包,可用于检查应用资源或服务是否按照预期在运行,并且可以通过可视化页面监控所有资源和服务的实时健康状态。

预置的检查器会监控以下资源或服务:

  • AppKey
  • Broadcasting
  • Cache
  • ConfigurationCached
  • Database
  • DebugMode
  • DirectoryPermissions
  • DiskSpace
  • DocuSign
  • ElasticsearchConnectable
  • EnvExists
  • Filesystem
  • Framework
  • Horizon
  • Http
  • Https
  • LaravelServices
  • Latency
  • LocalStorage
  • Mail
  • MailgunConnectable
  • MemcachedConnectable
  • MigrationsUpToDate
  • MySql
  • MySqlConnectable
  • NewrelicDeamon
  • NginxServer
  • PackagesUpToDate
  • Php
  • PostgreSqlConnectable
  • PostgreSqlServer
  • Queue
  • QueueWorkers
  • RebootRequired
  • Redis
  • RedisConnectable
  • RedisServer
  • RoutesCached
  • S3
  • SecurityChecker
  • ServerLoad
  • ServerUptime
  • Sshd
  • Supervisor

你可以通过配置文件启用或禁止对应服务的检查和监控,也可以对监控和显示细节进行额外配置,此外,还可以轻松创建新的检查器对上述列表以外的其他资源或服务进行检查和监控。当资源或服务运行异常时,你可以通过配置的通知通道收到通知。下面,学院君以 Homestead 文档中初始化的项目 laravel6 为例演示该扩展包的安装和使用。

注:该扩展包支持最新发布的 Laravel 6.0。

安装配置

首先登录到 Homestead 虚拟机,进入 laravel6 项目根目录,通过 Composer 安装 Health Monitor 扩展包:

composer require pragmarx/health

安装完成后,发布对应的前端资源、配置文件、数据库迁移文件到根目录下:

php artisan vendor:publish --provider="PragmaRX\Health\ServiceProvider"

然后运行数据库迁移生成相关数据表:

php artisan migrate

使用入门

通过浏览器查看

接下来,就可以在浏览器中通过 http://homestead.test/health/panel 即可查看资源监控页面:

对于异常服务会通过红色进行标识(绿色表示正常),你可以点击问号图标查看异常明细:

还可以通过 http://homestead.test/health/check 或者 http://homestead.test/health/resources 返回所有资源或服务的 JSON 格式健康检查信息:

如果你想查看指定服务的健康信息,可以通过 health/resources/{slug} 路由,其中 slug 表示服务别名,例如要查看 Redis 的健康状态,可以通过 http://homestead.test/health/resources/redis 这个 URL:

通过命令行查看

另外,Health Monitor 扩展包还对通过 Artisan 命令查看服务健康信息提供了支持,比如,通过 health:panel 可以查看所有服务的健康信息及错误明细:

通过 health:check 命令可以检查所有资源并在失败时发送通知:

自定义配置

你可以通过配置文件 config/health/config.php 对监控面板进行自定义配置,比如在生产环境设置认证中间件对访问用户进行限制,或者启用或禁止指定监控服务,以及对监控服务显示样式进行配置等。

如果要新增对某个资源或服务的监控,可以仿照 config/health/resources 下已有的配置文件创建新的资源监控配置:

更多自定义配置请参考该扩展包对应的 Github 项目文档