name: NginxServer
abbreviation: ngnxsrvr
checker: PragmaRX\Health\Checkers\ProcessChecker
command: 'pgrep %s'
method: process_count
process_name: nginx
instances:
minimum:
count: 4
message: 'Process "%s" has not enough instances running: it has %s, when should have at least %s'
maximum:
count: 8
message: 'Process "%s" exceeded the maximum number of running instances: it has %s, when should have at most %s'
notify: true
pid_file_missing_error_message: 'Process ID file is missing: %s.'
pid_file_missing_not_locked: 'Process ID file is not being used by any process: %s.'
column_size: 4
Screenshots
Panel
Panel alternate design
If you have lots of services to check, you may change the default panel design to use less space:
Panel in 4 columns layout
Error Messages
Mouse over a failing resource and get instant access to the error message:
Click the resource button and you'll get an alert showing the error message:
Slack Notification
Here's an example of notification sent via Slack:
Artisan Console Commands
The health check commands below also return an exit code in a standard format:
Numeric Value
Service Status
Status Description
0
OK
Service and appears to be functioning properly
1
Warning
Check ran okay, but was above some "warning" threshold
2
Critical
The check detected service is not running or is above a "critical" threshold
3
Unknown
Settings for the service check may be misconfigured and is preventing the check for being performed
health:panel
Use the command health:panel to view the status of your services in console.
health:check
Use the command health:check to check all your resources and send notifications on failures.
Routes
After installing you will have access to the following routes:
/health/panel
The main panel route.
/health/check
Returns a json with everything the package knows about your services:
/health/string
Returns a string with status on all your services, useful when using other monitoring services:
To receive notifications via Slack, you'll have to setup Incoming Webhooks and add this method to your User model with your webhook:
/**
* Route notifications for the Slack channel.
*
* @return string
*/
public function routeNotificationForSlack()
{
return config('services.slack.webhook_url');
}
Cache
When Health result is cached, you can flush the cache to make it process all resources again by adding ?flush=true to the url:
http://yourdomain.com/health/panel?flush=true
Events
If you prefer to build you own notifications systems, you can disable it and listen for the following event
PragmaRX\Health\Events\RaiseHealthIssue::class
Broadcasting Checker
Broadcasting checker is done via ping and pong system. The broadcast checker will ping your service, and it must pong back. Basically what you need to do is to call back a url with some data:
Redis + Socket.io
var request = require('request');
var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('pragmarx-health-broadcasting-channel');
redis.on('message', function (channel, message) {
message = JSON.parse(message);
if (message.event == 'PragmaRX\\Health\\Events\\HealthPing') {
request.get(message.data.callbackUrl + '?data=' + JSON.stringify(message.data));
}
});
server.listen(3000);
Pusher
<!DOCTYPE html>
<html>
<head>
<title>Pusher Test</title>
<script src="https://js.pusher.com/3.2/pusher.min.js"></script>
<script>
var pusher = new Pusher('YOUR-PUSHER-KEY', {
encrypted: true
});
var channel = pusher.subscribe('pragmarx-health-broadcasting-channel');
channel.bind('PragmaRX\\Health\\Events\\HealthPing', function(data) {
var request = (new XMLHttpRequest());
request.open("GET", data.callbackUrl + '?data=' + JSON.stringify(data));
request.send();
});
</script>
</head>
<body>
Pusher waiting for events...
</body>
</html>
Artisan::command('database:health', function () {
app('pragmarx.health')->checkResource('database')->isHealthy()
? $this->info('database is healthy')
: $this->info('database is in trouble')
;
})->describe('Check database health');
SecurityChecker
As the SensioLabs Security Checker package was abandoned, this checker now depends on local-php-security-checker. You need to compile or install it on your server or container in order to use this checker, and update the config/resources/SecurityChecker.yml file accordingly.
Lumen
To use it on Lumen, you'll probably need to do something like this on your bootstrap/app.php:
请发表评论